我正在尝试执行图像注册,但运气不佳。
下面的图片是我的“参考”图片。我使用网络摄像头获取同一对象在不同方向的图像,然后需要对这些图像执行转换,以使它们看起来尽可能接近参考图像。
我一直在使用Aforge.NET和Accord.NET库来解决这个问题。
特征检测/提取
到目前为止,我已经尝试过本文中使用的图像拼接方法。它适用于某些类型的图像,但不幸的是它似乎不适用于我的示例图像。对象本身相当平淡,没有太多特征,因此算法找不到很多相关点。我尝试了上述方法的两种版本,一种使用 Harris 角检测器,另一种使用SURF,这两种方法都没有为我提供所需的结果。
一种选择可能是“人为地”为对象添加更多功能(即贴纸、标记),但如果可能的话,我想避免这种情况。
形状检测
我还尝试了本文中使用的形状检测方法的几种变体。理想情况下,我想检测物体上四个定义明确的圆圈/孔。然后我可以使用这些坐标来创建一个转换矩阵(单应性?),我可以用它来转换图像。
不幸的是,我无法可靠地检测到所有四个圆圈。我已经尝试了无数不同的方法来预处理图像以获得更好的圆形检测,但无法找到完美的序列。我的正常操作是:
- 转图像灰度
- 应用过滤器(均值、中值、保守平滑、自适应平滑等)
- 应用边缘检测(同质性、Sobel、差异性、Canny 等)
- 应用颜色过滤
- 运行形状/圆形检测器
我只是找不到合适的过滤器系列来可靠地检测四个圆圈。
图像/模板匹配
同样,我想检测对象中的四个圆圈/孔,所以我尝试了一种图像/模板匹配技术,但收效甚微。我创建了一个模板(其中一个圆圈的小图像)并运行了详尽的模板匹配算法,但没有取得多大成功。通常它只检测其中一个孔,通常是创建模板的那个孔!
总之
我觉得我正在使用正确的技术来解决这个问题,我只是不确定我哪里出错了,或者我应该进一步关注哪里。
任何帮助或指示将不胜感激。