MATLAB: How to filter the image for blobs of specified size

color segmentationfilterImage Processing Toolboxroborealm

This is the code I used, but it doesn't eliminate the blobs. I want to remove the obstacles only to determine the highest middle point for the robot to navigate.
rgb=imread('obstacle_scene_1.jpg');
figure, imshow(rgb);
[im,map] = rgb2ind(rgb,5);
figure, imshow(im,map)
[X_no_dither,map]= rgb2ind(rgb,5,'nodither');
figure, imshow(X_no_dither,map);
[im,map] = rgb2ind(rgb,5);
figure, imshow(im,map)
level = graythresh(X_no_dither);
bw = im2bw(X_no_dither,level);
bw = bwareaopen(bw, 50);
figure, imshow(bw)

Best Answer

bwareaopen() removes blobs of a specified size and below. You're calling that, so that part is right. There are also related functions bwareafilt() and bwpropfilt().
Your problem is segmentation, not size filtering. You need to segment your image better. For that particular image I suggest you convert to HSV color space with rgb2hsv, then threshold the s channel to find vividly colored regions. See my demos in my File Exchange, or see the Color Thresholder on the Apps tab of the MATLAB tool ribbon.
Related Question