HALCON相机标定
相机标定简介:
首先,相机会产生畸变,即实际图像和拍摄图像不一致,可以是凸性也可以是凹性形变,相机标定的过程就是将畸变图像还原为原始图像,并将图像中的像素坐标转换为世界坐标。
形如:相机内参 CameraParameters 和相机外参 CameraPose
CameraParameters := ['area_scan_division',0.000775057,-131550,6.66883e-07,6.67e-07,796.074,594.063,1600,1200]
CameraPose := [0.000732489,0.0324252,0.533711,359.244,357.29,0.365181,0]
1.标定板生成
用gen_caltab算子来制作一个标定板,具体见深入理解halcon相机标定_halcon标定-CSDN博客
gen_caltab( : : XNum, YNum, MarkDist, DiameterRatio, CalPlateDescr, CalPlatePSFile : )
2.标定板摆放
标定板数量9-16张为宜,标定板占标定图像1/3到1/4,可以偏离标定板所在平面一定角度。
3.怎么用halcon进行相机内外参标定?
连接好相机后,打开相机驱动软件看相机是否正确连接,再更改设置里的网络和internet中IP4地址和掩码为驱动软件上显示的相应内容。
打开halcon窗口的image acquisition,自动检测,连接设备,实时显示图像。
也可通过相机驱动软件进行拍摄存储,拍摄图像存放置指定文件夹。
通过上述操作得到标定描述文件后,打开halcon的celarbation窗口:查询相机所属型号的焦距、像元。
进一步,选标定==>图像文件==>加载存储的图像
标志失败原因:1)打光不好,过亮、过暗
2)对焦不清晰
3)标定板的对比度不够(>128)
去除标志失败点图像,适当移除部分品质不好的图像,选定方向较正的图像作为参考位姿,点击标定。
得到生成结果
进一步,代码生成,
可在halcon代码里看到生成的相机内外参数
示例代码如下:
CameraParameters := ['area_scan_division',0.000733146,-131210,6.66914e-07,6.67e-07,794.794,595.823,1600,1200]
CameraPose := [0.00132212,0.0316434,0.504834,359.297,357.443,0.364191,0]read_image (Image, 'C:/ProgramData/Galaxy/userdata/top_camera/Pic_20250415192151821.bmp')rgb1_to_gray (Image, GrayImage)
threshold (GrayImage, Regions, 4, 100)
connection (Regions, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and',300,1000.5)
select_shape (SelectedRegions, SelectedRegions, 'column', 'and', 525.7, 960)
area_center (SelectedRegions, Area, Row, Column)at_colum := [Column[0],Column[1]]
at_row := [ Row[0],Row[1]]gen_contour_polygon_xld (Contour,at_row , at_colum)
image_points_to_world_plane (CameraParameters, CameraPose, at_row,at_colum, 'mm', X, Y)
x1 := X[0]
x2 := X[1]
y1 := Y[0]
y2 := Y[1]
distance_pp (x1, y1, x2, y2, Distance)
stop ()