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

Automatic object inspection classification example

In Chapter 5, Automated Optical Inspection, Object Segmentation, and Detection, we looked at an example of automatic object inspection segmentation where a carrier tape contained three different types of object: nuts, screws, and rings. With computer vision, we will be able to recognize each one of these so that we can send notifications to a robot or put each one in a different box. The following is a basic diagram of the carrier tape:

In Chapter 5Automated Optical Inspection, Object Segmentation, and Detection, we pre-processed the input images and extracted the regions of interest, isolating each object using different techniques. Now, we are going to apply all the concepts we explained in the previous sections in this example to extract features and classify each object, allowing the robot to put each one in a different box. In our application, we are only going to show the labels of each image, but we could send the positions in the image and the label to other devices, such as a robot. At this point, our goal is to give an input image with different objects, allowing the computer to detect the objects and show the objects' names over each image, as demonstrated in the following images. However, to learn the steps of the whole process, we are going to train our system by creating a plot to show the feature distribution that we are going to use, and visualize it with different colors. We will also show the pre-processed input image, and the output classification result obtained. The final result looks as follows:

We are going to follow these steps for our example application:

  1. For each input image:

    • Preprocess the image
    • Segment the image
  2. For each object in an image:
    • Extract the features
    • Add the features to the training feature vector with a corresponding label (nut, screw, ring)
  3. Create an SVM model.
  4. Train our SVM model with the training feature vector.
  5. Preprocess the input image to classify each segmented object.
  6. Segment the input image.
  7. For each object detected:
    • Extract the features
    • Predict it with the SVM
    • model
    • Paint the result in the output image 

For pre-processing and segmentation, we are going to use the code found in Chapter 5Automated Optical Inspection, Object Segmentation, and Detection. We are then going to explain how to extract the features and create the vectors required to train and predict our model.