CCD_Rasnik: Principle of recovering the positioncode in the viewed part
of the coded mask.
To find the location of the origin of the mask, or better the projection
of it, is a process of reverse refinement. First the data is filtered to
remove effects as non homogenious illumination of the mask and smutches.
Then an accurate fit is done to find the chessboard pattern's position
and orientation. After this the codepositions can be found and the positioncode
can be reconstructed.
A Basic Building Block, or B3, is a coded 'chessboard' with
codelines on the left and bottom edges.
Below a piece of a mask is shown, with B3's of 11x9. This is a simulated
cameraview.
When this pattern is logically EX-ORred with the reconstructed chessboard
pattern the codebits appear. Below only the recovered codebits and some
guidelines are shown.
Described are two methods for recognition of the position code. By
definition, the position code is the location of the basepoint (bottom
left) of the B3. A pattern of 11*9 fields is needed to find the code. One
method uses a complete B3. The other method uses the same size but does
not use a single complete B3. The examples include the same startbit, or
B3 basepoint. For easy recognition only the codebits are shown.
In this case the coordinate of the B3 can be found by searching a 11*9
pattern, with codebits in the bottom line and left edge. The code can be
read directly.
In the second case one just takes an arbitrary pattern of 11x9. The
codelines are found by searching the horizontal and vertical lines that
contain more than one codebit within the size of one B3. Then we know the
location of the startbit in the pattern seen by the camera. Since the vertical
code -in the horizontal line- is the same in the two partially seen B3's
we can merge the partial codes. This is shown here. The same goes for the
horizontal code.
So we do not have to see a complete B3 to find its coordinate. This
allows a design of the mask with fewer codelines and thus large undisturbed
chessboards. The number of bits in the code then also increases, allowing
for large masks to be coded.
Please note that both methods work only in the case that codeposition
0,0 does not exist. Otherwise the codelines must be recognized by observing
one more field in both directions.
go back to the code page.
You can mail
suggestions for this page:
Henk
Groenstege.
august 1995