Dear DAVID Community,

As you are probably aware, the entire DAVID company, team and product range has been integrated into HP Inc.
This forum is now read-only. Relevant content has been migrated to HP and merged into HP's Support Forums on November 1, 2016.

To start new discussions for 3D Scanning, please register and post your new topic at the HP Support Forums

The Return of the "Negative Corner"

Problems, solutions and discussion about scanning with a video projector and stripe patterns.

The Return of the "Negative Corner"

Postby MagWeb » Sat Feb 12, 2011 7:42 pm

Hi,

today I found a setup solution that gave my DAVID-SL results a big push forward.

In a normal SL setup the projector emits its beams (and shadows) into an internal corner. The surfaces of this corner have to be white (or nearly white) which reflects the beam towards the cam. Not all the light is reflected towards the cam. Many beams are reflected in multiple, arbitrary directions. The inside corner captures a lot of these beams like a cone without a hole. This enlights the inner corner edge quite bright. Means the dark areas of the projections are the more enlighted as they are nearer to the inner edge. ....
This seems to be the reason for the nervous jumping , doubled or flickering line.

My solution is pretty simple:
Instead of a internal (convex) calibration corner, I use a external (concave) corner to do calibration and reference scan. This structure reflects the beams like a plough to outer space...
You get pretty clean moving lines, not nervous al all.

IMO and for SL a external, concave corner is the better choice as a background structure.

To follow this:
Simply apply the patterns not on the inner, but on the outer side of your corner
AND
Change advanced settings to the following values:
Code: Select all
<HardwareSetup>
      <LeftBackgroundPlane>
        <px value="0" defaultvalue="0" description="Coordinates of a point on the left background plane" is_editable="True" type="Double" />
        <py value="0" defaultvalue="0" description="Coordinates of a point on the left background plane" is_editable="True" type="Double" />
        <pz value="0" defaultvalue="0" description="Coordinates of a point on the left background plane" is_editable="True" type="Double" />
        <nx value="0" defaultvalue="1" description="Normal vector of the left background plane" is_editable="True" type="Double" />
        <ny value="0" defaultvalue="0" description="Normal vector of the left background plane" is_editable="True" type="Double" />
        <nz value="1" defaultvalue="0" description="Normal vector of the left background plane" is_editable="True" type="Double" />
      </LeftBackgroundPlane>
      <RightBackgroundPlane>
        <px value="0" defaultvalue="0" description="Coordinates of a point on the right background plane" is_editable="True" type="Double" />
        <py value="0" defaultvalue="0" description="Coordinates of a point on the right background plane" is_editable="True" type="Double" />
        <pz value="0" defaultvalue="0" description="Coordinates of a point on the right background plane" is_editable="True" type="Double" />
        <nx value="1" defaultvalue="0" description="Normal vector of the right background plane" is_editable="True" type="Double" />
        <ny value="0" defaultvalue="0" description="Normal vector of the right background plane" is_editable="True" type="Double" />
        <nz value="0" defaultvalue="1" description="Normal vector of the right background plane" is_editable="True" type="Double" />
      </RightBackgroundPlane>
      <LeftCalibrationPattern>
        <offset_x value="0" defaultvalue="0" description="X offset [mm] of the left calibration pattern (new 'V3' pattern only)" is_editable="True" type="Double" />
        <offset_y value="0" defaultvalue="0" description="Y offset [mm] of the left calibration pattern (new 'V3' pattern only)" is_editable="True" type="Double" />
        <offset_z value="0" defaultvalue="0" description="Z offset [mm] of the left calibration pattern (new 'V3' pattern only)" is_editable="True" type="Double" />
        <rot_x value="0" defaultvalue="0" description="X rotation angle [deg] of the left calibration pattern (new 'V3' pattern only)" is_editable="True" type="Double" />
        <rot_y value="-90" defaultvalue="0" description="Y rotation angle [deg] of the left calibration pattern (new 'V3' pattern only)" is_editable="True" type="Double" />
        <rot_z value="0" defaultvalue="0" description="Z rotation angle [deg] of the left calibration pattern (new 'V3' pattern only)" is_editable="True" type="Double" />
      </LeftCalibrationPattern>
      <RightCalibrationPattern>
        <offset_x value="0" defaultvalue="0" description="X offset [mm] of the right calibration pattern (new 'V3' pattern only)" is_editable="True" type="Double" />
        <offset_y value="0" defaultvalue="0" description="Y offset [mm] of the right calibration pattern (new 'V3' pattern only)" is_editable="True" type="Double" />
        <offset_z value="0" defaultvalue="0" description="Z offset [mm] of the right calibration pattern (new 'V3' pattern only)" is_editable="True" type="Double" />
        <rot_x value="0" defaultvalue="0" description="X rotation angle [deg] of the right calibration pattern (new 'V3' pattern only)" is_editable="True" type="Double" />
        <rot_y value="90" defaultvalue="0" description="Y rotation angle [deg] of the right calibration pattern (new 'V3' pattern only)" is_editable="True" type="Double" />
        <rot_z value="0" defaultvalue="0" description="Z rotation angle [deg] of the right calibration pattern (new 'V3' pattern only)" is_editable="True" type="Double" />
      </RightCalibrationPattern>


The attached partial scan of a shield was done that way using logitech C600 at 2MP. It is a bit noisy for it wasn´t smoothed at all. This was cam-filling as a textured repetition scan and resulted in a 248MB file owning 1,66 million vertices. DAVID could not load that file in a reasonable time again :( So here in a third party viewer...

Gunter
Attachments
Schild1.jpg
MagWeb
Moderator
 
Posts: 2499
Joined: Wed Jul 18, 2007 8:48 pm

Postby hal » Sun Feb 13, 2011 2:15 am

Hello Gunter,

an other simple but genial idea. Good work!

Mattia
User avatar
hal
Moderator
 
Posts: 1527
Joined: Thu Mar 01, 2007 4:08 pm
Location: Cavaria con Premezzo (VA), Italy.

Re: The Return of the "Negative Corner"

Postby pottersfriend » Sun Feb 13, 2011 3:57 am

Though not for the same reason I was going to suggest that having an "external" corner option in David would be a good idea. I have seen external corners used for calibration in other scanning programs and now after you mentioning the way the light reflects it makes a lot of sense. It would be nice if David had an easy way to choose either internal or external corners.
pottersfriend
 
Posts: 153
Joined: Wed Jun 03, 2009 1:49 am
Location: Washington State, USA

Re: The Return of the "Negative Corner"

Postby maxem » Sun Feb 13, 2011 8:35 am

Wow thank you gunter I'm so glad the nervous line issue is being addressed. The positive corner has made for troublesome planeless SL scanning for me do to the reference scan of the positive corner having nervous lines which then affects the object surface in planeless repetition scan. I have noticed it is because of over exposed center of the pattern but I've just been photoshoping to minimize it and have been dreaming of a 135 degree positive corner that catches light less but this Negative corner of yours sounds ideal.
I have been hoping that this issue would disappear with V3 when SL is said to no longer be simulating a laser line but i have no idea how that would work. I will have to build a reverse corner and try this. Thanks!
maxem
 
Posts: 71
Joined: Mon Oct 19, 2009 5:56 pm
Location: USA

Re: The Return of the "Negative Corner"

Postby Godehardt » Sun Feb 13, 2011 10:22 am

Hello Gunter, your work is really a big step forward in precision! Unfortunately, it is a bit cumbersome to use the experimental version of SL in DAVID at the moment. So we hope that DAVID 3 will come as soon as possible.
Erhard Godehardt
User avatar
Godehardt
 
Posts: 111
Joined: Tue Aug 05, 2008 12:08 pm
Location: Hellenthal (Germany)

Re: The Return of the "Negative Corner"

Postby MagWeb » Sun Feb 13, 2011 12:17 pm

maxem wrote:I have been hoping that this issue would disappear with V3 when SL is said to no longer be simulating a laser line


Hi maxem!
Think this isn´t a question of the simulated laserline. The contrast of enlighted/dark will be always worse in the edge of a internal corner. As long as you use such a corner for calibrating the StructuredLight planes, there should be errors....

pottersfriend wrote:It would be nice if David had an easy way to choose either internal or external corners.


Hi pottersfriend!

it´s no big thing to switch between internal or external corner. You only have to change 6 parameters (maybe the settings code above looks a bit complicated)

Gunter
Attachments
negative settings.jpg
MagWeb
Moderator
 
Posts: 2499
Joined: Wed Jul 18, 2007 8:48 pm

Re: The Return of the "Negative Corner"

Postby JD_PhD » Sun Feb 13, 2011 5:44 pm

This is very interesting! How big are your calibration panels? Since they're further away from the object, I would imagine they have to be bigger in order to be visible in the scan.
JD_PhD
 
Posts: 15
Joined: Mon Jan 17, 2011 5:33 am
Location: Maplewood, NJ

Re: The Return of the "Negative Corner"

Postby MagWeb » Sun Feb 13, 2011 6:17 pm

Hi JD_PhD,

if you are scanning with planes, you are right, for the corner has to be behind the object. This means you´ll get a problem focusing your system too... I would not recommend that.

But there´s no problem doing a planeless scan with a SL system. Now, if you remove your external corner after the reference scan (with your system focused to the middle of the planes - where the single ring-marker-column is) you can place your object behind the virtual origin (AllowPointsBehindPlanes set to true). In this case the planes do not have to be bigger than in case of a internal corner.

Gunter
MagWeb
Moderator
 
Posts: 2499
Joined: Wed Jul 18, 2007 8:48 pm

Re: The Return of the "Negative Corner"

Postby JD_PhD » Sun Feb 13, 2011 6:28 pm

Gotcha. I haven't done any planeless scanning yet, so I was thinking of a set up where the panels are still there. (I'm working my way up to SL!)

Vielen Dank!
JD_PhD
 
Posts: 15
Joined: Mon Jan 17, 2011 5:33 am
Location: Maplewood, NJ

Re: The Return of the "Negative Corner"

Postby MagWeb » Sun Feb 13, 2011 11:10 pm

Hi,

here´s a SL result scanning planeless, using modified Logitech C600 at 800x600, 10 partial scans.
Using an external corner to calibrate and doing the reference scan


to make the sheep turn around: RMB-click image/select "play"

Gunter
MagWeb
Moderator
 
Posts: 2499
Joined: Wed Jul 18, 2007 8:48 pm

Re: The Return of the "Negative Corner"

Postby JD_PhD » Mon Feb 14, 2011 2:12 am

Hey, some of us keep Flash off our systems. :)
JD_PhD
 
Posts: 15
Joined: Mon Jan 17, 2011 5:33 am
Location: Maplewood, NJ

Re: The Return of the "Negative Corner"

Postby Simon » Mon Feb 14, 2011 11:51 am

Hi Gunter,
thank you very much for this excellent idea! Often your ideas have the good "side effect" that they make us think about problems and solutions that we have not considered so far - like in this case... :D

Regarding the SL projector calibration:

After reading your post, Sven had another interessting idea, namely to illuminate and calibrate each panel one after another. Of course, to do this the software needs to know the pose of the projector (to decide which parts of the patterns have to be projected and which should be dark for each panel). After thinking about it, my suggestion was to project the Coded Light sequence (black & white stripes) as always and only project the phase shift sequence (sine waves) for each panel seperatly to avoid reflexions. The binary Coded Light sequence should be much more robust against reflexion and give a rough projector calibration, which could be used to illuminate each panel seperatly with a phase shift sequence for a fine calibration... :)

While writing this I have another interessting idea: Why not put a third thin black plane between the calibration panels? If the black plane, the calibration corners y-axis, the focal point of the camera, and the focal point of the projector all lie on the same plane in space (such that the black plane can't be seen by the camera and is not illuminated by the projector), the black plane should be a perfect "reflexion absorber" :wink:
User avatar
Simon
DAVID Developer
 
Posts: 423
Joined: Sun Jan 21, 2007 3:40 pm
Location: Braunschweig - Germany

Re: The Return of the "Negative Corner"

Postby MagWeb » Tue Feb 15, 2011 1:13 pm

Hi Simon,

glad to inspire you :D !
Yes there are different ways to solve the reflection issue...

Here is the final result of the shield mentioned above.
It was done with 9 SL scans at 1600x1200. The single results were reduced to 10% immediatly after processing each serie to get a handy filesize.
Aligning was a tricky thing for the rough shapes, not the details, were dominating auto modes. So I did it manually+fine registration.


to make the shield turn around: RMB-click image/select "play" -

Gunter
Attachments
Shield.jpg
Special for Flash-less users ;-)
MagWeb
Moderator
 
Posts: 2499
Joined: Wed Jul 18, 2007 8:48 pm

Re: The Return of the "Negative Corner"

Postby JD_PhD » Tue Feb 15, 2011 8:04 pm

Special for Flash-less users ;-)

Very pretty. Thanks!

(mpeg4 is nice too. :-))
JD_PhD
 
Posts: 15
Joined: Mon Jan 17, 2011 5:33 am
Location: Maplewood, NJ

Postby hal » Sat Feb 19, 2011 10:02 am

Hello dear Gunter,

incredible and perfect results! thanks for sharing your great ideas and scan results.

Regards to the Jedi master :D
Mattia
User avatar
hal
Moderator
 
Posts: 1527
Joined: Thu Mar 01, 2007 4:08 pm
Location: Cavaria con Premezzo (VA), Italy.

Next

Return to Structured Light Scanning

Who is online

Users browsing this forum: No registered users and 1 guest

cron