Halcon算子学习:create_sheet_of_light_model

在这里插入图片描述

create_sheet_of_light_model

(ProfileRegion : : GenParamName, GenParamValue : SheetOfLightModelID)
创建一个执行线结构光技术3D测量的的模型

输入:
ProfileRegion
包含要处理的轮廓的图像的ROI。(如果所提供的区域不是矩形的,则使用其最小的外接矩形)

  • GenParamName
    可以为线结构光模型调整的通用参数的名称。
    默认值:“min_gray”
    值列表:’ uity_solving’, ‘calibration’, ‘method’, ‘min_gray’, ‘num_profiles’, ‘offset_x’, ‘offset_y’, ‘offset_z’, ‘scale’, ‘scale_x’, ‘scale_y’, ‘scale_z’, ‘score_type’

  • GenParamValue
    可以为线结构光模型调整的通用参数的值。
    默认值:50
    建议值:‘default’, ‘center_of_gravity’, ‘last’, ‘first’, 'bright ', ‘none’, ‘intensity’, ‘width’, ‘offset_scale’, 50,100,150,180

输出:

  • SheetOfLightModelID
    用于使用和访问光照模型的句柄。

描述

操作符create_sheet_of_light_model使用线结构光技术创建一个模型来执行3d测量。

该技术通过使用区域扫描摄像机和光线投影仪(通常是激光线投影仪)对不透明和漫反射固体的表面进行三维重建。照相机和放映机必须安装好,使它们的主轴形成三角形。三角测量的值通常选择在30°到60°之间。投射的光线在空间中定义了一个平面(结构光平面)。这个平面与被测量的固体表面相交,并建立了一个对摄像机可见的表面轮廓(Profile)。通过移动固体在测量系统前面,(即如照相机和激光器的组合),就有可能记录整个固体的表面。作为一种替代方案,测量系统也可以在被测表面上移动。请注意,轮廓在轮廓图像中必须大致水平定位,因为它们是逐列处理的。

如果有测量装置的几何信息,就可以计算出重建曲面的真实三维坐标。浏览所需几何图形的描述(即,标定)的信息,请参阅操作符set_sheet_of_light_param。如果没有这样的信息,测量的结果是一个视差图像(disparity image),其中每个像素保存着被测轮廓的亚像素精确位置的记录

操作员在SheetOfLightModelID中返回光表模型的句柄,该句柄用于对光表模型的所有进一步操作,如修改模型的参数、测量轮廓、应用标定转换或访问测量结果。

强制输入图像参数

为了执行测量,您将不得不设置以下输入图标参数:

  • ProfileRegion:定义轮廓图像的区域,操作符measure_profile_sheet_of_light将处理这些区域。这个区域应该是矩形的,可以通过使用操作符gen_rectangle1生成。如果传递给ProfileRegion的区域不是矩形的,那么将使用其最小的外接矩形(包围框)。注意,ProfileRegion仅由操作符measure_profile_sheet_of_light考虑,在处理视差图像时忽略它。

线结构光模型的默认设置参数

  • 线结构光模型的默认设置被用来在基本配置中执行非校准的测量。以下列表提供了默认情况下使用的参数值的概述(有关所有受支持的通用参数的详细描述,请参阅set_sheet_of_light_param):

  • ‘method’
    is set to ‘center_of_gravity’

  • ‘min_gray’:
    is set to 100

  • ‘num_profiles’
    is set to 512

  • ‘ambiguity_solving’
    is set to ‘first’

  • ‘score_type’
    is set to ‘none’

  • ‘calibration’
    is set to ‘none’

修改模型参数

我们建议根据您的特定度量任务调整默认参数,以提高度量的质量或缩短运行时间。如果需要校准结果,还必须修改模型参数的默认值。

create_sheet_of_light_model提供了通用参数GenParamName和GenParamValue来修改大多数模型参数的默认值。注意,还可以使用set_sheet_of_light_param操作符设置模型参数。然而,使用第二个操作符,一次只能设置一个参数,而使用create_sheet_of_light_model一次可以设置多个参数。有关所有受支持的通用参数的详细描述,请参阅set_sheet_of_light_param。

请注意,以下模型参数无法使用create_sheet_of_light_model操作符设置,因此必须使用set_sheet_of_light_param操作符设置:
‘camera_parameter’、‘camera_pose’、‘lightplane_pose’和’movement_pose’。

可以使用操作符get_sheet_of_light_param查询模型参数的值。操作符query_sheet_of_light_params返回所有受支持的模型参数的名称。

使用简化的线结构光模型参数

在一个简单的设置或是否为一个真正的度量标定是必要的,观测到的视差图转换成3D值可以控制使用简化的参数集的线结构光模型:

通过将set_sheet_of_light_param的校准设置为‘offset_scale’,位姿和相机参数将更改为这样的值,即一个像素的偏移量对应于3D结果中的一个单元。这允许从一个未校准的线结构光模型创建一个三维物体模型和三维图像。

从视差到三维坐标的转换可以通过六个参数来控制:‘scale_x’、‘scale_y’、‘scale_z’、‘offset_x’、‘offset_y’、‘offset_z’。有关所有受支持的通用参数的详细描述,请参阅set_sheet_of_light_param。

自由的线结构光模型

由于在操作符create_sheet_of_light_model调用期间以及在接下来的操作期间为模型分配了内存,所以当模型不再使用时,操作符clear_sheet_of_light_model应该显式地释放该模型。

在多个线程中使用句柄

请注意,在多线程中使用线结构光模型’“SheetOfLightModelID’的句柄时必须特别小心。同一句柄不能在不同的线程中并发使用,如果它们修改了句柄。因此,您必须小心,特别是当线程调用更改句柄数据的操作符时。你可以在操作符的“注意”部分找到相应的提示。无论如何,如果您仍然希望在不同线程中并发写入句柄的操作符中使用相同的句柄,则必须同步这些线程,以确保它们不会同时访问相同的句柄。如果您不确定同一句柄的用法是否线程安全,请参阅相应参考手册条目的“注意”部分,如果其中包含指向此问题的警告。但是,可以在不同的线程中独立安全地使用不同的句柄。

示例:

* Create the rectangular region in which the profiles are measured.
gen_rectangle1 (ProfileRegion, 120, 75, 195, 710)
*
* Create a model in order to measure profiles according to
* the sheet-of-light technique. Simultaneously set some
* parameters for the model.
create_sheet_of_light_model (ProfileRegion, ['min_gray','num_profiles', \'ambiguity_solving','score_type'], \[70,290,'first','width'], \SheetOfLightModelID)
*
* 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 disparity and score images
get_sheet_of_light_result (Disparity, SheetOfLightModelID, 'disparity')
get_sheet_of_light_result (Score, SheetOfLightModelID, 'score')
*
* Close the sheet-of-light handle once the measurement
* has been performed
clear_sheet_of_light_model (SheetOfLightModelID)

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

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

相关文章

腾讯研究院院长司晓:互联网大脑的人文侧面

1989年万维网推出至今,互联网已经走过了30个年头。在这激荡的30年,随着社交网络、移动通信、云计算、物联网、工业互联网、大数据、人工智能等新技术和新事物不断涌现,互联网持续建立起复杂而庞大的连接,成为驱动经济与社会快速变…

C++对单向链表进行排序

#include <iostream> using namespace std; struct student {int num;char name[10];float score[3];float sum;student *next; };void main() {student a[5];student *h, *curr, *temp, *last; //h头指针&#xff0c;curr当前指针&#xff0c;last当前指针的上一个指针…

第六周周总结

在第六周中是忙碌的&#xff0c;对于高数&#xff0c;上课的内容也在快速的翻篇&#xff0c;我的大脑也在快速的运转着&#xff0c;讲概念的时候我很难理解过来&#xff0c;但是讲习题的时候勉勉强强能听的懂&#xff0c;每次在听不懂的地方我都会打个问号&#xff0c;以便于自…

Halcon算子学习:get_sheet_of_light_result

get_sheet_of_light_result ( : ResultValue : SheetOfLightModelID, ResultName : ) 获得用线结构光技术进行测量的标志性结果 输出&#xff1a; ResultValue 理想的测量结果。 SheetOfLightModelID 要使用的线结构光模型的句柄 输入&#xff1a; ResultName 规定应提供何…

pytorch查看模型的可训练参数

for name, param in model.named_parameters():if param.requires_grad:print(name,:,param.size())

Oracle 循环相关

1.简单的循环以loop关键字开始, exit when子句退出循环, end loop子句为循环结束标志。DECLAREPI CONSTANT NUMBER (9, 7) : 3.1415926;RADIUS INTEGER (5);AREA NUMBER (14, 2);BEGINRADIUS : 3;LOOPAREA : PI * POWER (RADIUS, 2);DBMS_OUTPUT.put_line (半…

5G芯片Top10一览,谁才是最后的赢家?

来源&#xff1a;Electronic Products、电子工程世界从无线网络基础设施和基站到智能手机再到物联网设备应用&#xff0c;这些芯片组有望简化向5G通信的过渡。5G有望提供一个完全互联的移动世界&#xff0c;其市场范围从联网汽车、智能城市、智能手机到物联网(IoT)设备&#xf…

HALCON标定板制作、标准文件输出方法、算子讲解

利用 Halcon软件自制标定板 参考博客&#xff1a; halcon相机标定及图像矫正 Halcon学习 标定助手 关键算子&#xff1a; gen_caltab ( : : XNum, YNum, MarkDist, DiameterRatio, CalPlateDescr, CalPlatePSFile : ) 为具有矩形排列标记的标定板生成标定板描述文件和相应的后…

乘法逆元小结

在求解除法取模问题(a/b)%m时&#xff0c;我们可以转化为(a%(b∗m))/b&#xff0c; 但是如果b很大&#xff0c;则会出现爆精度问题&#xff0c;所以我们避免使用除法直接计算。 可以使用逆元将除法转换为乘法&#xff1a; 假设b存在乘法逆元&#xff0c;即与m互质&#xff0…

国产光刻机的现状究竟如何?

来源&#xff1a;人民网-上海频道随着信息社会的迅速发展&#xff0c;手机、电脑、电视等各种电子设备越来越“迷你”&#xff0c;从之前的“大哥大”到现在仅仅几个硬币厚的时尚手机&#xff0c;从老式的矮胖电视到如今轻薄的液晶电视&#xff0c;都不离开集成电路的发展&…

pytorch自定义卷积核权值参数

pytorch中构建卷积层一般使用nn.Conv2d方法&#xff0c;有些情况下我们需要自定义卷积核的权值weight&#xff0c;而nn.Conv2d中的卷积参数是不允许自定义的&#xff0c;此时可以使用torch.nn.functional.conv2d简称F.conv2d torch.nn.functional.conv2d(input, weight, biasN…

如何使用UR机器人模拟软件URsim

如何使用UR机器人模拟软件URsim 机器人软件适用版本&#xff1a;Polyscope v1.3及以上 适用机器人&#xff1a;UR3、UR5、UR10 由于优傲机器人的系统是基于Linux核心开发的&#xff0c;模拟软体URsim也是在Linux系统下运行&#xff0c;通常大家使用的电脑系统为Windows&#…

C++中派生类隐式调用与显式调用基类的构造函数

通过派生类的构造函数调用基类的构造函数有两种方式&#xff0c;隐式和显式两种。 所谓隐式方式就是在派生类的构造函数中不指定对应的基类的构造函数&#xff0c;这个时候调用的是基类的默认构造函数(即含有默认参数值或不带参数的构造函数)。而所谓显式方式&#xff0c;就是在…

中国团队新型类脑芯片登上《自然》封面

来源&#xff1a;澎湃新闻网从AlphaGo战胜人类顶级围棋选手&#xff0c;到人工智能系统以90%准确率诊断儿科疾病&#xff0c;近年来&#xff0c;人工智能的突破大多从智能的某个领域接近或超过人类智能&#xff0c;距离达到人类水平的人工通用智能&#xff08;AGI&#xff0c;A…

20145324 《Java程序设计》第6周学习总结

20145324 《Java程序设计》第6周学习总结 教材学习内容总结 第十章 1、使用输入串流将数据从来源取出 InputStream 使用输出串流将数据写入目的地 OutStream 2、dump()方法并没有限定来源或目的地真实形式&#xff0c;依赖InputStream、OutStream 3、可以使用dump()从HTTP服务器…

MATLAB Robotic Toolbox 机器人工具箱示例

程序是基于Matlab2016a&#xff0c;工具箱版本为Robotic Toolbox 10.2 参考博客&#xff1a; MATLAB机器人工具箱使用 Matlab Robotic Toolbox V9.10工具箱(三)&#xff1a;轨迹规划 六轴机器人建模方法、正逆解、轨迹规划实例与Matalb Robotic Toolbox 的实现 效果&#xff1a…

人工智能最受欢迎的十大TED演讲

来源&#xff1a;DataCastle数据城堡当我们过于关注机器学习的技术实现时&#xff0c;往往就会忽略技术在未来的应用及其政治后果。本文并没有讨论最适合解决某个问题可以用什么语言或算法&#xff0c;而是从最受欢迎的非营利组织TED中收集了一系列演讲。在这一系列的演讲中&am…

C++编程(一):匈牙利命名法

匈牙利命名法 许多 Windows 程序员都使用“匈牙利标记法”作为变量命名约定。这是为了纪念具有传奇色彩的微软程序员 Charles Simonyi。这种标记法非常简单&#xff0c;其基本原则为&#xff1a; 即变量名&#xff08;标识符&#xff09;以一个或者多个小写字母开始&#xff0…

jQuery基本过滤选择器

1 <% page language"java" import"java.util.*" pageEncoding"utf-8"%>2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">3 <html>4 <head>5 <!-- jQuery基本过滤选择器 -->6 …

IndexError: tensors used as indices must be long, byte or bool tensors

下面的程序会报错IndexError: tensors used as indices must be long, byte or bool tensors mask torch.Tensor([True,True,False]) a torch.Tensor([3,2,1]) a[mask]0 print(a) 原因是索引要为long, byte 或 bool类型&#xff0c;因此需要将mask转换为bool类型&#xff0…