Halcon学习笔记:xyz_attrib_to_object_model_3d——从X、Y和Z图像中创建3D对象模型同时附加属性

xyz_attrib_to_object_model_3d.hdev

  • This example program shows the usage of the procedure
  • xyz_attrib_to_object_model_3d.
  • It can be used to create 3D object models from X, Y and Z images,
  • and simultaneously attach attributes to every point.
  • 这个示例程序展示了 xyz_attrib_to_object_model_3d 算子的用法。
  • 它可以用于从X、Y和Z图像中创建3D对象模型,并同时将属性附加到每个点上。

源码

* 初始化
dev_update_off ()
dev_close_window ()
*
* Read the digital surface model.
* 1、读取数字表面模型
read_image (Z, 'mreut_dgm_2.0.tif')
get_image_size (Z, Width, Height)
*
* 2、读取包含灰色值的图像,这些灰色值将作为属性添加到3D对象模型中
read_image (AerialImage, 'mreut4_3.png')
*
* Generate a label image with a second attribute.
* In this case, we label different terrain types very simply, just for demonstration purposes.
* 3、用第二个属性生成标签图像。
* 在这种情况下,我们很简单的为不同的地形类型标记,只是为了演示。* 1)将区域转换为标签图像
auto_threshold (AerialImage, Regions, 4)
region_to_label (Regions, LabelImage, 'byte', Width, Height)
*
* Create a multichannel image from both attribute images.
* 4、从两个属性图像中创建一个多通道图像
compose2 (AerialImage, LabelImage, MultiChannelAttribImage)
*
* Create images that contain X and Y coordinates in a regular grid.
* For a simple gray ramp, the input parameters of gen_image_surface_first_order are very simple:
* 5、在常规网格中创建包含X和Y坐标的图像。对于一个简单的灰色渐变,gen_image_surface_first_order 的输入参数非常简单:* 1)用一阶多项式创建两个倾斜(减变)的灰色表面(X Y)
GroundResolution := 2.0
gen_image_surface_first_order (X, 'real', 0, GroundResolution, 0, 0, 0, Width, Height)
gen_image_surface_first_order (Y, 'real', -GroundResolution, 0, 0, 0, 0, Width, Height)
*
* The following procedure creates a 3D object model from
* the X, Y and Z image and adds the information contained in the attribute image to each point.
* 6、下面的过程从X、Y和Z图像中创建一个3D对象模型,并将属性图像中包含的信息添加到每个点* 1)将3D点从图像转换为3D对象模型,并向对象模型的点添加扩展属性。(gray 灰度 + terrain 地形:添加两个通道进去)
AttribName := ['&gray','&terrain']
xyz_attrib_to_object_model_3d (X, Y, Z, MultiChannelAttribImage, AttribName, ObjectModel3D)
*
* 7、显示结果 * 1)显示“地形类型”
dev_open_window (Height / 2, 0, Width / 2, Height / 2, 'black', WindowHandle1)
dev_set_part (0, 0, Height - 1, Width - 1)
set_display_font (WindowHandle1, 16, 'mono', 'true', 'false')
dev_set_color (['red','green','blue'])
dev_set_draw ('fill')
dev_display (Regions)
disp_message (WindowHandle1, 'Terrain types', 'window', 12, 12, 'black', 'true')* 2)显示“鸟瞰图”
dev_open_window (0, 0, Width / 2, Height / 2, 'black', WindowHandle2)
set_display_font (WindowHandle2, 16, 'mono', 'true', 'false')
dev_display (AerialImage)
disp_message (WindowHandle2, 'Aerial image', 'window', 12, 12, 'black', 'true')* 3)显示“数字表面模型”
dev_open_window (0, Width / 2 + 8, Width, Height, 'gray', WindowHandle3)
set_display_font (WindowHandle3, 16, 'mono', 'true', 'false')
dev_display (Z)
disp_message (WindowHandle3, 'Digital surface model', 'window', 12, 12, 'black', 'true')
disp_continue_message (WindowHandle3, 'black', 'true')
stop ()
*
* Perform fast triangulation of the object model for better visualization.
* 8、对对象模型进行快速的三角测量,以便更好地进行可视化。* 1)为某个操作准备一个3D对象模型(此操作为segmentation分割)
prepare_object_model_3d (ObjectModel3D, 'segmentation', 'true', [], [])
* Visualize 3d object model interactively
* 9、交互式地可视化3d对象模型
create_pose (-620, -85, 17000, 135, 2, 10, 'Rp+T', 'gba', 'point', Pose)
Instructions := 'Rotate: Left button'
Instructions[1] := 'Zoom: Shift + left button'
Instructions[2] := 'Move: Ctrl + left button'* 1)创建使用了属性为:"&gray"的可视化的3D模型
visualize_object_model_3d (WindowHandle3, ObjectModel3D, [], Pose, ['color_attrib','color_attrib_start','color_attrib_end'], ['&gray',0,255], ['Created 3D model','Attribute used for visualization: \'&gray\''], [], Instructions, PoseOut)* 2)创建使用了属性为:"&terrain"的可视化的3D模型属性:
visualize_object_model_3d (WindowHandle3, ObjectModel3D, [], PoseOut, ['color_attrib','lut'], ['&terrain','color1'], ['Created 3D model','Attribute used for visualization: \'&terrain\''], [], Instructions, PoseOut)
disp_end_of_program_message (WindowHandle3, 'black', 'true')
stop ()
*
clear_object_model_3d (ObjectModel3D)

结果:
1、获得两个属性的多通道图像

2、创建 X Y 图像,灰度值变化方向如图:


3、结果显示


4、验证结果:

Halcon学习笔记:xyz_attrib_to_object_model_3d示例相关推荐

  1. Halcon学习笔记:1D Measuring一维测量_fuse.hdev灯丝测量示例

    Halcon学习笔记:1D Measuring一维测量_fuse.hdev灯丝测量示例 一.基本概念 基本流程为: 获取图像 对图像进行灰度值标定 (针对相机获取的图像灰度和输入能量之间的非线性关系, ...

  2. Halcon学习笔记:select_points_object_model_3d(3D对象模型阀值分割)

    Halcon学习笔记:select_points_object_model_3d 3D对象模型阀值分割 This example program shows how to use the operat ...

  3. Halcon 学习笔记五:几何定位+仿射变换+测量

    Halcon 学习笔记五:几何定位+仿射变换+测量 定位流程 例子一 例子二(药片的定位) 例子三(充电宝定位) 例子四(车牌定位) 其他 定位流程 blob分析 模板匹配 (仿射变换成标准的形状) ...

  4. Halcon学习笔记(五)几何定位+仿射+车牌识别

    定位 Blob分析 模板匹配 仿射 使用单位矩阵求仿射矩阵 示例:affine_trans_region.hdev 单位矩阵 hom_mat2d_identity (HomMat2DIdentity) ...

  5. Halcon学习笔记(三)---数据类型

    Halcon学习笔记(三)---数据类型 halcon只能在单独行进行注释,不能在语句后面进行注释. 1.tuple(元组,重数) 赋值符号":=" tuple算子: (1)变量定 ...

  6. Halcon学习笔记(一):Qt+Halcon联合开发配置

    Halcon学习笔记(1):Qt+Halcon联合开发配置 首先是新建一个QT项目qtest_hc 方法一: 1)QT项目文件 qtest_hc 添加库: #1.包含目录添加 INCLUDEPATH ...

  7. Halcon学习笔记:3D_coordinates(3D标定)

    Halcon学习笔记:3D_coordinates(3D标定) 欢迎有兴趣的朋友一起学习,代码理解注释有问题的可以告诉我,一起讨论,共同进步. *初始化程序,dev_close_window() *关 ...

  8. Halcon 学习笔记八:颜色识别

    Halcon 学习笔记八:颜色识别 一.图像处理需要的知识 二.图像处理的预处理和分割过程 二.颜色识别的方法 三.例子一 四.例子二 五.例子三 一.图像处理需要的知识 1.图像处理基础(rgb(h ...

  9. 一、HALCON学习笔记(容器液位缺陷检测)

    一.HALCON学习笔记(容器液位缺陷检测) * In this example a fill level check for the * pharmaceutical industry is dem ...

最新文章

  1. 2016 - 1 - 19NSOpertation的依赖关系和监听
  2. opengl加载显示3DS模型3DS类型文件
  3. C# 用IrisSkin4.dll美化你的WinForm
  4. 十、非规则组织分析及其数学模型——锯齿形斜纹组织
  5. 详解 QT 主要类 QWidget
  6. 简述计算机控制系统调试和运行的过程,简述计算机原理与系统启动过程
  7. 企业千人千面管理模式_一汽解放青岛汽车有限公司荣获“2020(第十六届)中国企业教育先进单位百强”...
  8. python爬虫之模拟登陆csdn
  9. QT学习记录:编译错误“no matching function for call toXXX“
  10. 解决微信浏览器不能自动播放视频
  11. js基础——图片切换实例
  12. Hibernate占位符?和:及JPA占位符
  13. mean-shift均值偏移算法
  14. java 数据写入txt乱码_java写入文件是乱码
  15. 618运动好物清单来了、这几款运动产品好玩又实用
  16. ping请求超时的解决方法?
  17. arduino养花平台
  18. LinuxC—标准IO与文件IO学习笔记
  19. 面对网络潘多拉魔盒:企业必须“扎紧篱笆”、堵住“后门”
  20. ffmpeg实例,图片转视频,图片放大移动示例解说

热门文章

  1. linux添加中文字库主线任务,Linux 添加中文字体库
  2. animation 先执行一次 在持续执行_这一次,彻底弄懂 JavaScript 执行机制
  3. Java多线程系列(一):最全面的Java多线程学习概述
  4. 论文浅尝 | Data Intelligence 已出版的知识图谱主题论文
  5. 论文小综 | Neuro-Symbolic Reasoning in NLP
  6. 论文浅尝 | XQA:一个跨语言开放域问答数据集
  7. RISC-V正在采取行动,避免MIPS类的碎片化
  8. 双向特征融合的数据自适应SAR图像舰船目标检测模型
  9. Java面试题:IO流的标准处理异常的代码
  10. PHP中 .= 的意思