广角摄像头的非线性经度变换

一、研究的原因

1 视频拼接的时候需要在经度上矫正
2 维度尽量保持
具体看以下图,下图是两幅图片的拼接图像,为了看清楚,留了有一条明显的接缝

在这里插入图片描述
当然依然没有拼接好,如果使用纯粹的摄像机参数 k,d 14或者15个参数来做矫正,会发现相当难以拼接,再进行 使用了倒抛物线 考虑使用非线性变换来拉伸经度线,维度保持弯曲,以下先说明以前的做法:使用相机参数来矫正,相机参数说明

1.1 K D 参数说明

K = [  fx 0 cx  ]
       [  0 fy cy ]
       [  0 0   1 ]
fx 和 fy:焦距参数(像素单位)
    表示相机在水平(x)和垂直(y)方向上的焦距,反映了相机对光线的汇聚能力。
    物理意义:若相机传感器像素尺寸为 dx、dy(单位:mm / 像素),实际焦距为 f(单位:mm),则:
cx 和 cy:主点坐标(像素单位)
    表示相机光轴与图像平面的交点(主点)在图像坐标系中的位置,通常位于图像中心附近。
物理意义:若图像分辨率为 W×H(像素),理想情况下 cx≈W/2,cy≈H/2,但实际标定中可能因安装误差略有偏移。

畸变系数 d : k1、k2、k3:径向畸变系数
    切向畸变 p1,p2
    普通镜头,常用d = [k1, k2, p1, p2]
    鱼眼镜头, 常用 d = [k1, k2, k3, p1, p2]

在这里插入图片描述
使用标定法进行参数标定后,就可以对图像进行矫正,目标是将图像在经度和纬度上完全拉直,没有问题,可以做到,但是对于不同的相机而言,就算是同一型号,也未必参数一致,问题倒也不是这个 ,无论从数学上和解决问题的繁琐上来说,都是需要创新的,我思考和实验了良久,应该使用一种统一的数学模型一次解决矫正问题,而不是需要准备多次,争取拿到一个相机,拿到一副图像就可以进行矫正来进行:

  1. 可以做更加符合人眼视觉的播放
  2. 可以图像拼接
  3. 可以做三维融合

再进行kd 参数的复杂标定以后,还要进行算法测试,问题是:

  1. 可能会像素缺失,肯定要裁剪
  2. 对于不熟悉标定的程序员不友好
  3. 纬度上同时矫正以后拼接需要再次投影

于是我们使用倒抛物线进行创新的图像和视频矫正,不用标注,不用进行多次测试,直接达到一副图像就可以进行矫正,直接可以进行拼接,无需再进行投影算法,效率提升,节省了时间

1.2 数学原理

依图看,cx,cy为图像的中心,目标是离开图像中心(cx,cy)越远,改变越大,
在这里插入图片描述
    以下是基本算法代码,假定是沿着一个圆,离中心越来越远的地方需要矫正的强度越强,离中心越近的地方接近于不矫正,可以依据以下算法开发出各种的图像矫正方法。

std::tuple<Mat, Mat> Longitude_correction(int R)
{
   
   
    Mat mapx = Mat::zeros(2 * R, 2 * R, CV_32F);
    Mat mapy = Mat::zeros(2 * R, 2 * R, CV_32F);

    for (int i = 0; i < mapx.rows; ++i) {
   
   
        for (int j = 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qianbo_insist

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值