车载环视系统之摄像头虚拟视角变换

文章介绍了如何在车载环视系统中进行不同视角的视图转换,通过改变原图的外参矩阵,特别是欧拉角来实现。使用OpenCV库处理鱼眼畸变,计算摄像头的内外参数,并通过重映射实现去畸变。代码示例展示了如何变换视角并生成相应的去畸变图像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现目的:在车载环视系统中,会存在有在不同的观察视角下的视图实现需求,这就需要我们找到不同的视角和原图的像素对应关系。一般来说不同视角下的视图实际是通过改变的原图的外参矩阵实现。先将原始图的外参矩阵转换为欧拉角pitch-yaw-roll,然后根据需要改变欧拉角 然后转换为新的外参矩阵

以下是推导过程:

K1_3X3 * RT1_3X3 * K2_3X3^-1 * RT2_3X3^-1 * Zc2 / Zc1 * [u2 v2 1] = [u1 v1 1]

上式中:K1_3X3和 K2_3X3是相机的内参矩阵,因为是同一相机不同视角所以这两者相等。

RT1_3X3 是旋转矩阵(z=0 去掉第三列)和旋转向量的合并

^-1表示逆矩阵。

Zc2 ,Zc1 分别表示两相机尺度变换因子

[u2 v2 1] , [u1 v1 1] 表示去畸变的像素坐标

ps上式是在无畸变情况下的推导过程。

以下是测试代码,原图不方便贴出涉及到公司,需要的可以私信

from pickle import FALSE, TRUE
import  cv2
import numpy as np


if __name__ == '__main__':
    # 鱼眼畸变图内参
    K_ = np.array([426.666666666667,0,960.000000000000,0,426.666666666667,600.000000000000,0,0,1], np.float32).reshape(3,3)
    # 鱼眼畸变图畸变系数 用的是opencv fisheye模型
    D_ = np.array([0.058968600000, -0.010222100000,0.001918210000, -0.000627711000], np.float32)
    #计算出来摄像头外参
    Tvec_ = np.array([52.096304699100, 2149.916214944551,-1431.591440962086], np.float32).reshape(3,1)  
    
    #人为改变外参--改变旋转向量相当于改变相机的视角
    
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值