全景图像拼接wave correct部分实现原理

本文探讨了全景图像拼接过程中OpenCV的waveCorrect函数的实现原理,该函数通过矫正旋转矩阵,减少拼接图像的波浪形失真。依据Lowe的论文和Szeliski的综述,主要利用两个约束条件来计算全局旋转矩阵,确保相机X轴与世界坐标系Z轴垂直,以及相机Z轴方向平均值接近世界坐标系Z轴。参考了OpenCV源代码和相关文献。
摘要由CSDN通过智能技术生成

最近在研究全景图像的拼接,阅读了OpenCV中图像拼接的部分代码,阅读到waveCorrect函数时看的一头雾水。函数的功能是传入每个相机的旋转矩阵,计算一个矫正的旋转矩阵,对旋转矩阵进行矫正,使得拼接后的图像近似为直线(矫正拼接后图像的波浪形式)。示例见lowe的论文中相关部分:


该部分在 Lowe[2] 的论文中叫做Automatic Panorama Straightening,在 Szeliski[3,4] 的综述文章中叫做Up vector selection,OpenCV的代码是对Lowe算法的实现。

straightening约束的OpenCV代码如下

void waveCorrect(std::vector<Mat> &rmats, WaveCorrectKind kind)
{
    LOGLN("Wave correcting...");
#if ENABLE_LOG
    int64 t = getTickCount();
#endif

    Mat moment = Mat::zeros(3, 3, CV_32F);
    for (size_t i = 0; i < rmats.size(); ++i)
    {
        Mat col = rmats[i].col(0);
        moment += col * col.t();
    }
    Mat eigen_vals, eigen_vecs;
    eigen(moment, eigen_vals, eigen_vecs);

    Mat rg1;
    
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值