Case StudyAutomatically Track Objects with the Polyga’s V1 and OpenCV

Polyga Vision V1

The Vision V1 is a high resolution – high speed 3D camera that is used in pick and place application, surface inspection, medical imaging and automated part inspections.

V1 Computer Vision Application

We paired the V1 with OpenCV, an open source computer vision library to show how you can acquire data in real time using SBSDK and then process the data in OpenCV to automatically find and track an object in space.

Below image is a sample project written to take simultaneous scans and output the data in real time. With the V1 it is possible to capture upto 15 frames of point cloud data for every 1 second.

C++ project examples which is included in our SDK

The data that needs to be used here is a depth map. Depth map is an image or an image channel that contains informations related to the distance of the surfaces of scene objects from a view point.

You may also change the camera exposure and projector brightness.For dark colored objects, you would need higher exposure and for light colored objects a lower exposure value would need to be set.

On scancaptured is a callback function when a scan is captured and Outdepth is the variable that contains the depth map. We have used a mat class which is basically a derived class in OpenCV library to store values of images. CV_32FC3 defines the type of matrix in the mat class. It means that three channel matrix of 32-bit floats would be stored. Now that we have the X, Y and Z in the mat class, the openCV split function can be used to split and store them individually. With these data, it is now possible to write functions for pick and place applications, flaw detection, and feature measurements.

The function detectCircles essentially detects circular objects. This is a very basic but classic example of pick and place application. The openCV function Houghcircles can be used here to detect circular objects. The minimum and maximum radius of the circle that needs to be detected can also be predefined here.

V1 is connected to the computer and there’s a bin full of random objects within its field of view.

If I call this function, the circular objects is detected as you can see from the live feed. The bin can also be moved sideways and V1 should still be able to track the object. It is also possible to measure radius of the circle in real time and this can be done for other objects of different size and shapes. On the other hand,the function Detectedges is used for flaw detection application and using gaussianblur and Canny edge detection, we will be able to find the outline of objects.

DetectEdges example: Two boxes of different sizes

This would be very similar to a go or no go situation in an automated inspection line. Using X, Y and Z coordinates, the dimensions of the box can be measured in real time. I hope of some of these examples have given you an idea of what the V1 is capable of. If you have any questions, feel free to reach out to us at