工业相机的标定
因为相机是一个有透镜的设备,透镜与CCD感觉元件都会产生变形或失真的情况。这是相机本身的叫内参。而相机与物体间也存在视角不同也会存在很大的变形或失真,这叫外参。
为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,在大多数情况下这些参数是必须通过实验与计算才能得到。这个求解内参,外参,畸变参数的过程就称之为相机标定,所以相机的标定是非常关键的。其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。
在Halcon中对相机进行标定配置,打开助手中的标定,填写相机的硬件参数。
通过halcon助手创建一个标定的模板,其中表示7行7列,两相邻圆心的距离为0.0125m, 黑圆的直径与两相邻圆心的距离的比例为0.5;后现生成描述文件和可打印的图像文件。
将生成的PS文件用PS软件打开后并打印出来,放在相机下以不同的角度拍多张照片,一般15~30张即可。
将拍完照的图片和刚保存的描述文件放在一起,先在设定中加载描述文件,而后在标定中加载图片让halcon进行标定。
当标定时有不合格的可以删除,也可以重新标定,当有15张左右合格以后,找一张比较正的做为参考图片。
通过以上步骤后点击标定就有参数了。
含有世界坐标的是外参,像素的内参并将其保存,然后插入代码就可以使用了。
用Halcon助手手动测量,将校准的参数导入进行测量
image_point_to_world_plane是把图像坐标转到世界坐标,不过这个世界坐标的Z坐标默认为0的,只有X,Y坐标,参数分别为相机内参,相机的外参,相机的坐标元素,坐标系的单位,输出X,Y世界坐标系下的坐标。
CameraParameters := ['area_scan_division',0.295093,1379.37,1.47739e-006,3.75e-006,580.414,257.035,1280,960]
CameraPose := [0.00475477,0.0363837,12.7847,359.703,294.79,181.018,0]
stop ()
* read_image (T1, 'H:/视觉/相机标定/t1.BMP')
* rgb1_to_gray (T1, GrayImage)
read_image (Image17, 'H:/视觉/相机标定/17.BMP')
rgb1_to_gray (Image17, GrayImage)
threshold (GrayImage, Regions, 26, 157)
connection (Regions, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 1223.78, 1433.57)
area_center (SelectedRegions, Area, Row, Column)
image_points_to_world_plane (CameraParameters, CameraPose, Row, Column, 'mm', X, Y)
X1:=-27.2536
Y1:=-37.4391
X2:=-39.714
Y2:=-37.4153
*计算两点之间的距离
distance_pp(X1, Y1, X2, Y2, Distance)
常用的算子如点到点的距离
常用的算子如点到直线的距离
线段到线段的最近和最远距离
直线到区域的最近和最远距离
线段到区域的最近和最远距离