我编写了一个算法来处理摄像头捕获并提取我感兴趣的两个特征的二进制图像。我正在尝试找到最佳(最快)的方法来检测两个特征何时相交以及哪个最低(y坐标最大)点是(这将是交点)。
我不想使用基于findContours()的方法,因为这太慢了,在我看来,这是不必要的。我还认为blob检测库对此非常臃肿。
我有两个样本图片(抱歉质量低):
(不接触:http://i.imgur.com/7bQ9qMo.jpg) (触摸:http://i.imgur.com/tuSmKw7.jpg)
由于这些图像的创建方式,右上角通常会出现噪点,看起来像是像素化线,但扩张和侵蚀等方法会在我试图找到的功能周围失去分辨率。
我最初的想法是使用直接像素访问来形成宽度过滤器和高度过滤器。因此,图像中的最低点是交点。
我不知道如何检测它们何时触摸...逻辑上我可以看到三角形在相交时形成,否则没有封闭的黑色区域。我可以用角落从红色开始填充图像,然后计算出图像中有多少仍然是黑色的吗?
有人有任何建议吗?
由于
答案 0 :(得分:0)
您的建议比查找轮廓更慢。对于二进制图像,查找轮廓非常简单快捷,因为您只需要找到一个黑色像素,然后是白色像素,反之亦然。
无论如何,如果你不想使用它,你可以使用垂直投影或垂直剖面,你会看到物体相交或不相交。
例如,在下图中检查与非交叉对象非常相似的字母“n”,以及与交叉对象类似的字母“o”:
通过分析直方图,您可以识别哪一个是相交的。