matlab - 使用 Matlab 在二值图中查找凹度像素/点

标签 matlab image-processing detection

在 Matlab 中给定一个带有对象的二进制掩码。我要找到物体边界的凹点。我这里所说的凹点是凹面区域B_1、B_2、B_3中分别到凸包弦K_1、K_2、K_3的欧几里得距离的最深凹点。红点是我要找的凹点,在凹区B_1画三条垂直于弦K_1的线,最深的凹点是中间的,因为它的长度最大。

enter image description here

有人有有效的方法/代码来做到这一点吗?谢谢。

下图以凸包为例,红点表示有效凹点。

enter image description here

最佳答案

效率是相对的...

如何计算凸包(它有 standard algorithms)然后缩小它直到它完全在对象边界内。最后触摸的点是您想要的凹点。

替代策略:

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

关于matlab - 使用 Matlab 在二值图中查找凹度像素/点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5825895/

相关文章:

javascript - 我将如何在 jquery 中检测触摸屏并隐藏一个 div

matlab - Octave 的矢量解包

OpenCV 正方形 : filtering output

matlab - 为什么 nargout 返回 -1?在这种情况下如何获得正确数量的函数输出?

delphi - 图像裁剪组件

c++ - 图像是样本还是总体

c++ - 使用OpenCv的矩阵运算(加法和减法)OpenCV C++

javascript - 如何检测语言 iPhone 网络应用程序?

matlab - Matlab中矩阵相等元素的位置对

algorithm - 从大型文本文件快速形成矩阵