使用Matlab在二进制图中查找凹面像素/点

Che*_*ung 6 matlab image-processing detection

在Matlab中给出带有对象的二进制掩码.我将找到对象边界的凹度点.这里我所说的凹点是相对于凹陷区域B_1,B_2,B_3中分别与凸包壳弦K_1,K_2和K_3的欧几里德距离的最深凹点.红点表示我想要找到的凹度点,其中在凹陷区域B_1中我绘制垂直于弦K_1的三条线,最深的凹点是中间的,因为它具有最大的长度.

在此输入图像描述

任何人都有有效的方式/代码来做到这一点?谢谢.

下图中的另一个图给出了凸包的示例,其中红点表示有效的凹度点.

在此输入图像描述

gro*_*ndi 4

效率是相对的...

如何计算凸包(有标准算法)然后缩小它直到它完全位于对象边界内。最后接触的点是您想要的凹点。

替代策略:

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