0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在OPencv中采用的是Bouguet的极线校正的算法

Dbwd_Imgtec 来源:未知 作者:李倩 2018-06-29 11:13 次阅读

在双目视觉中,我们对相机进行标定和校正,最终目的是使得两个相机的光轴完全平行,这样才能够继续后续的深度计算,三维重建。这样的校正在OPencv中采用的是Bouguet的极线校正的算法

校正前的左右相机的光心并不是平行的,两个光心的连线就叫基线(主镜头中心的连线),像平面与基线的交点就是极点,像点与极点所在的直线就是极线,左右极线与基线构成的平面就是空间点对应的极平面。

校正后,极点在无穷远处,两个相机的光轴平行。像点在左右图像上的高度一致。这也就是极线校正的目标。校正后做后续的立体匹配时,只需在同一行上搜索左右像平面的匹配点即可,能使效率大大提高。

Bouguet的方法是一种标定立体矫正方法,需要实现对左右相机进行标定,是将OPencv求解出来的旋转和平移矩阵分解成左右相机各旋转一半的旋转和平移矩阵R1,T1与R2,T2。分解的原则是使得,左右图像重投影造成的畸变最小,左右视图的共同面积最大。

1、将右图像平面相对于左图像平面的旋转矩阵分解成两个矩阵Rl和Rr,叫做左右相机的合成旋转矩阵。将左右相机各旋转一半,使得左右相机的光轴平行。此时左右相机的成像面达到平行,但是基线与成像平面不平行(行不对准)。

此时两个矩阵满足以下关系,通过这个关系可以看出来rl和rr是正交阵

2、构造变换矩阵Rrect使得基线与成像平面平行(行对准)。构造的方法是通过右相机相对于左相机的偏移矩阵T完成的。

(1) 首先先创建一个由极点el方向开始的旋转矩阵,令主点(cx,cy)为左图像原点,则极点el的方向就是相机投影中心之间的平移向量方向.

(2) e2方向与主光轴方向正交,沿图像方向,与e1垂直,则知e2方向可通过e1与主光轴方向的叉积并归一化获得。

(3) 获取了e1与e2后,e3与e1和e2正交,e3自然就是他们两个的叉积:

Rrect如下:

(4) 通过合成旋转矩阵与变换矩阵相乘获得左右相机的整体旋转矩阵。左右相机坐标系乘以各自的整体旋转矩阵就可使得左右相机的主光轴平行,且像平面与基线平行。

3. 通过上述的两个整体旋转矩阵,就能够得到理想的平行配置的双目立体系图像。校正后根据需要对图像进行裁剪,需重新选择一个图像中心,和图像边缘从而让左、右叠加部分最大。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 图像
    +关注

    关注

    2

    文章

    1063

    浏览量

    40038
  • 矩阵
    +关注

    关注

    0

    文章

    406

    浏览量

    34244
  • OpenCV
    +关注

    关注

    29

    文章

    611

    浏览量

    40767

原文标题:双目图像标定后矫正解析

文章出处:【微信号:Imgtec,微信公众号:Imagination Tech】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于OPENCV的运动目标跟踪实现

    和大小,得到当前帧目标的尺寸和质心位置。介绍Intel公司的开源OpenCV计算机视觉库的基础上,采用CAMSHIFT跟踪算法,实现运动
    发表于 12-23 14:21

    opencv的cvLoad函数如何移植到DM642,或者说CCS如何加载XML文件

    本人已经PC上调式好车牌识别的算法,用的是Opencv,最近想把车牌识别代码移植到DM642,初步接触,正在用EMCV尝试,但是EMCV基本上不起什么作用,因为很多在opencv
    发表于 07-19 17:24

    新手求助,HLS实现opencv算法加速的IPvivado的使用

    我照着xapp1167文档,用HLS实现fast_corners的opencv算法,并生成IP。然后想把这个算法塞到第三季的CH05_AXI_DMA_OV5640_HDMI上,这个demo里
    发表于 01-16 09:22

    基于QT+OpenCv的目标跟踪算法实现

    目标跟踪算法作为一种有着非常广泛的应用的算法航空航天、智能交通、智能设备等领域有着非常广泛的应用。本系列博客将教大家410c开发板上基于linux操作系统环境,
    发表于 09-21 10:42

    请问能否解释一下ad9361驱动程序中所采用的iq校正和直流校正的原理?

    a官方提供的adi接口程序的fpga代码,我看有在数字域进行直流校正和iq校正的代码,能否介绍一下其算法原理是怎样的?谢谢!
    发表于 10-08 10:47

    什么是CORDIC算法?如何实现FPGA的数字频率校正

    无线电接收机系统,由于会受到发射机运动、接收机运动和标准频率随时间动态变化等因素的影响,其接收机接收信号往往会发生频率偏移,因而需要进行频偏校正扩频通信系统
    发表于 09-19 07:17

    如何使用SDK独立模式下的OpenCV应用程序

    嗨,大家好,我是新手SDK用户。我使用vivado hls来合成一个简单的图像处理算法,并构建了我现在使用sdk的硬件平台,我想使用sdk独立模式下使用opencv应用程序zynq
    发表于 05-04 17:09

    OpenCV自带组件HighGUI怎么使用?

    将介绍OpenCV自带组件HighGUI的简单使用。当我们测试算法,查看算法效果的时候,需要用到可视化,动态调参的界面,也可能需要监听鼠
    发表于 11-05 06:54

    发射本振泄漏LOL如何校正算法

    发射本振泄漏LOL校正算法
    发表于 03-02 06:09

    移植OpenCV-4.3.0的过程

    OpenCV-4.3.0是较新的OpenCV版本,最新的版本是OpenCV-4.4.0,由于GitHub太慢总是下载失败,不得已就移植OpenCV-4.3.0这个版本用着先。
    发表于 11-04 08:51

    [译]RISC-V CPU上运行OpenCV

    RISC-V是一个相对较新的平台,物联网市场中越来越受欢迎。2020年,OpenCV开始支持该平台。 有效执行各种图像处理、计算机视觉和机器学习算法需要矢量/SIMD指令,许多现代CPU架构都提供
    发表于 06-22 18:54

    OpenCV的BGR格式,libyuv对应的那个格式?OpenCV的RGB格式呢?

    OpenCV的BGR格式,libyuv对应的那个格式?OpenCV的RGB格式呢?
    发表于 09-19 06:00

    openCV的库自带了模板匹配算法吗?

    openCV的库自带了模板匹配算法
    发表于 10-10 06:48

    opencv 白平衡算法

    白平衡就是图片中最亮的部分为白色,最暗的部分为黑色,其余部分进行拉伸。下文将详细介绍OpenCV实现的灰度世界算法
    发表于 01-17 09:05 7406次阅读

    使用OpenCV中的universal intrinsics为算法提速 (三)

    OpenCV 4.x中提供了强大的统一向量指令(universal intrinsics),使用这些指令可以方便地为算法提速。所有的计算密集型任务皆可使用这...
    的头像 发表于 12-10 19:40 607次阅读