Apr-24-2020, 12:59 AM
I want to create a vision system for the detection of defect in SMD capacitors, the defect is called "pinhole" and they are small holes in the surface of the chip that are generated at the time of construction. my objective is to create an algorithm that is able of detecting these holes and with this, discard the chips that have this defect
For the moment I have created two codes:
the first one converts the original image to a binary image so that I can clear the circles, the code and the result is as follows. after obtaining the image in a binary way, I don't know how to make my algorithm detect that there is a circle, according to what I have investigated with "HOUGH" it can only be applied to images in grayscale
https://ibb.co/j8c3GCt
-The second is with contours detection, the problem with this is that it not only detects circles and likewise after this I don't know how to make my algorithm detect that it is a circle
https://ibb.co/G0ZmGRk
could help me find out how to know the way for my algorithm to detect the circles please?
For the moment I have created two codes:
the first one converts the original image to a binary image so that I can clear the circles, the code and the result is as follows. after obtaining the image in a binary way, I don't know how to make my algorithm detect that there is a circle, according to what I have investigated with "HOUGH" it can only be applied to images in grayscale
import cv2 import numpy as np from matplotlib import pyplot as plt img = cv2.imread("C:/Users/Johanna Menendez/Documents/UNIR/TFM/chips/20190905_124734.jpg", 0) img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) newImg = cv2.resize(img, (0,0), fx=0.50, fy=0.50) (thresh, blackAndWhiteImage) = cv2.threshold(newImg, 127, 255, cv2.THRESH_BINARY) numpy_vertical_concat = np.concatenate((newImg, blackAndWhiteImage), axis=1) cv2.imshow('binary', numpy_vertical_concat) cv2.waitKey(0) [python]binary
https://ibb.co/j8c3GCt
-The second is with contours detection, the problem with this is that it not only detects circles and likewise after this I don't know how to make my algorithm detect that it is a circle
[/ import cv2 import numpy as np from matplotlib import pyplot as plt img = cv2.imread("C:/Users/Johanna Menendez/Documents/UNIR/TFM/chips/20190905_124734.jpg", 0) img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) newImg = cv2.resize(img, (0,0), fx=0.50, fy=0.50) gray = cv2.cvtColor(newImg, cv2.COLOR_RGB2GRAY) (thresh, blackAndWhiteImage) = cv2.threshold(gray, 130, 255, cv2.THRESH_BINARY) (contours, hierarchy) = cv2.findContours(blackAndWhiteImage, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) img = cv2.drawContours(newImg, contours, -1, (0, 255, 0), 2) #numpy_vertical_concat = np.concatenate((newImg, img), axis=1) cv2.imshow('binary', img) cv2.waitKey(0) ] [python]contours detection
https://ibb.co/G0ZmGRk
could help me find out how to know the way for my algorithm to detect the circles please?