自学内容网 自学内容网

opencv 未知函数记录-findHomography

1️⃣ 为什么 keystone 一定要用 findHomography

Keystone 的本质

  • 投影面 不与成像面平行

  • 产生 透视变换(projective transform)

数学上:

[x′y′w′]=[h11h12h13h21h22h23h31h321][xy1]\begin{bmatrix} x' \\ y' \\ w' \end{bmatrix} = \begin{bmatrix} h_{11}&h_{12}&h_{13}\\ h_{21}&h_{22}&h_{23}\\ h_{31}&h_{32}&1 \end{bmatrix} \begin{bmatrix} x\\y\\1 \end{bmatrix}​x′y′w′​​=​h11​h21​h31​​h12​h22​h32​​h13​h23​1​​​xy1​​

8 自由度
❌ 仿射(6 DOF)/ 相似(4 DOF)都不够

👉 所以:

  • estimateAffinePartial2D

  • estimateAffine2D

  • findHomography

6️⃣ 如何判断“是否真的需要 Homography”⚠️

👉 判定技巧(非常实用)

1️⃣ 用 estimateAffine2D 拟合
2️⃣ 看残差分布:

  • 边缘残差呈方向性梯度 → 透视存在

  • 整体随机小误差 → 仿射够用

或:


|h31| + |h32| ≈ 0 → 非透视 |h31| + |h32| > 1e-4 → 透视显著

7️⃣ 从 H 中读出“物理意义”(进阶)

虽然 homography 不直接给角度,但可以:

① 平面姿态恢复(需内参 K)


cv::Mat K; // 相机内参 std::vector<cv::Mat> Rs, Ts, Ns; cv::decomposeHomographyMat(H, K, Rs, Ts, Ns);

👉 可得到:

  • 投影平面相对于相机的 倾角

  • 法向量

  • 平移方向

这一步在你做 投影光学 / 显示模组装调 时非常关键。


原文地址:https://blog.csdn.net/qq_32180363/article/details/156643197

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!