Clearly Identifying circular regions on a chip in a noisy environment

조회 수: 6 (최근 30일)
Bera
Bera 2024년 6월 7일
댓글: Bera 2024년 6월 18일
Hey everyone
As the summary suggests, I have been working with chip images in hopes of clearly identifying the circles via pre-processing so that I can binarize the image and use regionprops on them afterwards. I haven't had much success and any help would be much appreciated. I have shared some photos that I am working with that should help!
My current algorithm is very slow but also not very good at identification.
  댓글 수: 4
Bera
Bera 2024년 6월 17일
I tried your stuff Image Analyst but the images I have are a bit more difficult. I have shared them in my post!
Bera
Bera 2024년 6월 18일
@image analyst do you offer like private tutoring classes by any chance?

댓글을 달려면 로그인하십시오.

답변 (1개)

Balavignesh
Balavignesh 2024년 6월 17일
Hi Bera,
It is my understanding that you would like to identify circular regions on a chip. It can be challenging, especially in a noisy environment. The key to improving both the speed and accuracy of your algorithm lies in effectively preprocessing the images to enhance the features of interest and suppress the noise.
  • Noise Reduction: You could start with noise reduction to make the subsequent steps more effective. Gaussian blur or median filtering can be effective, depending on the type of noise present in your images. Gaussian blur helps in smoothing the image and is effective for Gaussian noise, whereas the Median Filter is effective for salt-and-pepper noise.
imgFiltered = imgaussfilt(originalImage, sigma);
imgFiltered = medfilt2(originalImage, [kernelSize kernelSize]);
  • Edge Detection: After noise reduction, use edge detection to outline the boundaries of the circles. The Canny edge detector is commonly used for this purpose due to its robustness.
edges = edge(imgFiltered, 'Canny');
  • With the edges detected, apply the Circular Hough Transform to identify circles in the image. MATLAB's 'imfindcircles' function is based on the Hough Transform and is particularly suited for this task. The 'ObjectPolarity' parameter should be set according to whether the circles are brighter or darker than the surrounding pixels.
[centers, radii] = imfindcircles(edges, [minRadius maxRadius], 'ObjectPolarity','bright', 'Sensitivity',0.9);
  • Once you have the circles identified and their parameters (centres and radii), you can create a binary mask of the detected circles to isolate them from the rest of the image. Then, use 'regionprops' to analyze their properties
Fine-tuning the preprocessing steps and the parameters of the algorithms can significantly impact both the speed and accuracy of your circle detection.
Kindly have a look at the following documentation links to have more information on:
Hope that helps!
Balavignesh
  댓글 수: 1
Bera
Bera 2024년 6월 17일
편집: Bera 2024년 6월 17일
Hey Balavignesh I really appeciate it. I'm quite new to Matlab would you be able to provide me with a bit more help? Like how the code strcuture may look its a big ask and if it's not possible I completely understand

댓글을 달려면 로그인하십시오.

제품


릴리스

R2024a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by