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