MATLAB: Is it possible to resize a region in a grayscale image

image analysisimage processingImage Processing Toolbox

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.

Best Answer

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')
Related Question