分辨率测试卡失真实例
下面是使用相机拍摄的分辨率测试卡图在软件中的分析情况。其实在软件是会显示采样的代码信息的,但是对于一般不是非常了解代码的人或不了解摄像行业的人这些代码就像“天书”一样难以理解。我们这里只捡一些对于用户使用的信息给您介绍。
代码只是一个特定的实现,但是这些概念可以用任何编程语言来提取和应用。注意下面,我们使用后缀'_d'和'_u'的规定分辨率测试卡的识别失真和未失真图像/坐标相关的变量,并使用大写变量(如RHO)来识别测试和输出图像(将在下面隐含使用的属性)。
(1)将分辨率测试卡SFRPlus图像加载到软件中,并对其进行分析,以确定逆变换算系数(显示在Rescharts交互模块中)。(或者,将图像加载到Dot Pattern模块中并从中检索LGD系数,并将其转换为逆变换系数,然后跟随其余步骤)。将它们加载到MATLAB中。
(2)相对于分辨率测试卡图像的中心,定义该观察(失真)图像的每个像素位置的空间坐标。例如,由于该测试图像是4288×2872像素,所以左上像素坐标为(-2143.5,-1435.5)。
(3)将这些坐标转换为极坐标,因此我们只能操纵径向分量(这里称为RHO)。我们还对径向坐标进行归一化,然后缩放,使得未失真图像的中心到角距离最终将归一化为1。
(4)注意:作为一个微妙的点,THETA和RHO_d对变量实际上定义了空间坐标两种方式:显性和隐性。它们的值定义显式坐标,即(THETA(1,1),RHO(1,1))定义分辨率测试卡图像的左上角像素的角和径向坐标。它们也通过二维阵列隐含地定义一组坐标,这组坐标具有自然的顺序和结构。即使我们更改这两个数组的(1,1)条目的值,它们仍然是每个数组的左上角条目。该点的显式坐标已经改变,但隐含的坐标保持不变。
我们现在将测量的失真应用于径向坐标,使得显式径向距离与观察图像中该点的径向距离相匹配。如上所述,观察到的图像中的失真位置现在通过阵列中的隐含位置与图像阵列中的未失真位置相关联。我们使用隐式数组元素位置作为未失真图像的真实坐标,并将显式数组值作为映射到失真图像中的点以从中抽出样本。
注意,我们实际上没有正向变换多项式,有只是软件返回的逆多项式。这可以通过拟合一个新的(反向)多项式来反转。
(5)我们现在有X_d,Y_d数组,其隐式坐标是未失真图像的坐标,其显式值表示与它们相关联的观察图像中的采样点。我们可以直接在interp2()函数中直接使用这些查询(抽样)点。
总结
现在我们可以看到无失效果,特别注意上下的直线。还要注意的是,这个无失真图像的边缘周围有黑色区域 - 当然,原始图像中没有任何信息用于有效填写。
当然,除了测试图形图之外,我们现在还可以对场景进行静音。现在我们已经使用分辨率测试卡和I测试软件来表征摄像机系统本身造成的失真,我们可以消除任何其他图像所需的失真。 由于建筑的假想直线是引人注目的失真的常见来源,所以我们在漫画照明(即阴沉)的一天在我们位于科罗拉多州博尔德的办公大楼的照片上展示了这一点。