当前位置: 首页 > news >正文

Halcon应用:相机标定之应用

提示:若没有查找的算子,可以评论区留言,会尽快更新

Halcon应用:相机标定之应用

  • 前言
  • 一、Halcon应用?
  • 二、应用实战
    • 1、如何应用标定(快速)
    • 2、代码讲解(重要)
      • 2.1 、我们还是以代码编写为主,助手只是便捷应用
      • 2.2、上代码:

前言

本篇博文主要用于记录学习Halcon中算子的应用场景,及其使用代码和图像展示。只讲通俗易懂使用方法,不讲原理,不讲原理,不讲原理,重要的事情说三遍。

相机标定:在图像测量过程以及机器视觉应用中为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定。
大白话就是看到图像中的点位知道真实世界的点位
然而为了准确获得点位,就需要对相机进行标定,不然因为相机存在的误差会导致点位不准确


提示:以下是本篇文章正文内容,下面案例可供参考,注意参数坐标的使用,能帮助你理解算子

一、Halcon应用?

Halcon 是一个强大的图像处理工具,该工具是为了解决机器视觉项目任务而创建的。

二、应用实战

1、如何应用标定(快速)

上篇文章中,我们使用标定助手可以获得相机的内参和外参,我们先以助手的方式进行使用标定的结果,实现准确测量。
打开测量助手,读取你对相机标定的内外参文件
*.cal 内参文件 *.dat 外参文件
在这里插入图片描述
接着我们通过调整边缘参数,得到自己想要的结果,直线测量,需要点击直线绘制,在原图上,通过调整参数,精确得到测量结果
这几个参数调整,建议自行鼠标滑动,观察结果,更好理解
在这里插入图片描述

2、代码讲解(重要)

2.1 、我们还是以代码编写为主,助手只是便捷应用

image points to world plane
( : : CameraParam, WorldPose. Rows, Cols. Scale : X. Y)
把图像坐标转换到世界坐标,不过这个世界坐标的Z坐标默认为0的,只有X,Y坐标。
CameraParam:相机内参
WorldPose:相机的位姿,就是外参
Rows.
Cols:相机上的像素坐标
Scale:坐标系的单位尺寸
X,Y:输出的世界坐标系下面的坐标

以下图右下角两个点为例:
在这里插入图片描述
先通过阈值处理得到相应的区域点:

2.2、上代码:

* gen_caltab (7, 7, 0.0125, 0.5, 'caltab.descr', 'caltab.ps')
CameraParameters :=[0.60791368,-3803.36,5.29333e-006,5.3e-006,448.399,475.255,980,788]
CameraPose :=[0.0385762,0.00199827,0.290272,2.13971,0.155591,177.26,0]
* 读取标定生成的标定板图像
read_image (Image, 'D:/HALCON_learn/理论/实战/实战2-相机标定/相机标定4.png')
rgb1_to_gray (Image, GrayImage)
threshold (GrayImage, Regions, 0, 109)
connection (Regions, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, ['area','row','column'], 'and', [282.81,319.53,231.91], [307.14,500,321.95])
area_center (SelectedRegions, Area, Row, Column)
image_points_to_world_plane (CameraParameters, CameraPose, Row, Column, 'mm', X, Y)
* 将坐标打印
X1:=3.51933
Y1:=-4.95336
X2:=16.1283
Y2:=-4.77367
distance_pp (X1, Y1, X2, Y2, Distance)
* Distance结果是12.6103
* 0.0125 相比较有0.1mm误差
* 这就是代码进行实现测量

在这里插入图片描述
至此:两点之间的实际物理距离就求解出来


如有问题,欢迎大家指出,谢谢!!!

相关文章:

  • AI助理iOS开发:Copilot for Xcode 下载与安装全指南
  • Spark-SQL与Hive集成及数据分析实践
  • Android15沉浸式界面顶部有问题
  • jinjia2将后端传至前端的字典变量转换为JS变量
  • TM1640学习手册及示例代码
  • 傲来云分享,负载均衡:提升网站性能与稳定性
  • 13.QT-DateTime Edit|Dial|Slider|日期计算器|调整窗口透明度|调整窗口大小|自定义快捷键(C++)
  • 在 UE5 编辑器中,由于游戏设置 -> EV100 设置,点击播放前后的光照不同。如何保持点击播放前后的光照一致?
  • 【HDFS入门】深入解析DistCp:Hadoop分布式拷贝工具的原理与实践
  • 利用课程编辑器创新教学,提升竞争力​
  • 【Spring Boot基础】MyBatis的基础操作:日志、增删查改、列名和属性名匹配 -- 注解实现
  • Kafka 生产者的幂等性与事务特性详解
  • C++--负载均衡在线OJ
  • Java 性能优化:如何利用 APM 工具提升系统性能?
  • 怎样用 esProc 将数据集中重复内容置空
  • .NET WPF 三维模型
  • 蓝桥杯 16.对局匹配
  • GPU高效利用率实战揭秘:蓝耘元生代VS传统云平台的降维打击
  • 解析三大中间件:Nginx、Apache与Tomcat
  • AOSP Android14 Launcher3——远程窗口动画关键类SurfaceControl详解
  • 神舟二十号任务完成最后一次全区合练,发射场做好发射前各项准备
  • 现货黄金价格站上3400美元,今年迄今累涨逾29%
  • 世界史圆桌|16-18世纪的跨太平洋贸易
  • 临清农商行回应监管处罚:系2023年问题,已经进行了整改
  • 路面突陷大坑致车毁人亡,家属称不知谁来管,长治当地回应
  • 3月赴美外国游客数量加速下滑