Using regionprops to change intensity of blobs
2 views (last 30 days)
I am having a gray scale image which has certain blobs. The region apart from these blobs has intensity of 0. Using regionprops() I can extract various properties like Area, mean intensity of each blob.
Based on these mean intensity of a blob I want to modify the intensity of that blob. Any ideas on how I can achieve that?
More Answers (1)
Image Analyst on 11 Sep 2017
You're going to need to get the MeanIntensity of course, and the PixelIdxList. So...
[labeledImage, numBlobs] = bwlabel(binaryImage);
props = regionprops(labeledImage, grayImage, 'MeanIntensity', 'PixelIdxList');
% Replace each blob with some other intensity based on the blob's mean intensity
for k = 1 : numBlobs
thesePixelIndexes = props(k).PixelIdxList;
thisMeanIntensity = props(k).MeanIntensity;
if thisMeanIntensity < 100
% If mean intensity is less than 100,
% replace all pixels in the blob in the original gray scale image with a value of 1.
grayImage(thesePixelIndexes) = 1;
elseif thisMeanIntensity < 200
% If mean intensity is less than 200,
% replace all pixels in the blob with a value of 2.
grayImage(thesePixelIndexes) = 2;
else % thisMeanIntensity <= 255
% If mean intensity is more than 200,
% replace all pixels in the blob with a value of 3.
grayImage(thesePixelIndexes) = 3;
Change the numbers and add "if" blocks if you have more and/or different ranges for your mean intensities and desired replacement gray levels.
If you want, you can replace the values in the binary image, the labeled image, or create an entirely new image altogether.