下面这个例子是演示线激光和单目相机实现三维重建
下面是运行的结果,这也是HALCON中的一个示例


直接从代码出发来看,大部分算子说明在之前的文章中有介绍,可以参考:

* This program demonstrates how to perform a calibrated
* measurement by using the sheet-of-light technique
*
* //此程序演示如何执行校准
*// 使用光片技术进行测量
* First, a sheet-of light model is created and suitable
* parameters are set. Then, a series of profile images is
* processed successively. Finally, the disparity image,
* the score images, the calibrated coordinates X, Y and
* Z, and the 3D object model resulting from the measurement
* are retrieved from the model and displayed.
* //首先,创建光平面模型,并且设置一定的参数
* //然后,一系列的激光图像先后被处理
* //最后,从模型中检索和显示差异图像、分数图像、校准坐标 X、Y 和 Z 以及测量产生的 3D 对象模型。
*
* Perform some initializations
* //初始化
dev_update_off ()
read_image (ProfileImage, 'sheet_of_light/connection_rod_001')
dev_close_window ()
dev_open_window_fit_image (ProfileImage, 0, 0, 1024, 768, WindowHandle1)
dev_set_draw ('margin')
dev_set_line_width (3)
dev_set_color ('green')
dev_set_lut ('default')
*
* Set the poses and camera parameters required to compute
* a calibrated measurement
* //设置相机模型参数
gen_cam_par_area_scan_polynomial (0.0126514, 640.275, -2.07143e+007, 3.18867e+011, -0.0895689, 0.0231197, 6.00051e-006, 6e-006, 387.036, 120.112, 752, 240, CamParam)
*//创建相机姿态参数
create_pose (-0.00164029, 1.91372e-006, 0.300135, 0.575347, 0.587877, 180.026, 'Rp+T', 'gba', 'point', CamPose)
*//创建光平面姿态参数
create_pose (0.00270989, -0.00548841, 0.00843714, 66.9928, 359.72, 0.659384, 'Rp+T', 'gba', 'point', LightplanePose)
*//创建移动方程
create_pose (7.86235e-008, 0.000120112, 1.9745e-006, 0, 0, 0, 'Rp+T', 'gba', 'point', MovementPose)
*
* Create a model in order to process the profile images
* and set the required parameters for the model.
* //创建一个矩形区域
gen_rectangle1 (ProfileRegion, 120, 75, 195, 710)
*//创建光平面模型
create_sheet_of_light_model (ProfileRegion, ['min_gray','num_profiles','ambiguity_solving'], [70,290,'first'], SheetOfLightModelID)
*//下面都是设置光平面模型参数
set_sheet_of_light_param (SheetOfLightModelID, 'calibration', 'xyz')
set_sheet_of_light_param (SheetOfLightModelID, 'scale', 'mm')
set_sheet_of_light_param (SheetOfLightModelID, 'camera_parameter', CamParam)
set_sheet_of_light_param (SheetOfLightModelID, 'camera_pose', CamPose)
set_sheet_of_light_param (SheetOfLightModelID, 'lightplane_pose', LightplanePose)
set_sheet_of_light_param (SheetOfLightModelID, 'movement_pose', MovementPose)
*
* Measure the profile from successive images
* //从连续图像中测量配置文件
for Index := 1 to 290 by 1read_image (ProfileImage, 'sheet_of_light/connection_rod_' + Index$'.3')dev_display (ProfileImage)dev_display (ProfileRegion)*//这个算子应该就是最重要的了,通过光平面模型对图像进行处理measure_profile_sheet_of_light (ProfileImage, SheetOfLightModelID, [])
endfor
* Get the resulting images and close the sheet-of-light handle
* //获得结果
get_sheet_of_light_result (Disparity, SheetOfLightModelID, 'disparity')
get_sheet_of_light_result (X, SheetOfLightModelID, 'x')
get_sheet_of_light_result (Y, SheetOfLightModelID, 'y')
get_sheet_of_light_result (Z, SheetOfLightModelID, 'z')
*//获得以光片技术作为 3D 对象模型进行校准测量的结果。
get_sheet_of_light_result_object_model_3d (SheetOfLightModelID, ObjectModel3DID)
*//清除模型
clear_sheet_of_light_model (SheetOfLightModelID)
*
* Display the disparity image
* //显示差异图像
get_image_size (Disparity, Width, Height)
dev_set_window_extents (0, 0, Width, Height)
dev_set_lut ('temperature')
set_display_font (WindowHandle1, 14, 'mono', 'true', 'false')
dev_clear_window ()
dev_display (Disparity)
disp_message (WindowHandle1, 'Disparity', 'window', 12, 12, 'black', 'true')
disp_continue_message (WindowHandle1, 'black', 'true')
stop ()
*
* Display the Z-coordinates
dev_close_window ()
dev_open_window (Height + 10, 0, Width * .5, Height * .5, 'black', WindowHandle3)
set_display_font (WindowHandle3, 14, 'mono', 'true', 'false')
dev_display (Z)
disp_message (WindowHandle3, 'Calibrated Z-coordinates', 'window', 12, 12, 'black', 'true')
*
* Display the Y-coordinates
dev_open_window ((Height + 10) * .5, 0, Width * .5, Height * .5, 'black', WindowHandle2)
set_display_font (WindowHandle2, 14, 'mono', 'true', 'false')
dev_display (Y)
disp_message (WindowHandle2, 'Calibrated Y-coordinates', 'window', 12, 12, 'black', 'true')
*
* Display the X-coordinates
dev_open_window (0, 0, Width * .5, Height * .5, 'black', WindowHandle1)
dev_display (X)
dev_set_lut ('default')
set_display_font (WindowHandle1, 14, 'mono', 'true', 'false')
disp_message (WindowHandle1, 'Calibrated X-coordinates', 'window', 12, 12, 'black', 'true')
disp_continue_message (WindowHandle3, 'black', 'true')
stop ()
*
* Display the 3d object model
* //创建相机模型
gen_cam_par_area_scan_division (0.012, 0, 6e-006, 6e-006, 376, 240, 752, 480, CameraParam1)
Instructions[0] := 'Rotate: Left button'
Instructions[1] := 'Zoom:   Shift + left button'
Instructions[2] := 'Move:   Ctrl  + left button'
create_pose (0, -10, 300, -30, 0, -30, 'Rp+T', 'gba', 'point', PoseIn)
dev_close_window ()
dev_close_window ()
dev_close_window ()
get_cam_par_data (CameraParam1, 'image_width', Width)
get_cam_par_data (CameraParam1, 'image_height', Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
visualize_object_model_3d (WindowHandle, ObjectModel3DID, CameraParam1, PoseIn, 'color', 'blue', 'Reconstructed Connection Rod', '', Instructions, PoseOut)
* //清除3D模型
clear_object_model_3d (ObjectModel3DID)

三维激光重建原理与实现HALCON相关推荐

  1. 3D点云重建原理及Pytorch实现

    3D点云重建原理及Pytorch实现 Pytorch: Learning Efficient Point Cloud Generation for Dense 3D Object Reconstruc ...

  2. 3D视觉创新应用(三维重建)竞赛作品系列——多楼层室内环境下的三维几何重建

    1.背景介绍 在智能制造.AR.机器人等领域,三维重建都有很广泛的应用前景.随着消费级RGB-D相机的普及,三维重建的应用场景也得到了很大程度的扩展.对多楼层的室内环境进行稠密的三维重建,可以应用于混 ...

  3. VR来了,3D人脸重建跟上《三维人脸重建-3DMM》

    之前我们写过了<三维人脸重建入门>,接下来,自然就是入门之后的事情.当然了,不管是一个什么项目,方法永远不会是唯一的. 一 引言 To my best of knowledge,如之前所说 ...

  4. python 3d重建_3D点云重建原理及Pytorch实现

    3D点云重建原理及Pytorch实现 Pytorch: Learning Efficient Point Cloud Generation for Dense 3D Object Reconstruc ...

  5. 基于三维激光点云的目标识别与跟踪研究

    基于三维激光点云的目标识别与跟踪研究 人工智能技术与咨询 来源:<汽车工程> ,作者徐国艳等 [摘要] 针对无人车环境感知中的障碍物检测问题,设计了一套基于车载激光雷达的目标识别与跟踪方法 ...

  6. 【研究报告】从单目深度估计到单目三维场景重建-沈春华老师-VALSE Webinar 22-13(总第279期)

    从单目深度估计到单目三维场景重建-沈春华老师-VALSE Webinar 22-13(总第279期) 报告总结 & 相关论文 论文代码 相关术语 前言 研究问题 单目深度估计 单目三维场景重建 ...

  7. 微软三维人脸重建论文总结——《Accurate 3D Face Reconstruction with Weakly-Supervised Learning》

    原作:https://arxiv.org/abs/1903.08527 研究机构:微软研究院 写在前面 想象一下,通过二维的人脸图片,生成高度还原的三维人脸模型.真是异想天开,可是人工智能要做的不就是 ...

  8. ICLR 2021|基于GAN的二维图像无监督三维形状重建

    2D GAN知道3D形状吗?基于GAN的二维图像无监督三维形状重建 论文.代码地址:在公众号「计算机视觉工坊」,后台回复「二维图像GAN」,即可直接下载. 摘要: 自然图像是三维物体在二维图像平面上的 ...

  9. 论文笔记 | 使用层析法和双色测温法进行火焰三维温度场重建

    使用层析法和双色测温法进行火焰三维温度场重建 3-D Reconstruction of Flame Temperature Distribution Using Tomographic and Tw ...

最新文章

  1. 从未在一起更让人遗憾_明明是真爱,却又不能在一起
  2. 使用 $.grep() 方法
  3. darknet迭代多少次_STL:迭代器
  4. springboot md5加密_实在!基于Springboot和WebScoket,写了一个在线聊天小程序
  5. Eclipse如何导入第三方jar包
  6. js 防止重复提交方案
  7. 关于重构中的“函数尽量小”的负作用
  8. iNeedle系统之国舜项目
  9. C++ list容器
  10. 如何将PDF转换成可以直接编辑的CAD图纸
  11. html在线播放mp4文件,使用HTML5视频在Firefox中播放MP4文件
  12. 软件工程工具图(软件开发过程中可能用到的工具图)
  13. IT工程师学习方法和发展路线
  14. Windows下数据库密码的修改
  15. 2021全国人工智能大赛(NAIC)视觉编码赛道初赛一阶段baseline分享
  16. Vue脚手架安装与使用
  17. 腾讯「文涌 (Effidit)」2.0版发布,打造更懂写作的智能助手
  18. java 雪崩效应,Hystrix 解决服务雪崩效应
  19. 使用MMDetection训练自己的数据集
  20. c语言子菜单退出返回主菜单,毕业论文_图书管理系统设计报告077喜欢就下吧(范文1)...

热门文章

  1. [转]PHP--优化PHP代码建议
  2. .NET 缩略图服务器 ResizingServer
  3. 2013年工作中遇到的20个问题:181-200
  4. MysqL数据库密码的管理
  5. c#只用一个for输出三角形
  6. JSP/Servlet实验室设备管理系统文档
  7. Vue实例的生命周期
  8. rocketmq sql解析过滤
  9. scala 中List的简单使用
  10. 开源播放器 ijkplayer (四) :Ijkplayer切换网络时停止播放的问题处理