Math 摄像机模型已知且固定时的鱼眼畸变校正

Math 摄像机模型已知且固定时的鱼眼畸变校正,math,geometry,computer-vision,projection,camera-calibration,Math,Geometry,Computer Vision,Projection,Camera Calibration,我有一个位置固定的摄像机,我们知道摄像机的细节。我读到photoshop可能会对不同相机模型的逆变换进行硬编码,然后逆变换将只是一个查找表 有谁能指导我如何构造那个查找表吗。我认为我需要有一个扭曲的和它的未扭曲的版本与我在一起。我也不知道该怎么做。如果我从完全相同的位置拍摄普通照片和鱼眼镜头照片,是否正确?拍摄两张具有不同特征点的平面照片。一个失真尽可能小,另一个有鱼眼失真。对于每个特征点,请注意未变形(x,y)和变形(x,y)坐标 然后需要在不规则点上使用一些2D插值方案。您可以考虑使用径向基

我有一个位置固定的摄像机,我们知道摄像机的细节。我读到photoshop可能会对不同相机模型的逆变换进行硬编码,然后逆变换将只是一个查找表


有谁能指导我如何构造那个查找表吗。我认为我需要有一个扭曲的和它的未扭曲的版本与我在一起。我也不知道该怎么做。如果我从完全相同的位置拍摄普通照片和鱼眼镜头照片,是否正确?

拍摄两张具有不同特征点的平面照片。一个失真尽可能小,另一个有鱼眼失真。对于每个特征点,请注意未变形(x,y)和变形(x,y)坐标

然后需要在不规则点上使用一些2D插值方案。您可以考虑使用径向基函数法或Shepard的逆距离加权法。请记住,将分别对x和y进行插值,并将其视为(x,y)的两个函数


一旦建立插值,畸变图像中的任何像素(具有坐标(X,Y))将引导您找到未畸变图像中相应的(X,Y)。您将把所有预计算的(x,y)存储在一个巨大的LUT中。

为了避免在不规则点上插值的可怕成本,我建议您定义一个简单的全局模型,例如低阶的二元多项式(例如3,具有10个自由度)。您将使用现有的点对应,通过最小二乘法拟合模型。这将是一个近似值,而不是真正的插值

经典理论使用围绕相机光轴建立的模型,在靠近图像中心的某个位置,通常具有圆对称性。这导致了一个复杂的非线性最小二乘问题

在我的建议(多项式)中,模型约束较少,方程保持线性


你不会放弃对每一个像素的变形模型的评价,即使增量计算可以节省几个周期。

你的问题有两个单独的问题要考虑:

  • 建立畸变模型,即两个变量D(x,y)=[Dx(x,y),Dy(x,y)]的二维函数,将理想(未畸变)图像坐标空间上的点映射到其畸变对应点

  • 使用模型扭曲扭曲的图像以进行校正

  • 问题2很简单:要快速计算扭曲,只需构建扭曲贴图,即伪彩色图像,其R通道编码X方向的位移,G通道编码Y方向的位移。由于扭曲通常是平滑函数,因此无需以全分辨率存储扭曲贴图。但是,在使用每个通道的可用位编码位移时必须小心,以免丢失精度-建议使用16位浮点(或整数编码固定精度浮点)。一旦知道了扭曲贴图,将其应用到图像上就是一个简单的插值问题,这通常由层合成工具执行

    问题1是困难的部分,因为答案取决于透镜的光学特性。如果已知透镜元件的设计和材料,理论上可以根据几何光学的第一原理建立封闭形式的模型,但实际上由于涉及的复杂性,很少这样做。因此,镜头设计者通常会依赖光线跟踪的模拟


    然而,在通常的实践中,透镜设计和制造的细节是不可用的,必须通过对图像的测量来估计失真。或者,正如您所注意到的,您可以利用其他人所做的工作,查阅已知镜头的畸变参数模型目录(或者使用嵌入此类目录的应用程序)

    您链接的文章作者提供的算法不需要查找表。它只需要两个可调参数。是的,但这是一个通用算法,有解决方案。我的问题是,我也知道摄像机的细节和位置。我实际上不想要一个通用的算法,因为它会保留一些失真。我想要一个基于查找表的方法,可以近乎完美(我想,因为我看到了photoshop的质量和它的非常好)。关于那篇文章,作者写道,“用户只是从列表中选择他们的设备,软件使用一个硬编码值表应用一个校正算法。”我想象查找表只是一个点网格,你在每个点上都放上x和y数字,对应于你想要那个特定像素移动的数量和方向。中心的点将始终为0,0。您可以在网格点之间插入像素的位置。您可以使用鱼眼镜头拍摄与相机纵横比相同的网格,以便网格的外缘与图片的外缘对齐。然后,在外缘网格与图片外缘对齐的距离处,使用普通镜头拍摄另一张照片。请记住,我们仍然不知道Photoshop的算法,所以所有这些都可能是错误的。你必须扫描每张照片以找到每一行点,并将每个点的位置与原始点进行比较。这不是一个容易的问题,是吗?你链接的原始文章的作者所写的简单算法开始听起来更有吸引力了。鱼眼扭曲对我来说是一个相对容易用简单的数学建模的问题。你说的不规则点是什么意思?假设我有100对未变形和变形的点。图像的总像素数为256*256。你的意思是我需要对256*256-100点进行插值以获得像素级的对应关系吗?我是指任意排列的点,而不是在直网格上。这使得国际米兰