How to remove unwanted small blob?

13 vues (au cours des 30 derniers jours)
Tan Wen Kun
Tan Wen Kun le 11 Nov 2015
Commenté : Image Analyst le 13 Nov 2015
I want to remove the small blob and only keep the largest connected blob.
How can I do it?
  1 commentaire
Tan Wen Kun
Tan Wen Kun le 11 Nov 2015
Modifié(e) : Tan Wen Kun le 12 Nov 2015
I want the keep the region which in black box only.
Other small blob I want turn to background color

Connectez-vous pour commenter.

Réponse acceptée

Image Analyst
Image Analyst le 11 Nov 2015
First of all, don't use watershed or whatever to break up the blobs into sub-blobs. Then use imclearborder() to get rid of blobs touching the borders, then use bwareafilt(binaryImage, 1) to get just the largest blob.
  9 commentaires
Tan Wen Kun
Tan Wen Kun le 13 Nov 2015
binary is c and d, b is edge image
Image Analyst
Image Analyst le 13 Nov 2015
Try this:
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
clear; % Erase all existing variables. Or clearvars if you want.
workspace; % Make sure the workspace panel is showing.
format long g;
format compact;
fontSize = 20;
fullFileName = fullfile(pwd, 'd.jpg');
grayImage = imread(fullFileName);
% Get the dimensions of the image.
% numberOfColorBands should be = 1.
[rows, columns, numberOfColorBands] = size(grayImage);
if numberOfColorBands > 1
% It's not really gray scale like we expected - it's color.
% Convert it to gray scale by taking only the green channel.
grayImage = grayImage(:, :, 2); % Take green channel.
end
% Display the original gray scale image.
subplot(2, 2, 1);
imshow(grayImage, []);
title('Original Grayscale Image', 'FontSize', fontSize, 'Interpreter', 'None');
% Set up figure properties:
% Enlarge figure to full screen.
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0 0 1 1]);
% Get rid of tool bar and pulldown menus that are along top of figure.
set(gcf, 'Toolbar', 'none', 'Menu', 'none');
% Give a name to the title bar.
set(gcf, 'Name', 'Demo by ImageAnalyst', 'NumberTitle', 'Off')
% Binarize the gray scale image.
binaryImage = grayImage > 128;
subplot(2, 2, 2);
imshow(binaryImage, []);
title('Binary Image', 'FontSize', fontSize, 'Interpreter', 'None');
% Get rid of blobs touching the border
binaryImage = imclearborder(binaryImage);
subplot(2, 2, 3);
imshow(binaryImage, []);
title('With border cleared', 'FontSize', fontSize, 'Interpreter', 'None');
% Get the largest remaining blob:
binaryImage = bwareafilt(binaryImage, 1);
subplot(2, 2, 4);
imshow(binaryImage, []);
title('Largest Remaining Blob', 'FontSize', fontSize, 'Interpreter', 'None');

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Image Processing Toolbox dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by