I have some particles that I\'ve identified in a larger image, and need to parse into smaller images for each particle. I\'ve used the regionprops \'BoundingBox\' function,
According to the documentation of REGIONPROPS:
BoundingBox
is[ul_corner width]
, where:
ul_corner: is in the form
[x y z ...]
and specifies the upper-left corner of the bounding boxwidth: is in the form
[x_width y_width ...]
and specifies the width of the bounding box along each dimension
Now you can use IMCROP functions as imcrop(I, rect)
where:
rect is a four-element position vector
[xmin ymin width height]
that specifies the size and position of the crop rectangle.
Thus:
s = regionprops(L, 'BoundingBox');
subImage = imcrop(I, s(1).BoundingBox);
imshow(subImage)
The parameters returned by regionprops are [y,x,width,height]
in matrix coordinates (see also "unexpected Matlab".
Thus, to extract the rectangle, you write:
subImage = I(round(s(1).BoundingBox(2):s(1).BoundingBox(2)+s(1).BoundingBox(4)),...
round(s(1).BoundingBox(1):s(1).BoundingBox(1)+s(1).BoundingBox(3)));