Building Computer Vision Projects with OpenCV 4 and C++
上QQ阅读APP看书,第一时间看更新

Isolating objects in a scene

In this chapter, we are going to introduce the first step in an AOI algorithm and try to isolate different parts or objects in a scene. We are going to take the example of the object detection and classification of three object types (screw, packing ring, and nut) and develop them in this chapter and Chapter 6, Learning Object Classification.

Imagine that we are in a company that produces these three objects. All of them are in the same carrier tape. Our objective is to detect each object in the carrier tape and classify each one to allow a robot to put each object on the correct shelf:

In this chapter, we are going to learn how to isolate each object and detect its position in the image in pixels. In the next chapter, we are going to learn how to classify each isolated object to recognize if it is a nut, screw, or a packing ring.

In the following screenshot, we show our desired result, where there are a few objects in the left image. In the right image, we have drawn each one in a different color, showing different features such as area, height, width, and contour size:

To reach this result, we are going to follow different steps that allow us to understand and organize our algorithms better. We can see these steps in the following diagram:

Our application will be divided into two chapters. In this chapter, we are going to develop and understand the preprocessing and segmentation steps. In Chapter 6, Learning Object Classification, we are going to extract the characteristics of each segmented object and train our machine learning system/algorithm on how to recognize each object class.

Our preprocessing steps will be divided into three more subsets:

  • Noise Removal
  • Light Removal
  • Binarization

In the segmentation step, we are going to use two different algorithms:

  • Contour detection
  • Connected components extraction (labeling)

We can see these steps and the application flow in the following diagram:

Now, it's time to start the preprocessing step so that we can get the best Binarization image by removing the noise and lighting effects. This minimizes any possible detection errors.