在 Matlab 中给定一个带有对象的二进制掩码。我要找到物体边界的凹点。我这里所说的凹点是凹面区域B_1、B_2、B_3中分别到凸包弦K_1、K_2、K_3的欧几里得距离的最深凹点。红点是我要找的凹点,在凹区B_1画三条垂直于弦K_1的线,最深的凹点是中间的,因为它的长度最大。
有人有有效的方法/代码来做到这一点吗?谢谢。
下图以凸包为例,红点表示有效凹点。
最佳答案
效率是相对的...
如何计算凸包(它有 standard algorithms)然后缩小它直到它完全在对象边界内。最后触摸的点是您想要的凹点。
替代策略:
- 计算凸包
- 找到凸包和对象边界之间的所有差异(必须是直线,在您的情况下为 K1 K2 K3)
- 对于每一行,旋转图像使该行水平
- 取线下方物体边界的最低像素
关于matlab - 使用 Matlab 在二值图中查找凹度像素/点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5825895/