Halcon tiff 点云读取以及平面矫正

一、读取tiff 图


dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)xResolution:=0.0025
yResolution:=0.0025
zResolution:=0.001
read_image (IntputImage, 'C:/Users/alber/Desktop/2023-08-15_16-38-24-982_/Sta5_002.tif')
zoom_image_factor (IntputImage, IntputImage, 1,4, 'constant')
get_domain (IntputImage, Domain)
*获取该区域的最大最小值
min_max_gray (Domain, IntputImage, 0, Min, Max, Range)
*去除无效数据
threshold (IntputImage, Region,-1.2, Max)
reduce_domain (IntputImage, Region, ImageReduced)get_image_size (ImageReduced, Width, Height)
convert_image_type (ImageReduced, ImageConvertedX, 'real')
*生成xy坐标的图像映射,乘以分辨率就是xy的相对值
gen_image_surface_first_order (ImageSurface, 'real', 1, 0, 0, 0, 0, Width, Height)
gen_image_surface_first_order (ImageSurface1, 'real', 0, 1, 0, 0, 0, Width, Height)
scale_image (ImageSurface, X, xResolution, 0)
scale_image (ImageSurface1, Y, yResolution, 0)*创建3D模型
xyz_to_object_model_3d (Y,X,ImageReduced, ObjectModel3D)
write_object_model_3d (ObjectModel3D, 'ply', 'C:/Users/alber/Desktop/abc.ply', [], [])
disp_object_model_3d (WindowHandle, [ObjectModel3D], [], [], ['color_0','alpha'], ['green',0.7])

二、平面矫正

用Z轴来矫正


select_points_object_model_3d (ObjectModel3D, 'point_coord_x', 2.73, 3.2, ObjectModel3DThresholded)
select_points_object_model_3d (ObjectModel3DThresholded, 'point_coord_y', 1, 3.4, ObjectModel3DThresholded)
fit_primitives_object_model_3d (ObjectModel3DThresholded, ['primitive_type','fitting_algorithm'], ['plane','least_squares_tukey'], ObjectModel3DOut)* 这一步很重要
get_object_model_3d_params (ObjectModel3DOut, 'primitive_parameter_pose', pose)*用Z轴来矫正* 将旋转的角度转转回去pose[3]:=-pose[3]pose[4]:=-pose[4]pose[5]:=-pose[5]
write_object_model_3d (ObjectModel3DThresholded, 'ply', 'C:/Users/alber/Desktop/abc3333.ply', [], [])
*
rigid_trans_object_model_3d (ObjectModel3DThresholded, pose, ObjectModel3DRigidTrans)
write_object_model_3d (ObjectModel3DRigidTrans, 'ply', 'C:/Users/alber/Desktop/abc3333afffff.ply', [], [])rigid_trans_object_model_3d (ObjectModel3D, pose, ObjectModel3DRigidProdUCE)
write_object_model_3d (ObjectModel3DRigidProdUCE, 'ply', 'C:/Users/alber/Desktop/ABC_CR.ply', [], [])

三、 从一个姿态转到指定的姿态

1、将原始姿态pose ->matrix1

2、将指定的姿态pose 2->matrix2

3、svd  矩阵分解,计算出两个姿态的差接矩阵M

4、矩阵-》pose

5、rigid_trans_object_model_3d

矫正前:

矫正后:

 

 

全部代码:


dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)xResolution:=0.0025
yResolution:=0.0025
zResolution:=0.001
read_image (IntputImage, 'C:/Users/alber/Desktop/2023-08-15_16-38-24-982_/Sta5_002.tif')
zoom_image_factor (IntputImage, IntputImage, 1,4, 'constant')
get_domain (IntputImage, Domain)
*获取该区域的最大最小值
min_max_gray (Domain, IntputImage, 0, Min, Max, Range)
*去除无效数据
threshold (IntputImage, Region,-1.2, Max)
reduce_domain (IntputImage, Region, ImageReduced)get_image_size (ImageReduced, Width, Height)
convert_image_type (ImageReduced, ImageConvertedX, 'real')
*生成xy坐标的图像映射,乘以分辨率就是xy的相对值
gen_image_surface_first_order (ImageSurface, 'real', 1, 0, 0, 0, 0, Width, Height)
gen_image_surface_first_order (ImageSurface1, 'real', 0, 1, 0, 0, 0, Width, Height)
scale_image (ImageSurface, X, xResolution, 0)
scale_image (ImageSurface1, Y, yResolution, 0)*创建3D模型
xyz_to_object_model_3d (Y,X,ImageReduced, ObjectModel3D)
write_object_model_3d (ObjectModel3D, 'ply', 'C:/Users/alber/Desktop/abc.ply', [], [])
disp_object_model_3d (WindowHandle, [ObjectModel3D], [], [], ['color_0','alpha'], ['green',0.7])select_points_object_model_3d (ObjectModel3D, 'point_coord_x', 2.73, 3.2, ObjectModel3DThresholded)
select_points_object_model_3d (ObjectModel3DThresholded, 'point_coord_y', 1, 3.4, ObjectModel3DThresholded)
fit_primitives_object_model_3d (ObjectModel3DThresholded, ['primitive_type','fitting_algorithm'], ['plane','least_squares_tukey'], ObjectModel3DOut)* 这一步很重要
get_object_model_3d_params (ObjectModel3DOut, 'primitive_parameter_pose', pose)*用Z轴来矫正* 将旋转的角度转转回去pose[3]:=-pose[3]pose[4]:=-pose[4]pose[5]:=-pose[5]
write_object_model_3d (ObjectModel3DThresholded, 'ply', 'C:/Users/alber/Desktop/abc3333.ply', [], [])
*
rigid_trans_object_model_3d (ObjectModel3DThresholded, pose, ObjectModel3DRigidTrans)
write_object_model_3d (ObjectModel3DRigidTrans, 'ply', 'C:/Users/alber/Desktop/abc3333afffff.ply', [], [])rigid_trans_object_model_3d (ObjectModel3D, pose, ObjectModel3DRigidProdUCE)
write_object_model_3d (ObjectModel3DRigidProdUCE, 'ply', 'C:/Users/alber/Desktop/ABC_CR.ply', [], [])pose_compose (pose, pose, PoseCompose)svd_matrix (, 'full', 'both', MatrixUID, MatrixSID, MatrixVID)

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

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

相关文章

2023.12.2 JAVA学习day01,变量,数据类型,键盘录入

目录 1.JDK 2.面向对象 1、封装 2、继承 3、多态 3.hello world 4. 变量的概念 定义变量 变量求和 数据类型 变量可覆盖 输出多个变量 键盘录入:相当于python的input 计算键盘录入的值 1.JDK JDK:java development kit (java开发工具&#xff…

初创公司的技术 SEO:提示和最佳实践

初创公司总是寻求可以在几乎没有前期资金的情况下进行扩展的增长战略。搜索引擎优化就是这样一种方法。 如果操作得当,SEO可以产生越来越多的目标访问者,而无需额外费用。此外,它可以通过支持其他策略来影响整个营销漏斗。你已经找到了学习初…

Edge 旧版本回退

微软官网 下载策略文件 下载后,解压打开 cad 包,把里面的 Windows\ADMX\ 下 3 个 *.admx 文件解压到 C:\Windows\PolicyDefinitions Windows\ADMX\zh-CN 下 3 个 *.adlm 文件解压到 C:\Windows\PolicyDefinitions\zh-CN Windows 搜索 gpedit&#xff…

Vue3中的Suspense组件有什么用?

什么是Suspense 官网是这样解释的&#xff1a;<Suspense> 是一个内置组件&#xff0c;用来在组件树中协调对异步依赖的处理。它让我们可以在组件树上层等待下层的多个嵌套异步依赖项解析完成&#xff0c;并可以在等待时渲染一个加载状态。 意思就是一个用于处理异步组件…

Spring如何解决循环依赖问题?

getSingleton(String beanName) 在Spring的doGetBean()方法中的第一次调用getSingleton方法&#xff08;也就是getSingleton(String beanName)方法&#xff09;中&#xff0c;反映了Spring中针对循环依赖的解决思想。 当Spring容器初始化时&#xff0c;对于每一个声明为单例的…

实验8 图的操作

0x01 实验目的 掌握无向图的创建、遍历方法。 0x02 实验内容 创建图类&#xff0c;存储结构使用邻接矩阵。输入图的节点数n(小于10个)、边数m&#xff0c;节点分别用1-n代表。采用“起始节点&#xff0c;终止节点&#xff0c;权值”输入图的m条边&#xff0c;创建图。输出从…

XIAO ESP32S3之SenseCraft 模型助手部署

sipeed教程&#xff1a;SenseCraft 模型助手部署 | Seeed Studio Wiki 一、安装ESP-IDF 鉴于我的电脑之前安装过esp-idf v4.3版本&#xff0c;而ESP32-S3需要v4.4及以上版本才支持&#xff0c;所以将esp-idf更新到最新5.1版本。 1、启动mingw32.exe应用 2、进入esp-idf目录 …

重要通知丨 JumpServer 开源堡垒机 V2 社区版即将停止维护

尊敬的 JumpServer 开源堡垒机用户&#xff0c;您好&#xff01; 根据《关于 JumpServer 开源堡垒机 V2 版本产品生命周期的相关说明》&#xff0c;JumpServer 开源堡垒机 V2 版本&#xff08;社区版&#xff09;将于 2023 年 12 月 31 日停止维护支持。 在过去的两年多时间里…

跟着GPT学习shell脚本,理论与实践相结合的学习计划。

学习计划&#xff1a;初学者到高手 第1-2周&#xff1a;基础入门 目标&#xff1a;了解Shell脚本的基本概念&#xff0c;掌握基础命令。内容&#xff1a; Shell脚本是什么&#xff0c;为什么使用Shell脚本。基本的Shell命令&#xff08;如ls, cd, mkdir, rm等&#xff09;。简…

封装hook函数【便于复用】

目录 一般函数封装封装hook函数 一般函数封装 普通的删除逻辑封装函数—子组件点击删除-通过 defineEmits 通知父组件&#xff08;自定义事件&#xff09;进行删除 const deleteLoading ref(false) const emits defineEmits<{(e: click-delete, id: string): void }>()…

二叉树的层序遍历(广度搜索法) Python

思路&#xff1a; 层序遍历一个二叉树。就是从左到右一层一层的去遍历二叉树 需要借用一个辅助数据结构即队列来实现&#xff0c;队列先进先出&#xff0c;符合一层一层遍历的逻辑&#xff0c;而用栈先进后出适合模拟深度优先遍历也就是递归的逻辑。 而这种层序遍历方式就是…

ELK配置记录

1. filebeat.yml配置 启动命令&#xff1a; ./filebeat -e -c filebeat.yml # 输入 filebeat.inputs: - type: logenabled: truepaths:- /soft/log/base.*#跨行日志正则&#xff0c;从有时间的开始&#xff0c;到下一个时间之前结束multiline.pattern: ^\[[0-9]{4}-[0-9]{2}…

Python数据类型字典分析

文章目录 1. 创建字典1.1 创建空字典1.2 创建非空字典 2. 新增字典元素2.1 thisdict[new_key] new_value2.2 update 方法 3. 删除字典元素4. 查找字典元素4.1 in 和 in not 操作符4.2 get 方法4.3 thisdict[key] 5. 修改字典元素6. 遍历字典元素6.1 for 循环遍历6.2 keys 方法…

使用纯js码2个实用功能banner图标切换和表格制作

“I can accept failure, but I cant acceptnot trying.”—— by Michael Jordan    “我可以接受失败&#xff0c;但我不能接受放弃。” ——迈克尔•乔丹   banner图标切换 js原生&#xff1a;图片地址你们自己设置位置&#xff0c;相对位置或者绝对位置即可 <!DOCTY…

【CTA认证】Android8实现android6以下的应用运行时也要申请权限

需求 CTA入网认证&#xff0c;要求低版本比如Android6以下的应用&#xff0c;运行时&#xff0c;也需要有运行时权限(Runtime Permission)功能&#xff0c;不能默认就取到权限&#xff0c;必须人工在设置中打开才可。 环境 Android 8 实现 frameworks 修改思路是所有APP都…

蓝桥杯物联网竞赛_STM32L071_6_RTC显示

作用&#xff1a; RTC在STM32微控制器中通常由一个独立的低功耗晶振和相关的寄存器组成。它可以独立于主处理器运行&#xff0c;即使在系统电源关闭的情况下(需要备用纽扣电池)&#xff0c;也能继续计时和记录日期。注意&#xff1a;RTC是芯片内部的功能&#xff0c;并没有和G…

Android跨进程通信,RPC,IPC

文章目录 Android跨进程通信&#xff0c;RPC&#xff0c;IPC1.IPC原理2.RPC原理2.RPC原理 Android跨进程通信&#xff0c;RPC&#xff0c;IPC RPC&#xff08;基于IPC实现&#xff09; Android binder就是一个RPC框架&#xff0c;在已经启动的一个进程a中&#xff0c;访问到进…

Eaxyx 让圆球跟随鼠标移动

如果出现2023&#xff0c;代表配置成功: 进入Eaxy官方网站&#xff0c;点击文档&#xff1a; 选择 函数->绘图函数->initgraph: 可以看见initgraph&#xff08;&#xff09;函数有如下三个参数: 现在我们想生成一个1280*720大小的窗口&#xff1a; 我们需写如下代码: 但…

AIGC: 关于ChatGPT中的核心API调用示例

Open AI 的 api 调用示例 API的调用的文档&#xff1a;https://platform.openai.com/docs/api-reference/introductionChatGPT官方提供了 Python版的包 和 Nodejs版的包 $pip install openai$npm install openai 我们使用 python3.8版本来安装: $sudo python3.8 -m pip instal…

数据结构算法-冒泡排序算法

引言 虽然选择排序好用 &#xff0c;但有点问题 也就是频繁找最大值下标 放到 未排序的后面 因为每次需要扫描整个未排序序列&#xff0c;找到最大值或最小值的下标&#xff0c;并将其交换到未排序序列的最后一个位置。这样做的问题在于&#xff0c;在后面的迭代中&#xff0c…