Detect highly connected pores in a CT scan

1 Ansicht (letzte 30 Tage)
Julia
Julia am 16 Apr. 2015
Beantwortet: Image Analyst am 16 Apr. 2015
The code given by Image Analyst here (<http://www.mathworks.com/matlabcentral/answers/124753-circle-detection-in-ctscan>) looks really useful.
I tried to use it for the detection of pores in the attached picture. As you can see, especially in the center, the pore spaces are widely connected, so a distinction would be needed.
Using your proposed code as it is does not help in this case. Could you suggest which parameters to play with in order to make it fit better for less obvious cases like mine?
Basically i would like to fit in circles into the pore spaces to get a pore size distribution. I tried this on the original Image I resulting in the fitted circles. However, there are several circles per pore and I am not covering the whole area.
lvl= 0.275; %based on Otsus criterion
Iskeleton = im2bw(I,lvl); %invert to pores are true
PoreDist= bwdist(Iskeleton);
PoreMax= imregionalmax (PoreDist);
PoreRadii = PoreDist .* PoreMax;
[x,y] = find(PoreRadii);
imshow(Iskeleton); %# Display your image
hold on; %# Add subsequent plots to the image
for i=1:length(x);
r = PoreRadii (x(i),y(i));
th = 0:pi/50:2*pi;
xunit = r * cos(th) + x(i);
yunit = r * sin(th) + y(i);
h = plot(yunit,xunit);
hold on end

Antworten (1)

Image Analyst
Image Analyst am 16 Apr. 2015
Actually this is pretty clever. It's almost what I was going to suggest. One problem is that your distance transform is not guaranteed to give a single point when you use imregionalmax() on it. There can be several pixels together that have the same value, and that's what's giving you the multiple circles. You can get a single value if you find the centroid of the blobs returned by imregionalmax.
You also want the area to be completely covered with circles. You cannot do that unless you put a circle at every single pixel along the ridgelines of the distance transform, which you can find by multiplying the skeleton by the distance transform. But then you'd have thousands of circles, and what's the point (or need or use) of that?

Community Treasure Hunt

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

Start Hunting!

Translated by