Face Scan Experiments

Niels Black

I spent quite a lot of time trying to get a decent surface from the laser scans of my face. Unfortunatelymost of my efforts did resulted in non-functioning or very poor surfaces, and as such were not saved or documented. I will however go through the steps that i took and document with as many pictures as i can.

Cleaning the Point Clouds

At first i simply removed the extraneous points that were collected from my hair and ears, but with the realization that my neck changes when i turn it at different angles, i cut out as much as i could until i had only an oval area around my face.

I then merged the 3 clouds by matching only the large surface areas of the side clouds that match the center cloud. The software was able to very accurately match the two clouds together in this manner. To do this, you need to first divide the side cloud into 2 parts, then when registering you can select what part you want to match, and then select both parts as what you want to move.

I spent a long time trying different methods of registration, and this was what i found to be the best method. Even still, I did this method several times trying to find one that gave a perfect match. This was the best that i got with this method.

The problem with this method is that even the slightest change in facial expression creates double surfaces where your cheeks are puffed out more or you neck is more stretched out. This is best seen when the cloud is cut up into scanlines.

Extracting Scanlines

This combination of the 3 scans is what i used at first. Within imageware i cut up the cloud into horizontal and vertical scanline points. Within imageware you can then fit lines through these scanlines very easily by just selecting the horizontal and vertical groups. However, the areas with 2 surfaces created lines that were very jagged, jumping from surface to surface. reducing the tolerance to a level where the line was generated between the two surfaces also removed important features such as my lips. Going in and removing the points that make up a second surface was very tedious, and knowing which to keep and which to skip was difficult, resulting in a very bumpy final surface.

Importing the scanline points into UG gave many of the same problems. Studio Curves are the only ones that let you go in afterwards and alter their control points, but they requir selecting every point in every line, a task that would take hours. fitting splines to the continuous line of points gave the same problems as in imageware.

Merging Cloud Patches

I next just added patches from the side scans to places in the center scan where there were holes. This would get rid of double surfaces, but also reduce the total area of the face being modeled.

In imageware i cut this up into horizontal and vertical scanlines and fit lines to them. I then imported the lines into UG in order to stretch a surface over them. I spent a couple of hours massaging the lines to make them smooth and ended up with this.

When i try to create a surface mesh i get all kinds of errors. The biggest problem I've had to deal with is that of non-intersecting lines. Both programs will complain about the lines not intersecting unless you give it ridiculously large line intersection tolerances. Doing so however then only leads to other errors that i have no clue how to work around, such as "Strings cross or bad selection", "unable to approximate primary string", or "unable to approximate cross string"

i then tried a couple of different methods of extending the shorter lines so that they all intersected each other, but was unable to find a way to extend them such that they all intersected each other.

The best i could do was to only stretch a surface over the square region where all lines intersect. Download UG part

Mirroring Side Scan

My last attempt started with the approach of using the center scan to align the two sides relative to eachother, and then remove it. the two side scans only overlapped in the middle and didn't have any holes, so i ended up with a good cloud. In imageware i again extracted scan lines and applied curves. In imageware i again created square surfaces of lines the lines that intersected, and got a decent image. I tried merging the surfaces and adding 3rd order continuity to the edges, but it only ended up horribly stretching the surfaces because it wanted the two sides to be the same length. Download Imageware File

I next imported the lines into UG and ran into the same problems as before. I was able to get a decent surface from the largest square area of intersecting lines. Download UG Part

It was odd, however, that i was able to create very rough surfaces by only picking a few (3-4) primary and cross strings (including first and last). Adding any extra would then give the error of being unable to approximate the primary strings.