哪种方法可以去除不需要的小区域并填充孔

信息处理 图像处理 matlab 图片 图像分割
2022-02-14 02:49:58

我有一个难题需要你的帮助。我有一个二值图像,它保留了一些不需要的区域(小白点)和孔区域(在图 1 中)。我的想法是,首先我将通过计算这些区域的面积来移除不需要的区域,然后用小面积值进行过滤。在第二步,我填充孔区域以使图像清晰。您认为填充孔区域的最佳方法是什么。D.因为我的想法需要阈值来删除不需要的区域。我想找到自动方法来做到这一点。你有解决的办法吗?非常感谢。这是我删除不需要的区域的参考代码。但它需要阈值术语。您可以在此处下载图像测试

function exImage=rmUnwantedRegion(Img,threshold)
    lb = bwlabel(Img);
    st = regionprops(lb, 'Area', 'PixelIdxList' );
    toRemove = [st.Area] <threshold; % fix your threshold here
    exImage = Img;
    exImage( vertcat(st(toRemove).PixelIdxList ) ) = 0; % remove
 end

在此处输入图像描述

1个回答

这段代码对我来说很好。你试试

RGB = imread('Image/input.png');

GRAY = rgb2gray(RGB);
threshold = graythresh(GRAY);
originalImage = im2bw(GRAY, threshold);

originalImage = bwareaopen(originalImage,250);
se = strel('disk', 10); %# structuring element
closeBW = imclose(originalImage,se);

imshow(closeBW);

结果图像