Algorithm 如何滤除含有不需要的区域和孔洞区域的二值图像
我有一个难题需要你的帮助。我有一个二值图像,它保留了一些不需要的区域(小白点)和空穴区域(图1)。我的想法是,首先我将通过计算这些区域的面积来删除不需要的区域,然后用小面积值进行过滤。在第二步,我填充孔洞区域以使图像清晰。您认为填充孔洞区域的最佳方法是什么。你有什么办法解决它吗。你能帮我用matlab实现它吗。非常感谢你。这是我删除不需要的区域的参考代码。但它需要阈值项。您可以在以下位置下载图像测试:Algorithm 如何滤除含有不需要的区域和孔洞区域的二值图像,algorithm,matlab,image-processing,Algorithm,Matlab,Image Processing,我有一个难题需要你的帮助。我有一个二值图像,它保留了一些不需要的区域(小白点)和空穴区域(图1)。我的想法是,首先我将通过计算这些区域的面积来删除不需要的区域,然后用小面积值进行过滤。在第二步,我填充孔洞区域以使图像清晰。您认为填充孔洞区域的最佳方法是什么。你有什么办法解决它吗。你能帮我用matlab实现它吗。非常感谢你。这是我删除不需要的区域的参考代码。但它需要阈值项。您可以在以下位置下载图像测试: 函数exImage=rmUnwantedRegion(Img,阈值) lb=bwlabel(I
函数exImage=rmUnwantedRegion(Img,阈值)
lb=bwlabel(Img);
st=区域属性(lb,‘区域’、‘像素idxlist’);
toRemove=[st.Area]假设白色像素为1
黑色是0
步骤1:
使用confultion矩阵()
带模糊滤波器
步骤2:
t用一些静态值(例如0.5)显示每个像素
如果像素>0.5像素=1
else pixel=0这看起来像是二进制和二进制的作业。通常,首先进行腐蚀以去除不必要的噪声,然后使用相同的结构元素进行膨胀以填充腐蚀留下的间隙。Matlab用于创建形态运算的结构元素。您还可以阅读有关形态学运算符的内容
例如:
SE=strel('square',5);
im_eroded=imerode(im,SE);
im_dilated=imdilate(im_eroded,SE);
你需要先做一个侵蚀(或),然后再做一个扩张(或)。这是使用Matlab中的imerode和IMDigital函数完成的
为此,需要使用带有形状(“正方形”、“圆盘”、“八角形”等)和尺寸的指定元素侵蚀和膨胀的大小
SE=strel('disk',5);
im_eroded=imerode(im,SE);
im_dilated=imdilate(im_eroded,SE);
以下是基于我的评论的示例实现:
subplot(1,3,1), imshow(input);
title('Original Image');
计算图像的打开度:
openInput=bwareaopen(input, 20);
subplot(1,3,2), imshow(bwareaopen(input, 20));
title('Opened Image');
以及随后的闭幕式:
ClosedInput = imclose(openInput,ones(10));
subplot(1,3,3), imshow(ClosedInput);
title('Closed Image');
结果:
尝试exImage=bwareaopen(Img,阈值)
@Jigg:bwareopen需要阈值。它不稳定。我认为卷积方案很好。上传你的原始图像,人们可以测试他们的建议。@Jigg:请再检查一遍。我上传了itI,但效果很差。我用SE=strel('square',2);结构元素的选择是至关重要的,因为如果膨胀是极端的,它会变得很明显。尝试一个磁盘结构元素。如果孔和噪音大小不同,您也可以使用两种不同的SE。Matlab中没有“圆圈”。这几乎与上面的@Raab70答案完全相同。请上传答案并在评论中添加链接,而不是重复。
ClosedInput = imclose(openInput,ones(10));
subplot(1,3,3), imshow(ClosedInput);
title('Closed Image');