两个镜头、视野、分辨率不同的相机(rgb、红外)的视野校正

本文讲述了在项目中使用RGB和热成像摄像头遇到对齐难题,通过独立标定和联合使用OpenCV的stereoCalibrate方法,解决深度匹配问题,尽管效果一般,但提供了解决思路。
摘要由CSDN通过智能技术生成

背景

目前在做的项目用到两个摄像头,一个是热成像摄像头、另一个是普通的rgb摄像头。
一开始的目标是让他们像素级重合,使得点击rgb图像时,即可知道其像素对应的温度。但是在尝试的过程中,发现基本不可能。因为由于纵深、遮挡、透视变形、视差等问题,两个摄像头拍摄到的东西可能会很不一样,对不上。
但是应该可以参考opencv的双目标定,做出横向对齐的效果。【opencv/samples/cpp/stereo_calib.cpp】
在这里插入图片描述

实际效果

但是尝试了直接用这个方法来操作,发现出来的效果简直毫无效果,画面随意飞,有时整个画面黑屏,看不到任何东西。

查找资料

然后不断地找资料,发现很早之前就有人尝试了类似的想法了。

资料1

【stereoCalibrate for different cameras (rgb and infrared)】
这个人有一组照片,里面有rgb照片以及与其对应的ir照片,他放在这里,可以从这里下载(需要梯子)【rgb+ir】
在这里插入图片描述他的需求也是实现两个相机画面的极平面、极线对齐。直接用了stereoCalibrate出来的效果不好。
他提出这个问题之后,有个人【BConic,之前好像是叫AldurDisciple】回答了他。说可以尝试一下先独立地对每个相机进行标定,得到相机内参,然后再设置参数 CALIB_USE_INTRINSIC_GUESS + CALIB_FIX_INTRINSIC 去使用stereoCalibrate,应该能够取得较好的效果。
在这里插入图片描述

从后续来看,提出问题的人【DmT021】反馈基本解决了问题。

资料2

从另外一篇问答【Big reprojection error while using OpenCV cvStereoCalibrate to calibrate a pair of cameras with different resolution】来看,这种先独立标定再联合求解的方法应该是可行的。
在这里插入图片描述

解决方案

先独立地对每个相机进行标定,然后再联合使用stereoCalibrate进行标定。
在进行标定之前,先对图像进行剪裁、缩放,使他们具有同样的尺寸。(上面的资料好像说不用同样尺寸也行,暂时不清楚他们是如何使用的)
在使用stereoCalibrate时,注意参数为CALIB_USE_INTRINSIC_GUESS + CALIB_FIX_INTRINSIC 。

最终结果

一般,但是咬咬牙应该也可以用。
两个图像都旋转且裁剪了很多。有可能是我的样本的问题,后面采集多一些不同角度的再来标定试试。
在这里插入图片描述


参考:
【基于OpenCV的双目测距系统实现】
【双目相机标定以及立体测距原理及OpenCV实现】

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值