首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Opencv图像配准- MapperGradEuclid

Opencv图像配准- MapperGradEuclid
EN

Stack Overflow用户
提问于 2021-05-14 11:33:05
回答 2查看 324关注 0票数 1

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

由于分辨率很小(320*240),所以我们希望解决与opencv (图像配准)图像配准类的对齐问题。我们不想使用基于功能的对齐方式。

到目前为止,我做了以下功能来对齐参考mImageTemplate图像和图像以找到旋转和平移图像- input

代码语言:javascript
复制
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;
}

不幸的是,到目前为止,它还不起作用。有人看到问题了吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-09 06:45:18

解决办法不仅是一种,而且是几种不同的对齐方法。这些图像配准技术只有在目标已经接近模板位置时才能工作。所以我不再使用它了。

为了实现上述对齐问题,几种方法的管道完成了以下工作:

  • 基本移位和旋转
  • 迭代最近点-用于精化

  • 椭圆拟合(基本移位和旋转)
  • ECC (cv::findTransformECC函数-用于精化)

最后,您仍然面临这样的问题:如果零件的旋转超过了模板的+/- 90°,那么所提到的粗对准方法都不能正确地旋转该零件。因此,使用增强相关系数(ECC)检查您的对准是否成功,如果没有-旋转它在180°左右。

票数 1
EN

Stack Overflow用户

发布于 2021-06-08 18:40:55

在你的图像中,你有一个静态梯度背景和一个移动前景。您需要去掉背景细节,因为它会影响MapperGrad。您可以尝试拍摄一张空图片并使用绝对差,或者您可以尝试做一个形态学TopHat或BackroundSegmentation来过滤掉背景。但我怀疑你将需要从更清晰的图像开始,在那里背景没有细节。这肯定是最简单的。

如果移动较小,则直接使用MapperGrad,但如果运动很大,如图像集所示,则需要将MapperGrad输入MapperPyramid。

我认为真正的答案是,你会想要使用类似形状或模板匹配的东西代替。图像配准并不是真正意义上的特征/模式匹配工具,因为它考虑整个图像。这是真的,当你试图减轻之间的振动捕获,而不使用信托,视频稳定等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67533635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档