How to remove unwanted small blob?

12 visualizzazioni (ultimi 30 giorni)
Tan Wen Kun
Tan Wen Kun il 11 Nov 2015
Commentato: Image Analyst il 13 Nov 2015
I want to remove the small blob and only keep the largest connected blob.
How can I do it?
  1 Commento
Tan Wen Kun
Tan Wen Kun il 11 Nov 2015
Modificato: Tan Wen Kun il 12 Nov 2015
I want the keep the region which in black box only.
Other small blob I want turn to background color

Accedi per commentare.

Risposta accettata

Image Analyst
Image Analyst il 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 Commenti
Tan Wen Kun
Tan Wen Kun il 13 Nov 2015
binary is c and d, b is edge image
Image Analyst
Image Analyst il 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');

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Image Processing Toolbox in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by