{畸变矫正}图像去畸变opencv各种方法与matlab各种方法-联合分析(一统江湖)

本文详细介绍OpenCV中畸变矫正的方法,包括undistort()、initUndistortRectifyMap()与remap()及undistortPoints()等函数的应用。通过理论分析与实验对比,阐述不同函数的特点与适用场景。

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

 opencv 畸变矫正分析

参考  https://docs.opencv.org/3.3.0/da/d54/group__imgproc__transform.html#ga69f2545a8b62a6b0fc2ee060dc30559d

理论分析

方法一undistort()   与matlab标定去畸变显示相同

 undistort()

void cv::undistort ( InputArray  src,
    OutputArray  dst,
    InputArray  cameraMatrix,
    InputArray  distCoeffs,
    InputArray  newCameraMatrix = noArray() 
  )    

矫正图像以补偿镜头失真。

该功能可转换图像以补偿径向和切向镜头失真。该函数只是cv :: initUndistortRectifyMap (带有单位R)和cv :: remap (带双线性插值)的组合。 有关正在执行的转换的详细信息,请参阅前一个函数。

目标图像中的源像中没有对应像素的像素用零(黑色)填充。

可以通过newCameraMatrix来调节在校正图像中可见的源图像的特定子集。 您可以使用cv :: getOptimalNewCameraMatrix根据您的要求计算相应的newCameraMatrix。

可以使用cv :: calibrateCamera确定相机矩阵和失真参数。 如果图像的分辨率与校准阶段使用的分辨率不同,则需要相应地缩放\(f_x,f_y,c_x 和(c_y),而畸变系数保持不变。(分辨率与内参和畸变的关系)

参数

SRC 输入(失真)图像。
DST 输出(校正)图像,其大小和类型与src相同。
cameraMatrix 输入相机矩阵\(A = \ vecthreethree {f_x} {0} {c_x} {0} {f_y} {c_y} {0} {0} {1} \)。
distCoeffs 失真系数的输入矢量\((k_1,k_2,p_1,p_2 [,k_3 [,k_4,k_5,k_6 [,s_1,s_2,s_3,s_4 [,\ tau_x,\ tau_y]]]])\)of 4 ,5,8,12或14个元素。 如果向量为NULL /空,则假定零失真系数。
newCameraMatrix 扭曲图像的相机矩阵。 默认情况下,它与cameraMatrix相同,但您可以通过使用不同的矩阵来扩展和移动结果。

方法二   cv::initUndistortRectifyMap  and cv::remap

initUndistortRectifyMap()

void cv :: initUndistortRectifyMap InputArray cameraMatrix
    InputArray distcoeffs
    InputArray R
    InputArray newCameraMatrix
    尺寸 大小
    INT m1type
    OutputArray map1
    OutputArray
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值