半透明材料的分割,例如玻璃

信息处理 图像处理 matlab 计算机视觉 图像分割
2022-01-06 10:38:56

我完全被一个关于玻璃物体分割的问题所困扰。我需要尽可能精确地获取对象。我的方法不同。起初我试图去除背景,只留下一些尖锐的轮廓。但这仅适用于具有锐利边缘/渐变的对象。否则,对象本身也会被删除。我贴了两张不同的图片。

图 1 图 2

我试图通过形态学操作去除背景,比如灰度膨胀和对其进行分割。但这并没有太大帮助。之后,我尝试使用 k=3 的 k-means 将修改后的背景与玻璃的灰色和黑色值分开。在某些情况下这并不成功,但总体/平均而言并不成功。我还尝试使用整体模糊过滤器进行精巧的边缘检测,但这会导致开放轮廓、大量噪声等形式的较弱结果。pp。

具有自动阈值结果的 Canny:

testimg = imread('http://i.imgur.com/huQVt.png');  
imshow(testimg)
imedges = edge(testimg,'canny');
imshow(imedges);

第二张图片也是如此。

精明的输出#1 精明的输出#2

正如您所看到的,内部和外部有很多噪音,并且玻璃边框的边缘是双倍的。甚至边缘也有缝隙。

所以,我需要你的建议,以获得处理半透明材料问题的一般方法,而不仅仅是这两个图像。

1)在不损坏物体的情况下去除背景的其他想法?

2) 其他将对象与背景分离的分割方法?

如果可能,那么使用 Matlab、IPT 或统计工具箱提示。也欢迎任何其他提示!

提前感谢您的回答。真挚地

2个回答

为什么不只使用一个简单的 2D FFT(高斯)高通滤波器?

我用 MATLAB 很快就做到了

使用高通 FFT 的分片 #1:

http://i47.tinypic.com/rbjxnd.jpg

在#2 上也做了同样的事情。

使用高通 FFT 的分片 #2:

http://i45.tinypic.com/209kms0.jpg

如您所见,背景和玻璃区域被抹去,只追踪边缘。我没有花任何时间在上面,但是您可以将 HP 过滤输出阈值设置为具有更清晰的边缘,或者将 HP 截断推得更高。

这是您想要获得的更多结果吗?

这不是试图回答整个问题,但我确实有一个关于“清理图像”的想法。

你说你已经尝试过形态学操作,这是这个想法的一个变体,希望是一次升级。

这篇文章:A. Vichik、R. Keshet、D. Malah:树半格上的自对偶形态学和应用提出了一种增强经典形态学算子的方法,该方法可以为它们添加更理想的属性。

文章建议根据期望的属性选择图像的层次表示,然后提出一种方法来定义该表示上的腐蚀、膨胀、开放、顶帽 等运算符用他们自己的话来说:

我们提出了一个生成新形态算子的通用框架(...)

我在这个答案的第二部分(语义方法中解释了这些分层的树形结构,您可以在其中添加我在此处链接的文章中提到的极端分水岭树(并再次)

这是对(引用作者的话)“传统灰度数学形态学”的升级,因为这些操作保持了表示的理想属性例如,如果您的层次表示是自对偶的,那么您的操作符将是真正的自对偶(例如,与通过重构进行的自对偶开闭比较,这不是真正的自对偶。)

链接的文章还提供了一些过滤噪音的结果 - 您可以将文章(以及文章中引用的论文)的结果与您需要的结果(至少在视觉上)进行比较,并在开始之前查看它是否适合您编码。

因此,虽然选择最简单的表示(最大/最小)树将产生完全经典的操作,但选择最适合您需求的自对偶树可能会为您提供足够强大的方法。