MATLAB Image processing filtering
Ältere Kommentare anzeigen
One sample image is http://goo.gl/0IOkBZy .Download the file and name it as

My code is
Now here , I am getting two regions, one the small area (1) and the other as the big one (2)
Akzeptierte Antwort
Weitere Antworten (2)
Image Analyst
am 15 Jan. 2016
For that particular image, you can use
labeledImage = bwlabel(binaryImage);
smallBlob = ismember(labeledImage, 2) > 0;
In general somehow you have to identify the blob you want, then use ismember() to extract it. For this one, I know that you have only 2 blobs and that the small inside one will be blob #2 because of the way it does labeling. But in general (like your second image), you may have to use regionprops() to get other measurements to identify the particular blob(s) you want, and then use ismember(). See my Image Segmentation Tutorial http://www.mathworks.com/matlabcentral/fileexchange/?term=authorid%3A31862 for examples of that where I pick out different coins in the image.
You may also want to learn about bwareafilt() or bwselect().
7 Kommentare
Rusty
am 15 Jan. 2016
Image Analyst
am 15 Jan. 2016
That would not apply for the set of input and output binary images you showed. Who told you that it would?
Rusty
am 16 Jan. 2016
Image Analyst
am 16 Jan. 2016
Watershed is used for splitting apart blobs that are connected together. In your examples, you don't show any like that. All your blobs are separate - not touching - so you don't need it.
Rusty
am 16 Jan. 2016
Image Analyst
am 16 Jan. 2016
But you never posted any image where they were connected. Anyway, if you do have images like that, you can split them apart with code Steve put on his blog: http://blogs.mathworks.com/steve/2013/11/19/watershed-transform-question-from-tech-support/ Please try Steve's code on your image and if you can't tweak it enough to get it working, then post that image and your script back here.
Rusty
am 16 Jan. 2016
harjeet singh
am 16 Jan. 2016
try to use this code for these type of image, but not for every slice


clear all
close all
clc
img=imread('ok2.jpg');
img=rgb2gray(img);
img1=img>mean(img(:));
img2=imfill(img1,'holes');
se=strel('disk',2);
img2=imdilate(img2,se);
img3=img2 & ~img1;
img4=imfill(img3,'holes');
img5=img4 & ~img3;
img6=bwareaopen(img5,100);
figure(7)
imshow(img6)
3 Kommentare
Rusty
am 16 Jan. 2016
harjeet singh
am 16 Jan. 2016
is this works for you?
Rusty
am 16 Jan. 2016
Kategorien
Mehr zu Image Arithmetic finden Sie in Hilfe-Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!