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 ()
相关推荐
星马梦缘10 分钟前
强化学习实战7——用决策树打赢星际争霸II
人工智能·决策树·强化学习·deepmind·星际争霸·sc2
CoderJia程序员甲11 分钟前
GitHub 热榜项目 - 日榜(2026-04-11)
人工智能·ai·大模型·github·ai教程
ChatInfo11 分钟前
Etsy 把 1000 个 MySQL 分片迁进 Vitess:425TB 数据背后的真正问题不是性能,而是运维规模
数据库·人工智能·mysql
lifallen14 分钟前
Flink Agents:Python 执行链路与跨语言 Actor (PyFlink Agent)
java·大数据·人工智能·python·语言模型·flink
小二·15 分钟前
2026年4月技术热点深度解析:AI智能体攻防、量子安全与云原生新纪元
人工智能·安全·云原生
江瀚视野15 分钟前
京东健康综合门诊望京开业,京东医疗路在何方?
大数据·人工智能
飞凌嵌入式19 分钟前
如何用JishuShell在RK3588核心板上快速部署OpenClaw?
arm开发·人工智能·嵌入式硬件·openclaw
IT_陈寒19 分钟前
Vue的响应式更新把我坑惨了,原来是这个问题
前端·人工智能·后端
Tom·Ge20 分钟前
告别“猜谜式编程”!详解规范驱动开发(SDD)在企业AI开发中的最佳实践
人工智能·驱动开发
gyx_这个杀手不太冷静21 分钟前
大人工智能时代下前端界面全新开发模式的思考(一)
前端·人工智能·ai编程