Please help with thresholding and bwareaopen to make binary image
5 ビュー (過去 30 日間)
古いコメントを表示
I am thresholding a stack of images that look quite similar (serial CT scans of a model) into binary images (see sample image below) in the hopes of finding the centroids of circular region A in each image. The location of that cluster is grossly the same across the images, but I need the accurate measurement of its centroid coordinates.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/155917/image.png)
I would love to have help on the following: In my stack of images (in the hundreds), some images do not have unwanted clusters (as indicated in yellow) after thresholding and bwareaopen, so the centroid of that image is unique (and correctly belongs to A). However, multiple images have unwanted clusters that persist despite setting size thresholds. Is there a way to avoid having these unwanted pieces after bwareaopen? I am curious as to how to set a bwareaopen constrain on circularity to filter out the bottom pieces. But I also don't know how I would eliminate the circle on the right side of the image. I would love to only have circle A left on the final thresholding result, because I would need to capture its area too.
My partial script to look for the centroid is as follows:
for i = 1:216
tmp = I{i};
tmp(tmp>est_bg_HUmean(i)+2*est_bg_HUsd(i))=1; % thresholding to make binary
tmp(tmp~=1)=0;
tmp=imfill(tmp);
tmpout = xor(bwareaopen(tmp,1500), bwareaopen(tmp,10000)); % boundaries b/c wanted R insert size >2500
s = regionprops(tmpout,'centroid');
clear tmp tmpout
centroids_R_insert{i} = nearest(cat(1, s.Centroid));
end
0 件のコメント
回答 (1 件)
Image Analyst
2016 年 8 月 22 日
Work on the 3-D image not the 2D slices. Then use Imclearborder to get rid of the ones that touch the borders of the image, and look at the solidity of the objects in regionprops to get rid of the curved one.
2 件のコメント
Image Analyst
2016 年 8 月 24 日
I don't see how padding the image would remove clusters. If you cropped the image, then imclearborder would remove them, but not padding, unless you padded it with true/1/255/white, but last I checked padarray() did not let you specify the padding value.
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!