使用 opencvsharp3 进行图像匹配
Image Matching using opencvsharp3
我是 OpenCVSharp3 的新手,我一直在看一些使用这个库进行图像匹配的例子。
我的问题的关键是我不知道这个 question 的代码需要进行什么样的修改才能比较几乎 100% 相同的两张图像,但其中一张旋转(无限制)旋转),有时会稍微偏离源(一些像素)。
这个问题的方法基本上比较一张图片是否在另一张图片里面,但是我的项目只需要比较5张相同大小的图片,其中两张相同,略有不同。
这样的算法有效吗?
编辑:
这里是检测相同的 5 张图像的示例:
可以有效但是:
- 如果你想要无限旋转,你必须将你的参考图像与旋转的其他图像的无限组合进行比较。
- 如果您的其他图像与源图像发生位移,您将不得不生成所有可能的位移图像。
- 如果把这两个技巧结合起来,就会有很多组合。
所以是的,可以为一张图像生成所有可能的不同图像,并将它们与您的参考图像进行比较。
它不是很健壮,如果你在被大量像素置换的图像上尝试它会附加什么?如果对图像进行了颜色调整?如果一个是灰度的?
我建议你使用机器学习来解决这个问题。
我会这样进行:
- 制作图像数据集
- 对每个图像,进行数据增强(使所有旋转、位移、噪声成为可能)。
- 使用 CNN 并对其进行训练,以将图像的每个变体识别为同一图像。
- 大功告成,你有一个算法来完成这项工作:)
这里是 C# 的 tensorflow 实现
https://github.com/migueldeicaza/TensorFlowSharp
使用 python see here
简单实现 MNIST CNN
Here解释CNN工作原理的视频(看看特征检测和池化操作,它可以帮助你)
我是 OpenCVSharp3 的新手,我一直在看一些使用这个库进行图像匹配的例子。
我的问题的关键是我不知道这个 question 的代码需要进行什么样的修改才能比较几乎 100% 相同的两张图像,但其中一张旋转(无限制)旋转),有时会稍微偏离源(一些像素)。
这个问题的方法基本上比较一张图片是否在另一张图片里面,但是我的项目只需要比较5张相同大小的图片,其中两张相同,略有不同。
这样的算法有效吗?
编辑:
这里是检测相同的 5 张图像的示例:
可以有效但是:
- 如果你想要无限旋转,你必须将你的参考图像与旋转的其他图像的无限组合进行比较。
- 如果您的其他图像与源图像发生位移,您将不得不生成所有可能的位移图像。
- 如果把这两个技巧结合起来,就会有很多组合。
所以是的,可以为一张图像生成所有可能的不同图像,并将它们与您的参考图像进行比较。
它不是很健壮,如果你在被大量像素置换的图像上尝试它会附加什么?如果对图像进行了颜色调整?如果一个是灰度的?
我建议你使用机器学习来解决这个问题。 我会这样进行:
- 制作图像数据集
- 对每个图像,进行数据增强(使所有旋转、位移、噪声成为可能)。
- 使用 CNN 并对其进行训练,以将图像的每个变体识别为同一图像。
- 大功告成,你有一个算法来完成这项工作:)
这里是 C# 的 tensorflow 实现 https://github.com/migueldeicaza/TensorFlowSharp
使用 python see here
简单实现 MNIST CNNHere解释CNN工作原理的视频(看看特征检测和池化操作,它可以帮助你)