我有一个熔炼立方体的图像,随着时间的推移形成一个液滴。到目前为止,我提取了它的轮廓,但接下来我需要区分物体和表面。我的想法是检测物体接触表面的角落,但我正在努力寻找一个合理的方法来做到这一点(最好使用opencv的C++接口)。我会很感激任何建议。
这里是所提取的轮廓的一些例子:
opencv物体轮廓角点检测
编辑: @Haris:
我已经想你的建议的一个变种,它是做的工作对我来说:
在ap接近轮廓i从左边靠近,寻找具有指定范围中的值的第一个角度,然后从右边开始。由于逼近的轮廓点是原始轮廓点的一个子集,我然后确定原始序列中的2个角点,并在两个角落处剪切它。我把中间的部分当作水滴,左边和右边的部分,我重新宣布是我的表面线。可能会有更好,更稳定的方法,但这对我有用。谢谢!
也许它会更容易从表面的物体与原始图像区分(与为例一个阈值)。我们有可能看到原始图像吗?首先想到的是 – Irisciences
。如果轮廓点按顺序存储(如它们在图像中一样)。我将选择一个“好”的d_Index表示〜5(对于平滑的小噪声),并为每个点i计算“正切”向量P [i + 5] -P [i]。邻接切线向量的内积将显示拐角处的下降。找到下降的最小位置/ i(通过线性插值??)。第一个min_i_h和最后一个min_i_e将分割来自所有对象的轮廓。如果您需要该区域,请在P [i_h]到P [i_e]的原始图像中画一条线,然后重新找到轮廓线。 – maythe4thbewithu