How to identify particles in image

18 次查看(过去 30 天)
I have been working on this project for quite some time and am now seeking some outside opinions. I must create a script that will identify each of the small particles. I have looked at multiple threshold techniques and not many seem to be working. For example, I tried turning it into a binary image and getting rid of noise using the function bwareaopen, but there is still a lot of noise and the imfindcircles function is being thrown off. Any fresh ideas to identify these beads would be very helpful. Accuracy is a must in this project! The small beads are the ones I'm identifying, they are the ones that have the most consistent size in the image.

回答(1 个)

Image Analyst
Image Analyst 2017-5-15
Have you tried a Bottom Hat Filter, imbothat()?
rgbImage = imread('StackOverflow#1.JPG');
subplot(2,2,1);
grayImage = rgb2gray(rgbImage);
imshow(grayImage, []);
axis on;
subplot(2,2,2);
se = strel('disk', 4, 0);
filteredImage = imbothat(grayImage, se);
imshow(filteredImage, []);
axis on;
% Histogram
subplot(2,2,3);
histogram(filteredImage, 256);
grid on;
xticks(0:16:255);
% Threshold
binaryImage = filteredImage > 40;
subplot(2,2,4);
imshow(binaryImage);
  8 个评论
Isaiah Stefan Engle
I also tried this approach earlier. The problem is that there are also dust particles that have around the same area of pixels. For example, the first image displays two separate dimers and 5 single beads. The second image displays a dust particle that has the same area of pixels as the bonded beads. The method you are suggesting is unfortunately unable to distinguish the two.
Indrajit Nandi
Indrajit Nandi 2021-3-31
Were you able to solve the problem?

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Geometric Transformation and Image Registration 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by