OpenCV相机标定与3D重建(42)计算逆向矫正映射(inverse rectification map)函数initInverseRectificationMap()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

计算投影和逆矫正变换映射。本质上,这是 initUndistortRectifyMap 的逆操作,以适应投影仪(‘逆相机’)在投影仪-相机对中的立体校正。

该函数计算联合投影和逆校正变换,并以 remap 所需的地图形式表示结果。投影后的图像看起来像是原始图像的一个扭曲版本,但一旦通过投影仪投射,应该视觉上与原始图像匹配。对于单目相机,newCameraMatrix 通常等于 cameraMatrix,或者可以通过 getOptimalNewCameraMatrix 计算以更好地控制缩放。对于投影仪-相机对,newCameraMatrix 通常设置为由 stereoRectify 计算得到的 P1 或 P2。

投影仪在坐标空间中根据 R 不同地定向。对于投影仪-相机对,这有助于像 initUndistortRectifyMap 对相机所做的那样对齐投影仪,以创建一个立体校正对。这允许两幅图像上的极线变得水平并且具有相同的 y 坐标(对于水平对齐的投影仪-相机对而言)。

该函数构建了用于 remap 的逆映射算法的地图。也就是说,对于目标图像(即投影和逆校正后的图像)中的每个像素 (u, v),函数计算源图像(即原始数字图像)中对应的坐标。应用以下过程:
newCameraMatrix x ← ( u − c ′ x ) / f ′ x y ← ( v − c ′ y ) / f ′ y Undistortion though   equation   shown   is   for   radial   undistortion,   function   implements   cv::undistortPoints() r 2 ← x 2 + y 2 θ ← 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 1 + k 4 r 2 + k 5 r 4 + k 6 r 6 x ′ ← x θ y ′ ← y θ Rectification [ X   Y   W ] T ← R ∗ [ x ′   y ′   1 ] T x ′ ′ ← X / W y ′ ′ ← Y / W cameraMatrix m a p x ( u , v ) ← x ′ ′ f x + c x m a p y ( u , v ) ← y ′ ′ f y + c y \begin{array}{l} \text{newCameraMatrix}\\ x \leftarrow (u - {c'}_x)/{f'}_x \\ y \leftarrow (v - {c'}_y)/{f'}_y \\ \\\text{Undistortion} \\\scriptsize{\textit{though equation shown is for radial undistortion, function implements cv::undistortPoints()}}\\ r^2 \leftarrow x^2 + y^2 \\ \theta \leftarrow \frac{1 + k_1 r^2 + k_2 r^4 + k_3 r^6}{1 + k_4 r^2 + k_5 r^4 + k_6 r^6}\\ x' \leftarrow \frac{x}{\theta} \\ y' \leftarrow \frac{y}{\theta} \\ \\\text{Rectification}\\ {[X\,Y\,W]} ^T \leftarrow R*[x' \, y' \, 1]^T \\ x'' \leftarrow X/W \\ y'' \leftarrow Y/W \\ \\\text{cameraMatrix}\\ map_x(u,v) \leftarrow x'' f_x + c_x \\ map_y(u,v) \leftarrow y'' f_y + c_y \end{array} newCameraMatrixx(ucx)/fxy(vcy)/f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

村北头的码农

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

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

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

打赏作者

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

抵扣说明:

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

余额充值