MATLAB: Crop images along a row instead of column

image analysisimage processingimage segmentationMATLAB

Hi,
I have a collage of freshwater plankton and want to crop them along a row instead of by column. I have attached the binary picture, I also have the original image. I want to crop all the images in the collage. The code I use to crop by column is…
for k = 1 : numberOfBlobs(n) % Loop through all blobs.
% Find the bounding box of each blob.
thisBlobsBoundingBox = blobMeasurements{n}(k).BoundingBox; % Get list of pixels in current blob.
% Extract out this zoop into it's own image.
subImage = imcrop(OG_images{n}, thisBlobsBoundingBox);
% Saving the cropped image
%% did not add code as it is not needed

Best Answer

Hi,
There is no such thing as cropping along row or column, the second parameter in imcrop function is a rectangle [xmin ymin width height] i.e. the bounding box of the subimage that you want to crop out of your image.
So if your code crops along the column then your 'thisBlobsBoundingBox' variable is what is telling the function to crop along the column. Go through your 'blobMeasurements', see how it is defined and change it accordingly.
For example: For an image of size 100 X 100.
subimage1 = imcrop(image, [0, 0, 100, 50])
subimage2 = imcrop(image, [0, 50, 100, 50])
will divide the original image along the row (horizontally) and subimage1 and subimage2 will hold both the cropped parts of the image.
Have a look at this documentation: Crop an Image and also at this: imcrop for further reference.