使用opencvsharp3进行图像匹配

时间:2017-12-05 18:51:49

标签: c# opencvsharp

我是OpenCVSharp3的新手,我一直在看一些使用这个库进行图像匹配的例子。

我的问题的关键是我不知道这个question的代码需要比较几乎100%相同的两个图像进行哪些修改,但其中一个图像是旋转的(无限旋转)有时稍微偏离源(一些像素)。

这个问题的方法基本上比较一个图像是否在另一个图像中,但我的项目只需要比较5个相同大小的图像,其中两个图像相同但略有不同。

这样算法有效吗?

编辑:

以下是检测相同图像的5个图像的示例:

enter image description here

1 个答案:

答案 0 :(得分:0)

它可以有效但是:

  1. 如果您想要无限制旋转,则必须将参考图像与旋转后的其他图像无限组合进行比较。
  2. 如果您的其他图像从源位移,则必须生成所有可能的位移图像。
  3. 如果你结合这两种技术,你会有很多组合。
  4. 所以是的,可以为一个图像生成所有可能的不同图像,并将它们与参考图像进行比较。

    它不是很强大,如果你尝试在像素数量较多的图像上进行尝试会有什么附加效果?如果对图像进行了颜色调整?如果一个是灰度的?

    我建议您使用机器学习解决此问题。 我会这样做:

    1. 制作图像数据集
    2. 对于每个图像,进行数据增强(使所有旋转,位移,噪声成为可能)。
    3. 使用CNN并训练它以将图像的每个变体识别为同一图像。
    4. 你已经完成了,你有一个算法来完成这项工作:)
    5. 这里是C#的tensorflow实现 https://github.com/migueldeicaza/TensorFlowSharp

      使用python see here

      简单实现MNIST CNN

      Here解释CNN如何工作的视频(查看功能检测和池操作,它可以帮助您)