Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何滤除含有不需要的区域和孔洞区域的二值图像_Algorithm_Matlab_Image Processing - Fatal编程技术网

Algorithm 如何滤除含有不需要的区域和孔洞区域的二值图像

Algorithm 如何滤除含有不需要的区域和孔洞区域的二值图像,algorithm,matlab,image-processing,Algorithm,Matlab,Image Processing,我有一个难题需要你的帮助。我有一个二值图像,它保留了一些不需要的区域(小白点)和空穴区域(图1)。我的想法是,首先我将通过计算这些区域的面积来删除不需要的区域,然后用小面积值进行过滤。在第二步,我填充孔洞区域以使图像清晰。您认为填充孔洞区域的最佳方法是什么。你有什么办法解决它吗。你能帮我用matlab实现它吗。非常感谢你。这是我删除不需要的区域的参考代码。但它需要阈值项。您可以在以下位置下载图像测试: 函数exImage=rmUnwantedRegion(Img,阈值) lb=bwlabel(I

我有一个难题需要你的帮助。我有一个二值图像,它保留了一些不需要的区域(小白点)和空穴区域(图1)。我的想法是,首先我将通过计算这些区域的面积来删除不需要的区域,然后用小面积值进行过滤。在第二步,我填充孔洞区域以使图像清晰。您认为填充孔洞区域的最佳方法是什么。你有什么办法解决它吗。你能帮我用matlab实现它吗。非常感谢你。这是我删除不需要的区域的参考代码。但它需要阈值项。您可以在以下位置下载图像测试:

函数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');