removing area
조회 수: 6 (최근 30일)
이전 댓글 표시
I have a code like this.
CC = bwconncomp(I2);
STATS = regionprops(CC,'Area');
idx = find([STATS.Area] <100);
I2(idx)=0;
figure,imshow(I2)
the objective of this code is to set zero value to those pixel whose area is less than 100.
I am not sure whether it is working properly. But perhaps Its not the correct way to achieve may objective.
can any one help how to do that? Thanks
댓글 수: 0
채택된 답변
Andrei Bobrov
2011년 7월 7일
STATS = regionprops(CC,'PixelIdxList','Area');
I2(cell2mat(cellfun(@(x)x',{STATS([STATS.Area]<100).PixelIdxList},'un',0)))=0;
댓글 수: 0
추가 답변 (2개)
Image Analyst
2011년 7월 10일
Or you can just call bwareaopen with an argument of 100 before you even call bwconncomp at all.
I2 = bwareaopen(binaryImage, 100);
Then call bwconncomp on I2.
Sean de Wolski
2011년 7월 7일
You don't even need regionprops!
CC = bwconncomp(I2);
idxkeep = cellfun('prodofsize',CC.PixelIdxList)>=100;
Ibigstuff = false(CC.ImageSize); %new image
Ibigstuff([CC.PixelIdxList{idxkeep}]) = true; %keep only good parts
regionprops doesn't actually contain the data in the region, CC does, so in order to manipulate regions you need CC.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Image Segmentation and Analysis에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!