MATLAB Answers

How to filter objects based on size using"bwareafilt()" ?

33 views (last 30 days)
Dnyanesh Kanade
Dnyanesh Kanade on 5 Jul 2015
I want to remove only lung area shown in the image using function "bwareafilt"
The following code gives me error Undefined function 'bwareafilt' for input arguments of type 'double'.
fi=fopen('JPCLN001.img','r','b');
img=fread(fi,[2048 2048],'*uint16','b');
img1=mat2gray(img, [0,4096]);
img2=imrotate(img1,-90);
img2=flip(img2,2); %Horizantal Flip
%subplot(1,2,1);
figure,imshow(img2),title('Original');
img3=imcomplement(img2);
%subplot(1,2,2);
figure,imshow(img3),title('negative');
medf=medfilt2(img3,[3 3]);
%subplot(1,2,1);
figure,imshow(medf),title('Med_filtered');
img4=imadjust(medf);
%subplot(1,2,2);
figure,imshow(img4),title('Contrast1');
img5=histeq(img4);
%subplot(1,2,1);
figure,imshow(img5),title('Hist_Equa');
%level = graythresh(img5);
B = im2bw(img5,0.45);
figure,imshow(B);
%B1=logical(B);
BW2 = bwareafilt(B,2);
figure,imshow(BW2)

  0 Comments

Sign in to comment.

Answers (3)

KAE
KAE on 7 Aug 2017
It sounds like you do not have the Image Processing Toolbox, which includes the function bwareafilt.

  0 Comments

Sign in to comment.


Image Analyst
Image Analyst on 7 Aug 2017
You have the Image Processing Toolbox (otherwise imrotate would not have worked), but you have an antique version older than R2014b which is when bwareafilt() was introduced. Upgrade to the latest version or use bwareaopen() as an alternative.
By the way, your initial segmentation is really bad.

  0 Comments

Sign in to comment.


Mrutyunjaya Hiremath
Mrutyunjaya Hiremath on 24 Apr 2020
in your code, there is a code part as show below
img3=imcomplement(img2);
don't use that.
code works fine in 2014b.
Here, ROI part is Lung only.

  0 Comments

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!