clc;
close all;
workspace;
format long g;
format compact;
fontSize = 16;
baseFileName = 'c3.jpg';
folder = pwd
fullFileName = fullfile(folder, baseFileName);
if ~exist(fullFileName, 'file')
fullFileNameOnSearchPath = baseFileName;
if ~exist(fullFileNameOnSearchPath, 'file')
errorMessage = sprintf('Error: %s does not exist in the search path folders.', fullFileName);
uiwait(warndlg(errorMessage));
return;
end
end
rgbImage = imread(fullFileName);
[rows, columns, numberOfColorChannels] = size(rgbImage)
subplot(3, 3, 1);
imshow(rgbImage, []);
axis on;
caption = sprintf('Original Color Image\n%s', baseFileName);
title(caption, 'FontSize', fontSize, 'Interpreter', 'None');
hp = impixelinfo();
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0 0.05 1 0.95]);
set(gcf, 'Name', 'Demo by ImageAnalyst', 'NumberTitle', 'Off')
drawnow;
mask = max(rgbImage, [], 3);
subplot(3, 3, 2);
histogram(mask);
mask = mask > 225;
mask = ~bwareafilt(mask, 1);
mask = imfill(mask, 'holes');
mask = bwareafilt(mask, [1000, inf]);
[labeledImage, numBlobs] = bwlabel(mask);
imshow(mask, []);
axis on;
title('Binary Image', 'FontSize', fontSize, 'Interpreter', 'None');
drawnow;
maskedRgbImage = bsxfun(@times, rgbImage, cast(mask, 'like', rgbImage));
subplot(3, 3, 3);
imshow(maskedRgbImage, []);
axis on;
title('Masked RGB Image', 'FontSize', fontSize, 'Interpreter', 'None');
drawnow;
props = regionprops(mask, 'BoundingBox', 'area');
allAreas = [props.Area]
plotNumber = 7;
percentage = 0.15;
for k = 1 : length(props)
croppedImage = imcrop(rgbImage, props(k).BoundingBox);
subplot(3, 6, plotNumber);
imshow(croppedImage, []);
axis on;
title('Cropped RGB Image', 'FontSize', fontSize, 'Interpreter', 'None');
drawnow;
[rows, columns, numberOfColorChannels] = size(croppedImage);
row1 = round(rows * (0.5 - percentage));
row2 = round(rows * (0.5 + percentage));
col1 = round(rows * (0.5 - percentage));
col2 = round(rows * (0.5 + percentage));
middlePart = croppedImage(row1:row2, col1:col2, :);
subplot(3, 6, plotNumber + 1);
imshow(middlePart, []);
axis on;
title('Cropped RGB Image', 'FontSize', fontSize, 'Interpreter', 'None');
drawnow;
plotNumber = plotNumber + 2;
end
Best Answer