halcon中的坐标系相关

一、定义

世界坐标系:真实世界中物体实际位置(三维)
相机坐标系:以镜头光心为原点,光轴为Z轴(三维)
图像物理坐标系:以成像图像中心维原点(二维)
像素坐标系:原点在图像左上角(二维)

二、详细解释

1、世界坐标系(刚性变换到)-----------相机坐标系    (外参R与t)   

刚性变换: 只有物体的位置(平移变换)和朝向(旋转变换)发生改变,而形状不变,得到的变换称为刚性变换。刚性变换是最一般的变换。

任何一个坐标系的建立,主要是原点位置坐标轴方向。在相机标定的过程中,需要定义世界坐标系。世界坐标系便是我们看到的实际物理世界,那么怎么定义世界坐标系呢?答案就在halcon提供的圆点标定板上。

世界坐标系是三维的(原点自定义,定义在阵列标定板中心上,每幅图都不一样)示例图为:

根据标定板的左上角三角符号可以判定世界坐标系*XY*轴方向,*Z*轴方向根据右手螺旋定则判定。

2、相机坐标系(透视投影,3D到2D)-----------到图像物理坐标 (焦距f)

3、图像物理坐标系(平移)-------------到图像像素坐标系 (u0,v0)也是内参

像素坐标系便是我们从halcon窗口里看到的图像像素坐标,查看一个图像的像素坐标,只需要按住Ctrl键,鼠标在图像上移动,便可以看到当前鼠标位置的图像像素坐标值。谨记,在仿射变化等图像处理中都是以像素坐标系下开展的

窗口坐标系指的是建立图像显示窗口的大小,比如说

1

dev_open_window (0, 0, 512, 512, 'black', WindowHandle)

这里面的512便是指的是窗口的大小,跟图像像素无关。

总结下各坐标系的定义:

世界坐标系:真实世界中物体实际位置(三维)
相机坐标系:以镜头光心为原点,光轴为Z轴(三维)
图像物理坐标系:以成像图像中心维原点(二维)
像素坐标系:原点在图像左上角(二维)

因此,图像测量项目中,从世界坐标系到像素坐标系是一个三维到二维的过程,要找到矩阵转换中相关系数(内参与外参)


相关的halcon算子是:

1

2

3

4

5

6

//像素坐标系到世界坐标系

image_points_to_world_plane()

//三维坐标点的转换

affine_trans_point_3d()

//相机坐标系下的点转换为像素坐标系

project_3d_point()

Halcon中的位姿说明

位姿指的是位置和姿态。位姿是一个坐标系相对于另一个坐标系!牵扯到两个坐标系有6个参数,x,y,z,rx,ry,rz。代表的是坐标系原点的相对x,y,z平移和坐标系坐标轴方向的相对旋转。

必须注意的是:halcon中pose的值都是以**米**为单位的,而**机器人**常用**毫米**为单位,所以在一些手眼标定的项目中注意单位的换算(这都是曾经做项目过程中血的教训啊)

代表的是世界坐标系相对于camera坐标系(注意是谁相对于谁)

位姿可以转换成齐次坐标矩阵,其实质是数学表达方式的改变
在Halcon中,HomMat3D,是3维齐次坐标矩阵,4*4类型
HomMat2D,是2维齐次坐标矩阵,3*3类型(关于为什么矩阵表示齐次坐标系时会增加一行,大家可以自行百度学习一下哦)

在Halcon中关于pose的算子有:

1

2

3

4

5

6

7

//将pose转化为齐次坐标矩阵

hom_mat3d_to_pose()

find_marks_and_pose()

//设置新的pose

set_origin_pose()

//将齐次坐标矩阵转化为pose

pose_to_hom_mat3d()

在Halcon中有关于手眼标定,眼在手外的示例例子中:
obj:标定板坐标系(世界坐标系) 【动】
cam:相机坐标系 【 静】
tool:工具坐标系(丝杆末端)【动】
base:机器人基坐标系 【静】

2个移动坐标系,2个静止坐标系(4个坐标系形成闭环!!!)

学习Halcon做手眼标定一定要掌握位姿的基础理论。

结尾

本篇博客对halcon中坐标系和位姿做了说明,其实理解这些原理不单单有助于理解halcon,在机器人控制技术,自动化技术上都会有很好的帮助,大家在学习的过程中不仅仅要知道逻辑,更是要对基本理论有所了解,这才是提高技术水平的不二法门!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/664670.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

题目:有1,2,3,4共四个数字,能组成多少个不相同而且无重复数字的三位数有多少个,都是多少?lua

这是作者的思路, 创建三个表, 第一个数是从四个数遍历, 第二个是数剔除第一个数进行遍历 第三个是剔除第一第二个数遍历 脚本如下 local a{1,2, 3, 4} local b{} local c{} local d{} local function copy(tbl) local ctbl{} for k,v in…

MySQL 安装配置 windows

一、下载 去官网MySQL :: MySQL Downloads 下载社区版 然后根据自己的系统选择 直接下载。 二、安装 点击安装程序 这边看样子缺少东西。 去这边下载 Latest supported Visual C Redistributable downloads | Microsoft Learn 然后再一次安装mysql 三、配置 安装完成后&a…

记录关于node接收上传文件formData踩的坑

1.vue2使用插件formidable实现接收文件,首先接口不可以使用任何中间件,否则form.parse()方法不执行。 const express require(express) const multipart require(connect-multiparty); const testController require(../controller/testController)/…

WordPress SMTP发信避坑指南

前言 Clip_2024-01-31_19-46-18803285 10.5 KB 目前不少主题已经内置了SMTP发信功能,这是因为WordPress自带的mail()函数发信时基本无法发送。 但是在之前(约2021年末)貌似可以通过WordPress自带的函数发信,并且收信方提示由xxx代…

Request Response 基础篇

Request & Response 在之前的博客中,初最初见到Request和Response对象,是在Servlet的Service方法的参数中,之前隐性地介绍过Request的作用是获取请求数据。通过获取的数据来进行进一步的逻辑处理,然后通过对Response来进行数…

C# Onnx yolov8 水表读数检测

目录 效果 模型信息 项目 代码 训练数据 下载 C# Onnx yolov8 水表读数检测 效果 模型信息 Model Properties ------------------------- date:2024-01-31T10:18:10.141465 author:Ultralytics task:detect license:AGPL-…

c语言---访问越界之后死循环的原因

目录 死循环的概念环境题目代码运行结果对代码发生情况进行解释对i的地址和arr[12]地址一样的解释注意总结 死循环的概念 简单来说,死循环就是指无法靠自身的控制终止循环,在编程中,则是靠自身控制无法终止的程序。即在某一时刻,…

uniapp基于Android平台的校园生活服务交流论坛系统(二手,失物招领 -跑腿) 小程序hbuiderx

作为一款APP的校园论坛系统,面向的是大多数学者,软件的界面设计简洁清晰,用户可轻松掌握使用技巧。在调查之后,获得用户以下需求: (1)用户注册登录后,可进入系统解锁更多功能&#x…

Windows网络常用的11个命令,ping、tracert、arp、ipconfig、netstat、telnet等

1.ping命令 ping是个使用频率极高的实用程序,主要用于确定网络的连通性。ping能够以毫秒为单位显示延迟。如果应答时间短,表示数据报不必通过太多的路由器或网络,连接速度比较快。ping还能显示TTL(Time To Live&#…

AspNet web api 和mvc 过滤器差异

最近在维护老项目。定义个拦截器记录接口日志。但是发现不生效 最后发现因为继承的 ApiController不是Controller 只能用 System.Web.Http下的拦截器生效。所以现在总结归纳一下 Web Api: System.Web.Http.Filters.ActionFilterAttribute 继承该类 Mvc: System.Web.Mvc.Ac…

客户端和服务端的简介

Client 和 Server 客户端(Client) 或称用户端,是指与服务器相对应,为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,一般安装在客户机上,需要与服务端互相配合运行。例如:下载 Q…

STM32GPIO输入(按键控制LED、光敏电阻控制蜂鸣器实例)

文章目录 一、介绍传感器模块介绍硬件电路c语言数据类型 二、实例按键控制LED接线图代码实现 光敏电阻控制蜂鸣器组装线路代码实现 相关函数解释 一、介绍 传感器模块介绍 硬件电路 上两种按下时为0,下两种按下时为1。 c语言数据类型 现在常用stdint头文件所定…

BeanDefinitionRegistry学习

Spring版本5.1.x 简介 在Spring框架中,BeanDefinitionRegistry是一个接口,它主要用于向注册表中注册BeanDefinition实例,完成注册的过程。该接口的主要方法是registerBeanDefinition,用于将一个BeanDefinition实例注册到注册表中…

【zip密码】zip压缩包的打开密码忘了,怎么办?

Zip压缩包设置了密码,解压的时候就需要输入正确对密码才能顺利解压出文件,正常当我们解压文件或者删除密码的时候,虽然方法多,但是都需要输入正确的密码才能完成。忘记密码就无法进行操作。 那么,忘记了zip压缩包的密…

一张证书如何改变职业生涯?程序员必看!

随着信息产业的迅猛发展,对行业人才的需求也在逐年扩大。据统计,未来五年,我国对信息化人才的总需求量将高达1500万至2000万人。以软件开发为例,我国对软件人才的需求正以每年20%的速度递增,每年新增的需求接近百万。计…

1 初识JVM

JVM(Java Virtual Machine),也就是 “Java虚拟机”。 对于第三点功能:即时编译 常见的JVM 默认安装在JDK中的虚拟机为HotSpot:可以用“java -version”进行查看

云原生 API 网关链路追踪能力重磅上线

云原生API网关介绍 云原生 API 网关是腾讯云基于开源网关推出的一款高性能高可用的云原生 API 网关产品,作为云上流量入口,集成请求分发、API 管理、流量监控、访问限制等功能,是微服务架构和容器架构中的重要组件。 TSE 云原生 API 网关提…

数据分析基础之《pandas(4)—pandas画图》

1、DataFrame.plot(xNone, yNone, kindline) 说明: x:设置x轴标签 y:设置y轴标签 kind: line 折线图 bar 柱状图 hist 直方图 pie 饼图 scatter 散点图 # 找到p_change和turnover之间的关系 data.plot(xvolume, yturnover, kinds…

【数据库】分区的优点和缺点

​ 🍎个人博客:个人主页 🏆个人专栏:数据库 ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 优点: 缺点: 结语 我的其他博客 ​ 前言 数据库中的分区技术为处理大规模数据提供了一种有效的手段…

五大浏览器内核及代表浏览器,一文讲透!

Hi,我是贝格前端工场,在进行web前端开发的时候,浏览器兼容性一直是让所有前端工程师头疼的问题,其根源在于不同的浏览器应用了不同的内核,其对html、css、js的解析规则也是不一样的,作为前端开发的你,如果不…