面扫描(除法),多扫描(多项式)

halcon标定助手里选择摄像机模型时,要你选择面阵相机的类型,有:

面扫描(除法)、面扫描(多项式)

image.png

由于翻译的问题,这两种类型有时也称为:

division(分工)模型和polynomial(多项式)模型


下面是两者的区别:


3D相机模型

面扫描针孔相机:面扫描相机使用一个镜头来进行中心投影,图像可能会出现径向和切向畸变。

面扫描远心相机:面扫描相机使用一个远心镜头来进行平行投影,图像可能会出现径向和切向畸变。

线扫描针孔相机:线扫描相机使用一个镜头来进行中心投影,图像可能会出现径向畸变。


对于面扫描相机,点P(C)的投影给出了相机坐标系到亚像素图像的过程,它包括了以下几个步骤:1.点投影到图像平面,i.e:相机的传感器平面。如果是面扫描针孔相机模型,如果焦距在CamParam(相机参数)中大于0,这个投影就可以描述成以下问题:

P(C) = {X, Y, Z}

U = Focus * X / Z;

V = Focus * Y / Z;


如果是面扫描远心相机模型,如果焦距在CamParam(相机参数)中为0,假设摄像机镜头进行的平行投影,在这种情况下,这个投影就被描述成下面的问题:

P(C) = {X, Y, Z}

U =  X ;

V =  Y ;


对于面扫描相机的两种类型,镜头畸变模型被划分成division(分工)模型和polynomial(多项式)模型。division(分工)模型使用一个参数(Kappa)来表示径向畸变。

如果是division(分工)模型,从畸变图像平面坐标系转换到非畸变图像平面坐标系使用如下公式:

U = u / (1 + Kappa*(u*u + v*v))

V = v/(1+ Kappa*(u*u + v*v))


从非畸变图像平面坐标系到畸变图像平面坐标系的反变换使用如下公式:

u = (2*U)/(1 + sqrt(1 - 4*Kappa*(U*U + V*V)))

v = (2*V)/(1 + sqrt(1 - 4*Kappa*(U*U + V*V)))


如果是polynomial(多项式)模型,使用3个参数K1,K2,K3来表示径向畸变,两个参数P1,P2来表示切向畸变,从畸变图像平面坐标系转换到非畸变图像平面坐标系使用如下公式:

U = u + u*(K1*r*r + K2*r*r*r*r + K3*r*r*r*r*r*r)+ 2*P1*u*v + P2*(r*r + 2*u*u)

V = v + v*(K1*r*r + K2*r*r*r*r + K3*r*r*r*r*r*r)+ P1*(r*r + 2*v*v)+ 2*P2*u*v

r = sqrt(u*u + v*v)


这个问题不能进行反变换,因此,畸变图像平面坐标必须被计算出从非畸变图像平面坐标。

两种畸变模型的使用,在StartCamParam中通过变量的数目来识别,如果StartCamParam包含8个值,说明是division(分工)模型。如果StartCamParam包含12个值,说明是polynomial(多项式)模型。


最后,点从图像平面坐标系转换到图像坐标系即像素坐标系:

c = u / Sx + Cx;

r = v / Sy + Cy;


对于线扫描相机,在相机与目标物体的相对运动建立模型。在HALCON中,假设这个运动是由以下几个条件构成的:

1.相机沿一条直线以恒定的速度移动。

2.相机的方向是固定的。

3.所有的图像都是相对运动的结果。


这个运动被描述成一个运动矢量V=(Vx, Vy, Vz),在[meter/scanline]相机坐标系中,假设一个固定的物体,运动矢量描述相机的运动。实际上,这个过程相当于一个运动的物体沿-V方向相对于固定相机的运动。


这个线扫面相机的坐标系的定义如下:这个坐标系的中心就是投影的中心。Z轴和光轴同向,因此可见点就有一个Z坐标;Y轴同时垂直于传感器线和Z轴,因此这个运动矢量会有一个Y坐标;X轴同时垂直于Y轴和Z轴,从而,X轴,Y轴和Z轴形成了一个坐标系。


在图像采集过程中,相机相对于物体的移动,相机坐标系也会相对于物体运动。图像的每条线是从不同角度拍摄的,这意味着每条线都有不同的姿势。为了使事情更简单,在HALCON中,所有的转换从世界坐标系到相机坐标系,是基于第一条图像线的姿势。在点投影到图像过程中,这个运动矢量V信息就被包含了。因此,基于第一条图像线的姿势可以有函数


find_marks_and_pose 和 camera_calibration来计算返回。

对于线扫描相机,点的投影从相机坐标系到图像平面坐标系的定义如下:


假设:P(c) = {X, Y , Z}


求解m,u,t:

 m*D*u  = x - t*Vx;

- m*D*pv = y - t*Vy;

 m*Focus = z - t*Vz;

 D = 1 / (1 + Kappa*(u*u + pv*pv))

 pv=Sy*Cy


这已经包含了径向畸变的补偿,注意:这个线扫描相机只能用于division(分工)模型。

最终,点被转换到图像坐标系:


c = u/Sx + Cx

r = t


--------------------- 

作者:hackpig

来源:www.skcircle.com

版权声明:本文为博主原创文章,转载请附上博文链接!


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864