使用Matlab在二进制地图中寻找凹点/凹像素。

6
在Matlab中给定一个带有对象的二进制掩模。我将寻找对象边界的凹点。这里所说的凹点是指相对于凹区域B_1,B_2和B_3中的凸包弦K_1、K_2和K_3的欧几里得距离的最深凹点。红点表示我要找到的凹点,在凹区域B_1中,我画了三条垂直于弦K_1的线,最深的凹点是中间的那个,因为它具有最大的长度。
任何人有高效的方法/代码来做到这一点吗?谢谢。
下面的另一个图例显示了一个具有凸包的示例,其中红点表示有效的凹点。

你能先展示一下你目前为止完成了什么吗?也许你应该增加更多关于“凹点”是什么意思的信息。我认为我知道你的意思,但是如果没有数学,所有东西都会在翻译中失真。 - user616736
我认为需要找到凹区域中距离相应弦线最远的点。但是如何在计算时间方面有效地找到它呢? - Cheung
1个回答

4

高效是相对的...

如何计算凸包(有标准算法可用),然后将其收缩,直到完全位于对象边界内。最后一个接触点是所需的凹度点。

替代策略:

  • 计算凸包
  • 找到凸包和对象边界之间的所有差异(在您的情况下必须是直线,K1 K2 K3)
  • 对于每条线,旋转图像使该线水平
  • 取该线以下对象边界的最低像素

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接