寻找图中的内部区域

时间:2012-11-30 05:42:58

标签: image-processing language-agnostic

假设我们在白色背景上有一个黑色甜甜圈。什么是好方法,仅查看任何像素的值(0 =非白色,1 =白色)和任何相邻像素值,以确定图像上找到的两个白色区域中的哪一个位于甜甜圈内?

Dark Donut http://us.cdn2.123rf.com/168nwm/aaronamat/aaronamat1011/aaronamat101101843/8326944-bite-chocolate-donuts-on-a-white-background.jpg

2 个答案:

答案 0 :(得分:3)

在计算机图形学中,已经在几何处理的背景下广泛研究了这个问题。目标是知道一个点是在多边形的外部还是外部(可能带有孔),并且已经用于填充颜色。

最常见的解决方案是从当前点沿随机方向抛出一条线(为简单起见,您可以采用水平扫描线),并计算与边界的交点数。如果这个数字是偶数,你就在外面,如果是奇数,你就在里面。

在图像处理的上下文中,可以使用边缘寻找技术(例如,Sobel算子)来找到边界。您现在可以从给定点向右走一行(例如)并计算您找到的边数。

答案 1 :(得分:3)

WhitAngl的回答是正确的,所以我的回答只是简单介绍图像处理中涉及的一些问题。如果你知道这些,抱歉天真。

鉴于您的初始图像,由于检测边缘的问题,仅考虑其边缘必然会得到不正确的结果。它们可能会被破坏,它们可能无法被检测到等等。另外,从您自己的考虑,我们不能简单地使用0 =不是白色,1 =白色。使用原始图像,这是考虑的结果:

enter image description here

如果我们假设您有一个更好的二进制表示形式:

enter image description here

然后WhitAngl的答案非常适用。此外,在这种情况下,答案可以简化为:如果外边缘的黑色像素接触白色像素,则该白色像素不是内部像素。这给出了:

enter image description here

每个白色像素都在您的甜甜圈内部。

相关问题