Is it possible to resize a region in a grayscale image?
1 次查看(过去 30 天)
显示 更早的评论
Is it possible to resize a white blob in a grayscale image without changing anything else? If so, how can I do so? I am trying to resize the largest blob while keeping the size of the other regions the same.
0 个评论
采纳的回答
Gopichandh Danala
2017-6-28
编辑:Gopichandh Danala
2017-6-28
The steps for this is to extract the largest Blob, resize it as per requirement, again map it back to the original image to increase the size of it.
img = imread('blobDilate.jpg');
img = rgb2gray(img);
img(img < 50) = 0;
[rows, cols] = size(img);
figure, imshow(img), title('Original Image');
% Get the max Blob
largestBlob = bwareafilt(logical(img), 1);
figure, imshow(largestBlob)
% increase the size [+50, +50]of the Blob and remove the added rows, cols
resizeImg = imresize(largestBlob, [rows + 50, cols + 50]); % You can change this according your requirement
% remove added rows, cols
removeRows = [1:25, size(resizeImg,1)-24:size(resizeImg,1)];
removeCols = [1:25, size(resizeImg,2)-24:size(resizeImg,2)];
resizeImg(removeRows,:) = [];
resizeImg(:,removeCols) = [];
figure, imshow(resizeImg)
% New Blob Area
props = regionprops(logical(resizeImg),'Area');
resizedBlobArea = [props.Area];
fprintf('%s %d\n', 'newResizedBlobArea: ', resizedBlobArea)
% final Image
finalImg = logical(img + uint8(resizeImg));
figure, imshow(finalImg), title('Largest Blob resized Image')
2 个评论
Image Analyst
2017-6-28
You know, you can get the largest blob simply by doing
largestBlob = bwareafilt(binaryImage, 1);
instead of all that stuff with regionprops(). largestBlob will be a binary image of the same size as the original but with only 1 blob, the largest, in it.
Gopichandh Danala
2017-6-28
编辑:Gopichandh Danala
2017-6-28
Oh thanks Image Analyst, I didn't knew it before. I updated the above answer
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!