grayImage = imread('numbers.jpeg');
title('Original Image', 'FontSize', fontSize, 'Interpreter', 'None');
hFig.WindowState = 'maximized';
[rows, columns, numberOfColorChannels] = size(grayImage)
if numberOfColorChannels > 1
grayImage = grayImage(:, :, 2);
mask = bwareafilt(grayImage < 255, 1);
props = regionprops(mask, 'BoundingBox');
grayImage = imcrop(grayImage, props.BoundingBox);
title('Gray Scale Image', 'FontSize', fontSize, 'Interpreter', 'None');
xlabel('Gray Level', 'FontSize', fontSize);
ylabel('Pixel Count', 'FontSize', fontSize);
mask = grayImage < highThreshold;
props = regionprops(mask, 'Area');
allAreas = sort([props.Area], 'Descend')
mask = bwareafilt(mask, [500, 20000]);
[labeledImage, numberOfBlobs] = bwlabel(mask, 8);
coloredLabelsImage = label2rgb (labeledImage, 'hsv', 'k', 'shuffle');
imshow(coloredLabelsImage);
caption = sprintf('Final Mask');
title(caption, 'FontSize', fontSize);