我试图找到一个图像的平移和旋转与参考模板图像。模板图像是下列图片之一。

由于分辨率很小(320*240),所以我们希望解决与opencv (图像配准)图像配准类的对齐问题。我们不想使用基于功能的对齐方式。
到目前为止,我做了以下功能来对齐参考mImageTemplate图像和图像以找到旋转和平移图像- input。
cv::Mat pixelMapRegistration::align(cv::Mat input)
{
cv::Mat transformed;
cv::Ptr<cv::reg::Map> rot_shift_res;
cv::reg::MapperGradEuclid rot_shift = cv::reg::MapperGradEuclid();
rot_shift_res = rot_shift.calculate(mImageTemplate, input);
cv::reg::Map* res = rot_shift_res.get();
rot_shift_res->inverseWarp(input, transformed);
return transformed;
}不幸的是,到目前为止,它还不起作用。有人看到问题了吗?
发布于 2021-06-09 06:45:18
解决办法不仅是一种,而且是几种不同的对齐方法。这些图像配准技术只有在目标已经接近模板位置时才能工作。所以我不再使用它了。
为了实现上述对齐问题,几种方法的管道完成了以下工作:
或
最后,您仍然面临这样的问题:如果零件的旋转超过了模板的+/- 90°,那么所提到的粗对准方法都不能正确地旋转该零件。因此,使用增强相关系数(ECC)检查您的对准是否成功,如果没有-旋转它在180°左右。
发布于 2021-06-08 18:40:55
在你的图像中,你有一个静态梯度背景和一个移动前景。您需要去掉背景细节,因为它会影响MapperGrad。您可以尝试拍摄一张空图片并使用绝对差,或者您可以尝试做一个形态学TopHat或BackroundSegmentation来过滤掉背景。但我怀疑你将需要从更清晰的图像开始,在那里背景没有细节。这肯定是最简单的。
如果移动较小,则直接使用MapperGrad,但如果运动很大,如图像集所示,则需要将MapperGrad输入MapperPyramid。
我认为真正的答案是,你会想要使用类似形状或模板匹配的东西代替。图像配准并不是真正意义上的特征/模式匹配工具,因为它考虑整个图像。这是真的,当你试图减轻之间的振动捕获,而不使用信托,视频稳定等。
https://stackoverflow.com/questions/67533635
复制相似问题