我一直在试图弄清楚如何在两个平面之间采取单应性并将其转换为射影变换。Matlab自动做到这一点,但我一直在试图弄清楚Matlab如何实现转换。
您可以查看工具箱imagesimagesmaketform.m中的源代码
至少在编辑器中,您可以通过在函数名称上按F4来实现这一点。
单应性是一种投影变换,它将线映射到线,保持交叉比,但不保持平行度或其他相似度(角度,距离等)。单应性可以表示为一个齐次的3x3矩阵,并根据你的问题以许多(真的,许多)不同的方式计算。
最典型的是确定两个平面之间的4点对应关系,并使用直接线性变换(Direct Linear Transform, DLT)。DLT也有许多实现。如果你熟悉OpenCV,你可以很容易地使用cv::findHomography
(http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html?highlight=findhomography#findhomography)获得这样的单应性矩阵。
总的来说,我建议你看看Hartley &的"多视图几何"书。