Clearly Identifying circular regions on a chip in a noisy environment

5 views (last 30 days)
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 Comments
Bera
Bera on 17 Jun 2024
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 on 18 Jun 2024
@image analyst do you offer like private tutoring classes by any chance?

Sign in to comment.

Answers (1)

Balavignesh
Balavignesh on 17 Jun 2024
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 Comment
Bera
Bera on 17 Jun 2024
Edited: Bera on 17 Jun 2024
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

Sign in to comment.

Products


Release

R2024a

Community Treasure Hunt

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

Start Hunting!