计算机视觉计算数字(手指)比率

Ykt*_*ula 6 opencv image computer-vision

如果有人用右手按压扫描仪的玻璃,结果将如下所示:

来自维基百科的免费许可图片

(没有橙色和白色注释).我们如何从他们的手的图像中确定某人的2D:4D比率

小智 5

你已经标记了这个opencv很棒 - 我强烈建议你看看openFrameworks和openCV插件,因为基本的例子会为你提供一些很好的起点.

我将采取的一般方法是首先将图像提取到明暗区域,检测手和手指的边缘,然后简化数据,直到有线条代表手指的边缘和尖端.最后,在第2和第3指之间采用下部内缝,在第2和第4指尖停止,第3和第4指的内缝停在第4根尖端,这将给你2D:4D比率.

首先,您需要处理图像以获得openCV可以轻松处理的黑白图像.您可能必须使用各种阈值来同时检测手的轮廓和手指的内缝.(你甚至可能需要两次通过来检测轮廓和内缝)

虽然有许多特征检测方法,但OpenCV通常会返回检测到的"blob"数组.有了正确的阈值,我相信你能够可靠而简单地找到每个手指的内缝的连续水平斑点(或几乎连续的,允许附近斑点之间的一些距离).

用于检测内缝的简单算法是从左上角开始遍历检测到的斑点并从左到右穿过图像,就像读取页面一样.从图像中的斑点组合一组检测到的水平线,并使用各种图像处理阈值,最小接受线长度和检测到的斑点之间的距离余量,您仍然认为这些斑点属于同一条线,直到您满意为止很好地检测手指边缘.

一旦检测到水平线,就可以再次处理斑点,寻找代表手指尖端的垂直线(当您点击先前检测到的水平线时停止)

最后,找到代表正确内缝的线条,测量它们直到它们与适当的指尖相交,你应该得到你的比例!


Aru*_*iRC 5

有趣的问题.我会这样做:

首先,通过Otsu的阈值对图像进行二值化.然后使用Medial-Axis Transform(MAT)找到图像的骨架.这将意味着对图像进行距离变换,然后使用自适应阈值处理来获得距离变换中的局部最大值.这为您的图像提供了粗略且准备好的骨架.示例代码来自此处.

获得的手骨架可能稍微断开,在这种情况下使用OpenCV形态"CLOSE"(非"打开")功能可以将其连接成单个骨架.然后检查所得手的凸度缺陷应该给出估计.

  • 你不的意思是"获得的手骨架可能会略微断开......"关闭"功能可以连接吗?" 而不是"开放"......我认为MORPH_ELLIPSE的一个近距离功能来自于经验,当你没有事先知道你关闭的东西时,最好关闭形态学图像...... (2认同)