MATLAB: Remove objects in image that have larger columns than rows

remove columns higher than rows in image

Hello
how can remove objects in image that have larger columns than rows in RGB
images .
Thank you

Best Answer

Use regionprops(), and ismember():
labeledImage = bwlabel(binaryImage);
props = regionprops(labeledImage, 'BoundingBox');
bb = vertcat([props.BoundingBox]);
% See if column width > height
widths = bb(:, 3);
heights = bb(:, 4);
goodLabelsIndexes = find(widths <= heights); % And discard if widths > heights
% Remove bad blobs
binaryImage = ismember(labeledImage, goodLabelsIndexes);
% Mask the image using bsxfun() function to multiply the mask by each channel individually.
maskedRgbImage = bsxfun(@times, rgbImage, cast(binaryImage, 'like', rgbImage));