How can I remove the residual blood vessel lines from the image and get an image containing only the nearly circular blobs?
1 次查看(过去 30 天)
显示 更早的评论
My aim is to find the nearly circular blobs from this image and I am not being able to do so because of the remaining blood vessels. I need to remove the those lines and get only the white circular objects.
0 个评论
回答(1 个)
Image Analyst
2018-12-9
You can throw out big things, like the outer white circle immediately with bwarea() or bwareaopen(). Then call regionprops asking for the perimeter, area, and solidity. Get the ratio of areas to perimeter squared and throw out bad ones. Here's a start
labeledImage = bwlabel(binaryImage);
props = regionprops(binaryImage, 'Area', 'Perimeter', 'Solidity');
allAreas = [props.Area];
allPerimeters = [props.Perimeter];
allSolidities = [props.Solidity];
circularities = allPerimeters .^ 2 / (4 * pi * allAreas);
roundBlobIndexes = circularities < 2.5; % Or whatever works for you.
goodSolidityIndexes = allSolidities > 0.8; % Or whatever works.
goodIndexes = find(roundBlobIndexes & goodSolidityIndexes)
newBinaryImage = ismember(labeledImage, goodIndexes);
etc.
You might also measure the BoundingBox and look for blobs that don't have a good aspect ratio.
See my Image Segmentation Tutorial in my File Exchange
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Image Segmentation and Analysis 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!