halcon 表面检测 (光度立体视觉法)

 

 

一种三维表面重建方法,以便快速准确地获得三维模型 .首先获取控制光照和视角条件下的3幅图像,采用光度立体视觉的方法计算表面法向量,并在基于高度的全局优化和局部特征保持的基础上,通过金字塔式多尺度逼近,由表面法向量恢复三维表面信息 .实验表明,这是一种简易快速的三维重建算法,在游戏三维建模、交互式动画等方面有着广泛的应用。

“3D模型重建算法”,提出了一种由平滑曲面在平行光照射下图像达到光顺的思想而形成的曲面光顺算法。该算法直接平滑曲面在平行光照射下的图像,然后通过本文提出的“3D模型重建算法”反求出光顺后的曲面。由于该算法能直接平滑曲面在平行光照射下的图像,使得光顺后的曲面在基于光照模型的曲面光顺准则下具有很的好光顺性质。利用三幅光度立体图像来恢复物体表面3D模型的快速算法,根据向量场的分布建立关于物体表面深度信息的超定线性方程组,在最小二乘意义下求得物体表面的深度值.该算法能从已知光照条件下的三幅光度立体图像中恢复任意没有遮挡面物体表面的三维结构,形成以单个像素为网格精度的物体表面的多面体模型.实际计算表明该算法计算速度快,能适应任意连续性的物体表面的3D模型重建并且不受其表面反射系数的影响.

采用不同光照条件下拍摄的多幅图像,利用光度立体技术对织物表面进行3D重建.首先根据物体表面的照度方程,引入广义逆的概念求解物体表面方向进而确定表面梯度,再运用线积分计算表面高度,结合变分和有限差分思想对所得拟合表面进行进一步的迭代和修正,获得最佳重建表面.将该算法运用到AATCC织物平整度模板图像的三维重建,可获取三维深度信息,并结合4个特征值表征织物起皱程度. 

改进光度立体视觉方法,尤其适用于表面检测 

  在工业领域,表面检测是一个非常广泛的应用领域。使用HALCON 11中增强的光度 立体视觉方法,三维表面检测被加强。利用阴影可方便快速的检测物体表面的缺口或凹痕。 

 
使用光度 立体视觉方法可在复杂图像中轻松找到 表面缺陷 
 
使用光度 立体视觉方法可在复杂图像中轻松找到 表面缺陷 
 
使用光度 立体视觉方法可在复杂图像中轻松找到 表面缺陷 

转载于:https://www.cnblogs.com/hu16683845/p/9514954.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hi~ 可私信我了解后再进行下载~ 本资源上传时,遗漏了两个文件,分别是:data_filter_keep_order_output_index.hdvp 以及 IntensityImageToPiontsCloudImage.hdvp,购买了该资源的同学,给我留言,我会私信发给你们。 1.基于halcon平台; 2.提供深度图源文件以及解压密码; 3.代码预览: */****************************** * @文档名称: 基于点云的平面度测量。 * @作者: hugo * @版本: 1.1 * @日期: 2021-6-20 * @描述: 该方支持点云的平面的平面度测量。 ********************************/ dev_update_window ('on') dev_get_window (WindowHandle) read_image (imageReal, './replay_38893_2021-6-7.tif') xResolution:=0.06 yResolution:=0.06 zResolution:=0.001 ScaleFactor:=[xResolution,yResolution,zResolution] *采样区域1 create_drawing_object_rectangle2 (300, 120, rad(90), 30, 20, DrawID) set_drawing_object_params (DrawID, 'color', 'forest green') set_drawing_object_params (DrawID, 'line_width', 1) attach_drawing_object_to_window (WindowHandle, DrawID) .......... *平面度 height:=theta/zScale*0.001 *可视化高度差效果 visParamName := ['lut','alpha_0','intensity','color_1'] visParamValue := ['hsi',0.7,'coord_z','yellow'] Labels := ['','平面度:'+height+'mm',''] objs:=[ObjectModel3Ds[2],final_ObjectModel3Ds] visualize_object_model_3d (WindowHandle, objs, [], [], visParamName, visParamValue, 'Edited by AmazingRobot+', [Labels], '', PoseOut) *stop () clear_object_model_3d (plane_balls) for Index := 0 to |final_ObjectModel3Ds|-1 by 1 clear_object_model_3d (final_ObjectModel3Ds[Index]) endfor return () 谢谢您的信任~

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值