Vision

Problem

To detect a component with an upwards camera looking at the nozzle, we need a recognition algorithm that can find complex shaped parts. Said parts may be:
*Rotated
*Translated
*Scaled (asymmetrically, and estimated up to 5% of body length)

Initial work

A very quick prototype was put together to demonstrate reconstructing shape data from a video stream in real time, in order to estimate component orientation. This demo utilised a webcam and ring light held 10cm from a sheet of paper containing several parts.

The parts shown are 4 x 0603 resistors, 1x 3x3 qfn, and 1x misc inductor

firstprototype.png

firstprototype_superimposed_zoom.png

Note that in the final system we will have a much closer camera position, however currently this is limited to the capabilities of the camera autofocus system. Also we are considering using structured lighting in order to extract reflective areas of the image, which would yield rectangles for pad contact areas, which might be more accurate / useful.

Prototype 2

This version uses binary pattern recognition in order to recognise parts. It requires a training image for each component, but provides a much more accurate location. This system also allows us to support odd shaped parts.

demo_locate_1.png
demo_locate_2.png

Approach 1

Two image pyramids are created from template and camera images.
At each level of the pyramid, the template image is rotated to several orientations
these oriented templates are convoluted with the camera pyramid image
the peaks in the resultant images are detected, indicating the best match

This algorithm is invariant of orientation and position, but not scale (which will show as a reduction in match score and associated positional error.

Approach 2

Gradient decent approach - work in progress