MATLAB: Extract multiple images from white background individually

MATLAB: Extract multiple images from white background individually

extract image

Hello,I want to extract images from white background. In order to analyze each image individually, I should have matrix of each image. My code works well when there is just one image on the white background. Can any one help me to extract more than 1 image from white background? This image is an example:
and my codes are:
rgbImage=imread('D:/2ta.jpg');
grayImage = min(rgbImage, [], 3);
binaryImage = grayImage < 200;
figure(1)
imshow(binaryImage)
%binaryImage1 = bwareafilt2(binaryImage,[10 50],1,1);
binaryImage1=(binaryImage==1)
figure(2)
imshow(binaryImage1)
[rows, columns] = find(binaryImage);
row1 = min(rows);
row2 = max(rows);
col1 = min(columns);
col2 = max(columns);
% Crop
croppedImage = rgbImage(row1:row2, col1:col2, :);
figure(3)
imshow(croppedImage)

Best Answer

  • You need to label your binary image and then get the bounding box of all blobs in it, then crop them out using the bounding box and the imcrop() function.
    [labeledImage, numBlobs] = bwlabel(binaryImage);
    props = regionprops(labeledImage, 'BoundingBox');
    for k = 1 : numBlobs
    thisBB = props(k).BoundingBox;
    thisImage{k} = imcrop(rgbImage, thisBB);
    imshow(thisImage{k});
    drawnow;
    imwrite(...... % If you want to save the cropped image to disk.
    end
  • Add a Comment

    Your email address will not be published. Required fields are marked *