Triangulation Scanner Design Options

advertisement
Triangulation Scanner Design Options
Triangulation System Options
• Single-stripe systems most robust, but slowest
• To go faster, project multiple stripes
– But which stripe is which?
• In limit, project 2D pattern, determine
projector/camera correspondence
Time-Coded Light Patterns
• Assign each stripe a unique illumination code
over time [Posdamer 82]
Time
Space
Gray-Code Patterns
• To minimize effects of quantization error:
each point may be a boundary only once
Time
Space
Accounting for Reflectance
• Because of surface reflectance and ambient
light, distinguishing between black and white
not always easy
• Solution: project all-white (and sometimes
all-black) frame
• Permits multiple shades of gray
Multiple Shades of Gray
Multiple Shades of Gray
Intensity Wedges
• Limiting case: intensity wedges
Temporal vs. Spatial Continuity
• Structured-light systems make certain assumptions about
the scene:
• Temporal continuity assumption:
– Assume scene is static
– Assign stripes a code over time
• Spatial continuity assumption:
– Assume scene is one object
– Project a grid, pattern of dots, etc.
Grid Methods
• Assume exactly one
continuous surface
• Count dots or grid lines
• Occlusions cause
problems
• Some methods use
dynamic programming
[Maas]
Codes Assuming Local Spatial Continuity
Codeword
Codes Assuming Local Spatial Continuity
[Zhang]
[Ozturk]
Spatio-Temporal Continuity
• Another possible assumption:
– Object may move
– Velocity low enough to permit tracking
– “Spatio-temporal” continuity
Designing a Code for Moving Scenes
Camera
Projector
Designing a Code for Moving Scenes
t
Designing a Code for Moving Scenes
Codeword
t
Codes for Moving Scenes
• Assign time codes
to stripe boundaries
• Perform frame-to-frame
tracking of corresponding
boundaries
– Propagate illumination history
Illumination history = (WB),(BW),(WB)
[Hall-Holt & Rusinkiewicz, ICCV 2001]
Code
Designing a Code
• Want many “features” to track:
lots of black/white edges at each frame
• Try to minimize ghosts – WW or BB
“boundaries” that can’t be seen directly
Designing a Code
• Design a code to make tracking possible:
– Do not allow two spatially adjacent ghosts
– Do not allow two temporally adjacent ghosts
t
Designing a Code
• Graph (for 4 frames):
0000
1101
– Nodes: stripes (over time)
– Edges: boundaries (over time)
1010
0101
1011
1111
0010
0001
1100
0100
Time
1110
Space
0111
1000
0110
1001
0011
Designing a Code
• Graph (for 4 frames):
0000
1101
– Nodes: stripes (over time)
– Edges: boundaries (over time)
Boundary visible at even times
1010
0101
0111
1111
0010
0001
1100
1000
Boundary visible at odd times
1011
0100
1001
0110
• Path with alternating colors: 1110
0011
55 edges in graph 
maximal-length traversal has 110 boundaries (111 stripes)
Designing a Code
• Many solutions to the graph problem as stated,
so we can add more constraints
– Maximize effect of errors
– No static boundaries
– Even distribution of stripes of width 1 and 2
Implementation
• Pipeline:
Project
Code
Capture
Images
Find
Boundaries
Match
Boundaries
Decode
• DLP projector illuminates scene @ 60 Hz.
• Synchronized NTSC camera captures video
• Pipeline returns range images @ 60 Hz.
Compute
Range
Results
Video
frames
Stripe
boundaries
unknown
known
ghosts
More Options: Shadow Scanning
• Variant of single-stripe triangulation
• Use a simple lamp, stick to create a shadow
[Bouguet]
More Options: Active Stereo
• Benefit: only camera/camera calibration,
not camera/projector
• Projection possibilities:
– Random texture
– Single stripe
– Others (space-time codes?)
[Davis]
Download