一 理论基础
关于针孔相机模型,参考博客;
关于鱼眼相机模型,参考参考文献[1][2]。
这里只需要知道我们这里使用的鱼眼相机模型是等距投影的鱼眼相机模型,即r=fθ(1),而针孔相机模型是透视投影,即r=ftanθ(2)。其中f是焦距focus,r是成像平面内某像素点到主光点principal point的距离,principal point是成像平面和主光轴的焦点,θ是入射光线和主光轴的夹角。根据(1)和(2),可以得到从正常图像上某点P(xc,yc)到鱼眼相机上某点P(xf,yf)的映射关系:
rf = f*arctan(rc/f)
二 OpenCV实现
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <cmath>
int main() {
cv::Mat srcImg;
srcImg = cv::imread("E:/Data Sets/ORIGINAL/data_road/training/image_2/um_000000.png");
if (srcImg.data != nullptr) {
std::cout << "Load Image Successfully" << std::endl;
}
const int f = 200;
std::cout << srcImg.type()