面扫相机
![d8fb7ccd841c4dcfd479e38a06c009bb.png](https://img-blog.csdnimg.cn/img_convert/d8fb7ccd841c4dcfd479e38a06c009bb.png)
图1: 针孔相机的透视映射
图1展示了一个针孔相机产生的透视映射。世界点P通过镜头的光中心映射到图像面上的P‘,其距离光中心的距离为f(焦距)。实际上,术语“焦距”不是很正确,其对于无限的物距将是合适的。为了简化的目的,在下面的描述中,即使“图像距离”被认为,也总是用术语“焦距”。值得注意的是,在图像标定以后,焦距还有焦点是不能被改变的。
尽管实际上图像面位于镜头光中学的后面,其很容易假设它位于距离为f的光中心的前面,如图2所示。这样就会造成图像坐标系统将和像素坐标系统对准(行坐标向下增加,列坐标向右增加),简化了大多数的计算。
![03c7ad9759ec8284f8d4a85c40e336d3.png](https://img-blog.csdnimg.cn/img_convert/03c7ad9759ec8284f8d4a85c40e336d3.png)
图2: 图像平面和虚拟图像平面
转化到相机坐标(外部相机参数)
现在,我们准备去描述在3D世界坐标到2D图像平面的物体映射,及其对应的相机参数。首先,我们应该注意到,点P是在世界坐标系统(WCS)找那个给定的。为了将其映射到图像平面,它们应该分别平行于图像列轴和行轴,且z轴是垂直于图像平面的。
从CCS到WCS的转换是一个刚性的转换,其可以用一个位姿,或等价的通过一个齐次转换矩阵
![4969099864d6eacd5e4a241386c4a3c8.png](https://img-blog.csdnimg.cn/img_convert/4969099864d6eacd5e4a241386c4a3c8.png)
来描述。因此,点P的相机坐标
![1f8fed0a196d01b6f14ddc241a6c7b3e.png](https://img-blog.csdnimg.cn/img_convert/1f8fed0a196d01b6f14ddc241a6c7b3e.png)
可以从它的世界坐标
![ff491e9d417f895aac5e3be1be5565f5.png](https://img-blog.csdnimg.cn/img_convert/ff491e9d417f895aac5e3be1be5565f5.png)
简单的计算得到:
![7dc9279153a55d49df873ba41d372d57.png](https://img-blog.csdnimg.cn/img_convert/7dc9279153a55d49df873ba41d372d57.png)
转换的6个参数(3个平移
![49896d6dc0953880d331082e869ec647.png](https://img-blog.csdnimg.cn/img_convert/49896d6dc0953880d331082e869ec647.png)
和
![8dfa79df790eb95ebe3a31f575f686cf.png](https://img-blog.csdnimg.cn/img_convert/8dfa79df790eb95ebe3a31f575f686cf.png)
, 3个旋转
![80cd6b93e390707e9d3dda347d4ab3ff.png](https://img-blog.csdnimg.cn/img_convert/80cd6b93e390707e9d3dda347d4ab3ff.png)
![e054d90d21d47b40f313a9f7fc26ac51.png](https://img-blog.csdnimg.cn/img_convert/e054d90d21d47b40f313a9f7fc26ac51.png)
和
![73ba7f009c9721e7785971bde44f183d.png](https://img-blog.csdnimg.cn/img_convert/73ba7f009c9721e7785971bde44f183d.png)
)被称位相机的外部参数,因为其决定了相机相对于世界的位置。在HALCON中,它们被存储为一个位姿,例如一段描述平移和旋转顺序的代码。
映射
下一步就是在CCS中给点的3D点映射到图像坐标系统(IPCS)中。对于针孔模型,映射是一个透视映射,其被给定为:
![44f5a00cb6c0d0e171b39c1ef480a293.png](https://img-blog.csdnimg.cn/img_convert/44f5a00cb6c0d0e171b39c1ef480a293.png)
对于远心相机模型,映射是一个平行映射,其被出为:
![e36327ce20df1b97f88ed287ce7b51a5.png](https://img-blog.csdnimg.cn/img_convert/e36327ce20df1b97f88ed287ce7b51a5.png)
其中m=magnification。如公式看到的,物体到相机的距离z对图像坐标没有任何的影响。
镜头畸变
在映射到图像平面后,镜头畸变将
![65ed95e989f026d7e62de1114653d906.png](https://img-blog.csdnimg.cn/img_convert/65ed95e989f026d7e62de1114653d906.png)
的坐标
![9f13744de3522cc2e487755168a6d4c5.png](https://img-blog.csdnimg.cn/img_convert/9f13744de3522cc2e487755168a6d4c5.png)
修改为了
![26217dd71900326760d8b04bc9253262.png](https://img-blog.csdnimg.cn/img_convert/26217dd71900326760d8b04bc9253262.png)
。效果图如图3所示:如果没有镜头畸变,映射点
![8ccdd19daebce65ab8ad1300e012cc7b.png](https://img-blog.csdnimg.cn/img_convert/8ccdd19daebce65ab8ad1300e012cc7b.png)
将位于从点P穿过光心的直线上,如图3的点线段。镜头畸变造成了点
![8ccdd19daebce65ab8ad1300e012cc7b.png](https://img-blog.csdnimg.cn/img_convert/8ccdd19daebce65ab8ad1300e012cc7b.png)
位于不同的位置上。
![6e04893921a467a8b361cf435f33e8a0.png](https://img-blog.csdnimg.cn/img_convert/6e04893921a467a8b361cf435f33e8a0.png)
图3: 镜头畸变效果示意图
镜头畸变是一种可以单独在图像平面就可以被构造的转换,如:3D信息是没有必要的。在HALCON中,畸变要么用划分模型来构造,要么用多项式模型来构造。
划分模型用一个参数(K)来构造径向畸变,如果使用的是划分模型,下面的方程将被变形的图像平面坐标转换为没有变形的图像平面坐标:
![c3df26dbbf54678bfe9ecd76649f9416.png](https://img-blog.csdnimg.cn/img_convert/c3df26dbbf54678bfe9ecd76649f9416.png)
方程可以做个变换,如果使用的是划分模型,下面的方程将没有畸变的坐标转化为畸变坐标:
![368ae271c935dd73b6404da77d7934c8.png](https://img-blog.csdnimg.cn/img_convert/368ae271c935dd73b6404da77d7934c8.png)
参数K构造了径向畸变的量级。如果K是负数,畸变是桶性;K是正数,其是枕形的(如图4所示)
![b5029b72df0f7b1f480820048819611d.png](https://img-blog.csdnimg.cn/img_convert/b5029b72df0f7b1f480820048819611d.png)
图4:用划分模型构造的径向畸变效果图,K>0(左边),K=0(中间),K<0(右边)
多项式模型用三个参数
![063b75f4c1e37665a98da3801d22d692.png](https://img-blog.csdnimg.cn/img_convert/063b75f4c1e37665a98da3801d22d692.png)
去构造径向畸变,两个参数
![e6e3e88ede4ad7fc80f56c4116f0ec9f.png](https://img-blog.csdnimg.cn/img_convert/e6e3e88ede4ad7fc80f56c4116f0ec9f.png)
来构造离心畸变。如果使用的是多项式模型,下面的方程将畸变的图像平面坐标转换为没有畸变的图像平面坐标:
![e7173485a837dc43b89ca629c4ca59f1.png](https://img-blog.csdnimg.cn/img_convert/e7173485a837dc43b89ca629c4ca59f1.png)
其中
![9ad08b60ca0a2e283cec419485fae544.png](https://img-blog.csdnimg.cn/img_convert/9ad08b60ca0a2e283cec419485fae544.png)
。方程不能够转换,因此,畸变坐标必须数值地从非畸变图像平面坐标计算而来。
一些用多项式构造的这种畸变的例子如图5所示。
![14b5180679e931c0677bb57ba4616a43.png](https://img-blog.csdnimg.cn/img_convert/14b5180679e931c0677bb57ba4616a43.png)
图5:用不同参数值的多项式模型构造的畸变效果图,
像素坐标的转换
最后,点
![43c566962da0525771af7f895bfacafb.png](https://img-blog.csdnimg.cn/img_convert/43c566962da0525771af7f895bfacafb.png)
将从图像平面坐标系统转换到图像坐标系统(像素坐标系统):
![9f7da710679309e8edaba8a3d3a244ac.png](https://img-blog.csdnimg.cn/img_convert/9f7da710679309e8edaba8a3d3a244ac.png)
这里,
![84a1b5fcaa334d4f6b6ff5707df756b6.png](https://img-blog.csdnimg.cn/img_convert/84a1b5fcaa334d4f6b6ff5707df756b6.png)
和
![42d2f7280c4da83e710c9339f75cae81.png](https://img-blog.csdnimg.cn/img_convert/42d2f7280c4da83e710c9339f75cae81.png)
是尺度因子。对于针孔相机,它们代表了相机CCD芯片上传感器元素的水平距离和垂直距离。对于远心镜头的相机,它们代表了在世界坐标下一个像素的大小(不考虑镜头的畸变)。点
![12bcc384dd2a1b075584f64db2aa64a0.png](https://img-blog.csdnimg.cn/img_convert/12bcc384dd2a1b075584f64db2aa64a0.png)
是图像的主点。对于针孔相机,这是光学中心到图像平面的垂直映射。它也定义了径向畸变的中心。对于远心相机,没有光学中心存在。因此,主点仅仅是被径向畸变所定义的。
参数
![8cb3d404cdbab86acf9bbce30672e47e.png](https://img-blog.csdnimg.cn/img_convert/8cb3d404cdbab86acf9bbce30672e47e.png)
被称为相机的内参,因为他们决定了3D到2D的映射。