最近在搞鱼眼相机,这玩意儿不太好弄,因为资料都特别少,而且各个开源代码好像对鱼眼相机的定义都不太一样,也即模型不统一,现在做出了一点阶段性的成果,来总结一下
对于畸变参数,有描述径向的畸变参数k1,k2,k3,k4,也有描述切向的畸变参数p1,p2,这个都是在网上资料比较全的,对于鱼眼相机,据我理解的应该是两种描述方法。
一种就是opencv的通用描述方法,也就是k1,k2,p1,p2,k3,对于畸变情况比较大的相机,如鱼眼,启用k3,正常情况下k3=0
另一种就是cv::fisheye描述方法,畸变参数只有四个,k1,k2,k3,k4,这个就是opencv专门为鱼眼镜头创建的模型,也对应着kalibr中的pinhole-equidistant模型,这两个模型参数是可以通用的,亲测准确。
现在上去畸变的opencv代码
//图像去畸变部分///
cv::Size img_sizea;
// const char *imagename = "/home/taolihao/CLionProjects/undistort_tlh/left-0055.jpg";
// cv::Mat src = cv::imread(imagename);
// if(src.empty()) return -1;
img_sizea.width=1280;
img_sizea.height=1024;
cv::Mat distortiona = I.clone();
cv::Mat camera_matrixa = (cv::Mat_<double>(3, 3) << 541.1788, 0.0, 644.1565, 0, 539.5916,