算子使用说明#
2D视觉算子#
输入输出#
图像读取#
简介#
图像读取用于从本地路径读取图像。
输入#
- 输入路径
类型:
String
含义:文件路径
输出#
- 输出图像
类型:
ImageColor
ImageGray
含义:向全局变量列表输出一张图像
配置参数#
- 文件输入设置
含义:文件路径的来源
范围:
从参数设置:通过配置参数 文件路径 设置文件路径
从输入变量设置:通过输入变量 输入路径 设置文件路径
- 文件路径
含义:选择图像读取路径
- 图像类型
范围:彩色图像,灰度图像
Tip
图像变量类型依据配置参数修改。
图像保存#
简介#
图像保存用于将软件中处理的图像保存到本地或u盘。
输入#
- 输入图像
类型:
ImageColor
ImageGray
含义:输入全局变量列表中的一张图像
配置参数#
- 文件保存设置
含义:文件路径的来源
范围:
从参数设置:通过配置参数 文件路径 设置文件路径
从输入变量设置:通过输入变量 输入路径 设置文件路径
- 保存路径
含义:选择图像读取路径
- 保存类型
范围:
png
jpg
bmp
- 后缀名
范围:无,时间戳,计数器
图像保存FTP#
简介#
图像保存用于将软件中处理的图像保存到FTP
输入#
- 输入图像
类型:
ImageColor
ImageGray
含义:输入全局变量列表中的一张图像
配置参数#
FTP服务器设置组
- FTP服务器地址
- 含义:FTP服务器地址
范围:默认127.0.0.1
- FTP服务器端口
- 含义:FTP服务器网络端口
范围:默认21
- 用户名
含义:FTP服务器用户名
- 密码
含义:FTP服务器密码
- 超时(ms)
含义:FTP服务器连接最大时间,超过即停止连接
文件保存设置组
- 文件保存设置
含义:图像保存路径的来源
范围:
从参数设置:通过配置参数 保存路径 设置图像存取路径
从输入变量设置:通过输入变量 输入路径 设置图像存取路径
- 保存路径
含义:选择图像保存在创建的FTP站点下的路径
- 保存类型
范围:
png
jpg
bmp
- 后缀名
范围:无,时间戳,计数器
1 搭建FTP服务器
此说明书针对的是Windows10 专业版(professional)
1.1 安装IIS Web服务器
1.1.1 在 控制面板 中找到 程序和功能 并打开
1.1.2 在 程序和功能 界面点击 启用或关闭Windows功能
1.1.3 在 启用或关闭Windows功能 弹窗中找到 Internet Information Services (或者中文版 Internet信息服务)并打开
1.1.4 勾选 Internet Information Services 下的 FTP服务器 , Web管理服务 , 万维网服务 。勾选后点 确定
Note
务必确保勾选符号都为对号。如果是黑色方框,则说明有子项没有勾选
1.2 设置开机自动启动FTP服务
1.2.1 win + R 打开运行窗口,输入 services.msc 后点击 确定
1.2.2 点击 扩展 ,找到 Microsoft FTP Service ,鼠标右键点击 属性
1.2.3 在属性弹窗中点击 常规 , 启动类型选择 自动 ,服务状态选择 启动 。然后点击 应用->确定
Tip
这里即便设置FTP服务器为开机启动,但是有时重启电脑后还是不能自动启动,需要手动启动该服务器。
1.3 配置FTP服务器
1.3.1 在控制面板中找到 管理工具 并打开
1.3.2 找到 Internet Information Services(IIS)管理器 ,鼠标右击后选择 发送到 -> 桌面快捷方式
1.3.3 点击桌面上的 Internet Information Services(IIS)管理器,鼠标右击在左侧栏的 网站,选择 添加FTP站点
1.3.4 自定义 FTP站点名称 、 物理路径 后,点击 下一步
1.3.5 查看本机ip地址。打开cmd,输入 ipconfig ,复制IPv4的地址
1.3.6 将刚刚复制的地址粘贴到新建FTP站点的IP地址,并选择端口。同时点击 无SSL(L) -> 下一步
1.3.7 勾选身份验证的 匿名 、 基本 ,选择 所有用户 都允许访问,并勾选 读取 、 写入 的权限,最后点击 完成
1.4 允许FTP服务器通过Windows防火墙
1.4.1 在控制面板中,点击 Windows Defender防火墙
1.4.2 选择 允许应用或功能通过 Windows Defender 防火墙
1.4.3 找到 FTP服务器 ,勾选后方对应的 专用 、 公用
2 特定的用户访问
在成功搭建FTP服务器的基础上,设置用户名和密码,以实现用户权限控制,划分使用FTP服务器的用户
Tip
若所有的用户均可以访问,则不需要执行1.3以后的步骤
2.1 创建FTP用户
2.1.1 win + R 打开运行窗口,输入 compmgmt.msc 后点击 确定
2.1.2 点击 系统工具 -> 本地用户和组 ,鼠标右击 用户 ,点击 新用户
2.1.3 分别填写输入 用户名 、 密码、 确认密码,并勾选 用户不能更改密码 、 密码永不过期 。完成后点击 创建
Note
这里的账户实际上就是计算机的账户。所以可以使用自己登录电脑的用户名和密码来登录FTP站点,不用新建 test 账户; 用户名和全名需要保持一致,密码随意
2.2 设置特定用户
2.2.1 点击FTP授权规则,删除所有用户
2.2.2 添加允许授权规则,选择指定的用户,填入新增的用户名,并勾选用户权限(读取/写入),完成后点击 确定
2.3 FTP验证测试
2.3.1 点击右侧 操作栏 -> 编辑网站 -> 基本设置
2.3.2 点击 测试设置
2.3.3 若 测试结果 显示 授权:无法验证对路径的访问,则执行步骤3.4并点击 关闭。否则,验证测试结束
2.3.4 点击 连接为
2.3.5 设置凭据:登录刚刚创建的用户名帐号和密码,点击 确定。再次返回到 测试设置 ,此时 测试结果`显示为 `授权:路径可访问
3 文件的上传和下载
3.1 文件的下载
3.1.1 浏览器或者文件管理器地址栏中输入FTP地址,输入刚刚创建的(或已有的)用户名和密码,即可实现特定用户访问
3.1.2 登录成功后,点击相应的文件即可下载
3.2 文件的上传
3.2.1 在资源管理器中,输入 ftp://your ip address:端口号
或选择FTP相对应的物理路径
3.2.2 输入对应的用户名、密码后,直接拖拽或创建,即可实现上传功能
Note
到此FTP服务器搭建成功,同一个局域网内其他人不仅可以访问到你的电脑,还可以相互传输文件。
预处理#
图像滤波#
简介#
将图像进行滤波预处理,使其处理成特征易于分析的情况。
输入#
- 输入图像
类型:
ImageColor
ImageGray
含义:待处理图像
输出#
- 输出图像
类型:
ImageColor
ImageGray
含义:结果图
作用#
算法 |
作用 |
---|---|
方盒滤波 |
使用方框滤波器来模糊一张图像 |
均值滤波 |
均值滤波是典型的线性滤波算法平滑图像,不能消除噪声,但能减弱 |
高斯滤波 |
对高斯噪声具有比较好的效果,同时对图像具有一定平滑作用 |
中值滤波 |
中值滤波是一种非线性滤波,对于噪声去除效果非常明显。可以消除小斑点(椒盐噪声) |
双边滤波 |
双边滤波是一种非线性滤波器,它可以达到保持边缘、降噪平滑的效果 |
理想低通滤波 |
低频对应图像变化缓慢部分,对应着图像大致相貌和轮廓。低通滤波,过滤图像高频部分,平滑图像。理想低通滤波器的滤波非常尖锐 |
理想高通滤波 |
高频对应图像变化剧烈部分,对应图像细节。高频滤波,让图像高频部分通过,锐化图像,使瑕疵缺陷部分凸显。理想高通滤波器的滤波非常尖锐 |
高斯低通滤波 |
低频对应图像变化缓慢部分,对应着图像大致相貌和轮廓。低通滤波,过滤图像高频部分,平滑图像。高斯低通滤波器的滤波非常平滑 |
高斯高通滤波 |
高频对应图像变化剧烈部分,对应图像细节。高频滤波,让图像高频部分通过,锐化图像,使瑕疵缺陷部分凸显。高斯低通滤波器的滤波非常平滑 |
巴特沃斯低通滤波 |
低频对应图像变化缓慢部分,对应着图像大致相貌和轮廓。低通滤波,过滤图像高频部分,平滑图像。巴特沃斯低通滤波器的滤波介于理想低通滤波器和高斯低通滤波器之间 |
巴特沃斯高通滤波 |
高频对应图像变化剧烈部分,对应图像细节。高频滤波,让图像高频部分通过,锐化图像,使瑕疵缺陷部分凸显。巴特沃斯高通滤波器的滤波介于理想高通滤波器和高斯高通滤波器之间 |
参数#
- 滤波处理方法
含义:选择滤波处理方法
范围:方盒滤波,均值滤波,高斯滤波,中值滤波,双边滤波,理想低通滤波,理想高通滤波,高斯低通滤波,高斯高通滤波,巴特沃斯低通滤波,巴特沃斯高通滤波
- 方盒滤波-滤波核半径
含义:核越大,效果越明显
范围:3*3,5*5,7*7,9*9,11*11,13*13,15*15,17*17,19*19,21*21
- 均值滤波-滤波核半径
含义:核越大,效果越明显
范围:3*3,5*5,7*7,9*9,11*11,13*13,15*15,17*17,19*19,21*21
- 高斯滤波-滤波核半径
含义:核越大,效果越明显
范围:3*3,5*5,7*7,9*9,11*11,13*13,15*15,17*17,19*19,21*21
- 中值滤波-滤波核半径
含义:核越大,效果越明显
范围:3*3,5*5,7*7,9*9,11*11,13*13,15*15,17*17,19*19,21*21
- 双边滤波-滤波核半径
含义:核越大,效果越明显
范围:3*3,5*5,7*7,9*9,11*11,13*13,15*15,17*17,19*19,21*21
- 理想低通滤波-滤波核半径
含义:核越大,效果越明显
范围:[0.1,300]
- 理想高通滤波-滤波核半径
含义:
范围:[0.1,300]
- 高斯低通滤波-滤波核半径
含义:
范围:[0.1,300]
- 高斯高通滤波-滤波核半径
含义:
范围:[0.1,300]
- 巴特沃斯低通滤波-滤波核半径
含义:
范围:[0.1,300]
- 巴特沃斯低通滤波-阶数
含义:
范围:[1,4]
- 巴特沃斯高通滤波-滤波核半径
含义:
范围:[0.1,300]
- 巴特沃斯低通滤波-阶数
含义:
范围:[1,4]
范例#
算法 |
示例:输入图 |
示例:输出图 |
---|---|---|
方盒滤波 |
||
均值滤波 |
||
高斯滤波 |
||
中值滤波 |
||
双边滤波 |
||
理想低通滤波 |
||
理想高通滤波 |
||
高斯低通滤波 |
||
高斯高通滤波 |
||
巴特沃斯低通滤波 |
||
巴特沃斯高通滤波 |
图像增强#
简介#
将图像进行增强预处理,使其处理成特征易于分析的情况。
输入#
- 输入图像
类型:
ImageColor
ImageGray
含义:待处理图像
输出#
- 输出图像
类型:
ImageColor
ImageGray
含义:结果图
作用#
算法 |
作用 |
---|---|
尺寸变换 |
将图像的长和宽进行等比例放大或者缩小 |
直方图均衡 |
直方图均衡化通常用来增加图像的全局对比度。特别对于那些有用的数据被相似数据所代表的情况。通过直方图均衡化将亮度更好的分布于直方图上,使得低对比度区域有了更高的对比度。该方法对于前景和背景都很暗或都很亮的情况有很好的调节效果 |
灰度反色 |
将图像的黑白颠倒 |
亮度对比度变换 |
亮度是图像的明暗度。亮度用灰度等级表示,灰度值越高,图像越亮。对比度是颜色之间的对比程度,对比度越大,各颜色之间的分辨越明显 |
Gamma变换 |
通过Gamma校正来调整图像的细节特征 |
局部增强 |
通过改变增强比例,来使得图像的灰度值有黑白分明的界限 |
均匀增强 |
较局部增强,均匀增强的灰度值更均匀,黑白界限没有那么分明 |
双阈值线性化 |
根据最小阈值与最大阈值对图像灰度值进行线性操作 |
图像相乘 |
对图像的每个像素强度值乘以增强比例,再加上偏置值 |
像素操作 |
对图像像素灰度值进行加,减,乘,除运算 |
灰度裁切 |
将输入图像的灰度范围截断至某一范围,大于最大阈值则设为最大值,小于最小阈值的则设为最小值 |
灰度拉伸 |
将输入图像的灰度值进行线性系数变化 |
灰度区间 |
如果图像像素的灰度值在最小,最大阈值范围内,则保持原灰度值,否则设为0 |
参数#
- 图像增强方法
含义:选择图像增强方法
范围:尺寸变换,直方图均衡,灰度反色,亮度对比度变换,Gamma变换,局部增强,均匀增强,双阈值线性化,图像相乘,像素操作,灰度裁剪,灰度拉升,灰度区间
- 尺寸变换-尺寸变化系数:
含义:系数即比例
范围:[0.1,10]
- 亮度对比度变换-缩放因子:
含义:
范围:[0,255]
- 亮度对比度变换-缩放值偏置值:
含义:
范围:[0,255]
- Gamma变换-Gamma变换系数:
含义:Gamma值越大,越能将图像的细节特征变得明显。
范围:[0,10]
- 局部增强-局部增强比例:
含义:系数即比例
范围:[0.1,10]
- 均匀增强-均匀增强比例:
含义:系数即比例
范围:[0.1,10]
- 双阈值线性化-最小阈值:
含义:最小阈值
范围:[0,255]
- 双阈值线性化-最大阈值:
含义:最大阈值
范围:[0,255]
- 图像相乘-增强比例:
含义:每个像素相乘的值
范围:[0.001,200]
- 图像相乘-偏置值:
含义:每个像素相加的值
范围:[-255,255]
- 像素操作-像素运算方法:
含义:像素运算的方法
范围:相加,相减,相乘,相除
- 像素操作-灰度值:
含义:像素运算的右值
范围:[1,255]
- 灰度裁切-最小阈值:
含义:最小阈值
范围:[0,255]
- 灰度裁切-最大阈值:
含义:最大阈值
范围:[0,255]
- 灰度拉伸-最小阈值:
含义:最小阈值
范围:[0,255]
- 灰度拉伸-最大阈值:
含义:最大阈值
范围:[0,255]
- 灰度区间-最小阈值:
含义:最小阈值
范围:[0,255]
- 灰度区间-最大阈值:
含义:最大阈值
范围:[0,255]
范例#
算法 |
示例:输入图 |
示例:输出图 |
---|---|---|
尺寸变换 |
||
直方图均衡 |
||
灰度反色 |
||
亮度对比度变换 |
||
Gamma变换 |
||
局部增强 |
||
均匀增强 |
||
双阈值线性化 |
||
图像相乘 |
||
像素操作-加 |
||
像素操作-减 |
||
像素操作-乘 |
||
像素操作-除 |
||
灰度裁剪 |
||
灰度拉升 |
||
灰度区间 |
彩色图转灰度图#
简介#
将彩色RGB图像转换为单通道灰度图像
输入#
- 输入图像
类型:
ImageColor
含义:待处理的彩色图像
输出#
- 输出图像
类型:
ImageGray
含义:灰度结果图
范例#
输入图
输出图
边缘检测#
简介#
将图像进行边缘检测预处理,使其处理成特征易于分析的情况。
输入#
- 输入图像
类型:
ImageColor
ImageGray
含义:待处理图像
输出#
- 输出图像
类型:
ImageColor
ImageGray
含义:结果图
作用#
算法 |
作用 |
---|---|
Canny |
Canny 算子是目前理论上相对最完善的一种边缘检测算法。使用最为广泛 |
Sobel |
Sobel 算子根据像素点上下、左右邻点灰度加权差,在边缘处达到极值这一现象检测边缘。对噪声具有平滑作用,提供较为准确的边缘方向信息。边缘检测突出图像的轮廓,轮廓高亮显示,轮廓的两边图像明显变暗 |
Scharr |
由于 Sobel 算子小核计算导数的精度比较低, Scharr 算子同Sobel 算子的速度一样快,但是准确率更高,所以利用 3x3 滤波器实现图像边缘提取更推荐使用 Scharr 算子 |
Laplacian |
若只关心边缘点的位置而不需要了解其周围的实际灰度差时,一般选择该算子提取图像的边缘 |
参数#
- 图像边缘检测方法
含义:选择图像边缘检测的方法
范围:Canny,Sobel,Sharr,Laplacian
- Canny-最小值:
含义:Canny低阈值,阈值越大,边缘点越少。阈值越小,小的边缘点越多
范围:[0,255]
- Canny-最大值:
含义:Canny高阈值,阈值越大,边缘点越少。阈值越小,小的边缘点越多
范围:[0,255]
- Canny-核大小:
含义:核越大,效果越明显
范围:3*3,5*5,7*7,9*9,11*11,13*13,15*15,17*17,19*19,21*21
- Sobel-核大小:
含义:核越大,效果越明显
范围:3*3,5*5,7*7,9*9,11*11,13*13,15*15,17*17,19*19,21*21
- Laplacian-核大小:
含义:核越大,效果越明显
范围:3*3,5*5,7*7,9*9,11*11,13*13,15*15,17*17,19*19,21*21
范例#
算法 |
示例:输入图 |
示例:输出图 |
---|---|---|
Canny |
||
Sobel |
||
Scharr |
||
Laplacian |
形态学#
简介#
将图像进行形态学操作预处理,使其处理成特征易于分析的情况。
输入#
- 输入图像
类型:
ImageColor
ImageGray
含义:待处理图像
输出#
- 输出图像
类型:
ImageColor
ImageGray
含义:结果图
作用#
算法 |
作用 |
---|---|
开运算 |
先腐蚀后膨胀。作用为去除噪声,消除小物体;在纤细点处分离物体;平滑较大物体的边界的同时并不明显改变其面积 |
闭运算 |
先膨胀后腐蚀的过程称为闭运算。作用为排除小型空洞(指黑色区域);平滑物体轮廓;弥合(连接)窄的间断点,沟壑;填补轮廓线断裂 |
膨胀 |
膨胀是将与物体接触的所有背景合并到该物体中,使边界向外部扩张的过程。膨胀就是“变胖”,可以用来填补物体中的划痕、空洞 |
腐蚀 |
腐蚀是消除边界,使边界内部收敛的过程。腐蚀就是“变瘦”,可用来消除图像中较小的干扰信息。 |
底帽 |
原图像与“闭运算”的结果图之差。底帽用于检测缺陷和瑕疵 |
顶帽 |
原图像与“开运算”的结果图之差为顶帽。作用为用于背景提取顶帽运算用来分离比邻近点亮一些的斑块。当一幅图像具有大幅的背景的时候,而微小物品比较有规律的情况下,可以使用顶帽运算进行背景提取 |
形态学梯度 |
形态学梯度实为膨胀图与腐蚀图之差。作用为突出高亮区域的外围;为轮廓查找提供新思路 |
参数#
- 图像形态学操作方法
含义:选择图像形态学操作的方法
范围:开运算,闭运算,膨胀,腐蚀,底帽,顶帽,形态学梯度
- 形态学操作-核大小:
含义:
范围:3*3,5*5,7*7,9*9,11*11,13*13,15*15,17*17,19*19,21*21
范例#
算法 |
示例:输入图 |
示例:输出图 |
---|---|---|
开运算 |
||
闭运算 |
||
膨胀 |
||
腐蚀 |
||
底帽 |
||
顶帽 |
||
形态学梯度 |
图像变换#
简介#
对图像进行几何变换
输入#
- 输入图像
类型:
ImageColor
ImageGray
含义:待处理图像
输出#
- 输出图像
类型:
ImageColor
ImageGray
含义:结果图
作用#
算法 |
作用 |
---|---|
镜像 |
将图像进行镜像处理 |
旋转 |
图像旋转是将图像旋转一个角度 |
平移 |
图像平移是将图像沿着水平或者垂直方向进行像素移动。向右为水平方向正方向,向下为垂直方向正方向 |
参数#
- 图像变换方法
含义:选择图像变换的方法
范围:镜像,旋转,平移
- 镜像-镜像方法:
含义:选择镜像的方法
范围:同时沿x,y翻转,沿x轴翻转,沿Y轴翻转
- 旋转-旋转方法:
含义:选择旋转的方法
范围:图像按原尺寸旋转,保留原图内容,放大尺寸
- 旋转-旋转角度:
含义:旋转的角度
范围:[0,180]
- 平移-水平平移量:
含义:水平方向平移的像素大小
范围:[0,MAX]
- 平移-垂直平移量:
含义:垂直方向平移的像素大小
范围:[0,MAX]
范例#
算法 |
示例:输入图 |
示例:输出图 |
---|---|---|
镜像 |
||
旋转 |
||
平移 |
阈值分割#
简介#
对图像的像素灰度强度进行阈值过滤分割的二值化擦操作
输入#
- 输入图像
类型:
ImageGray
含义:待处理图像
输出#
- 输出图像
类型:
ImageGray
含义:结果图
作用#
算法 |
作用 |
---|---|
全局自动二值化 |
将图像进行自动黑白二值处理 |
全局手动二值化 |
将图像进行手动黑白二值处理 |
局部自适应二值化 |
自适应阈值不需要确定一个固定的阈值,而是可以根据对应的自适应方法,通过图像的局部特征自适应地设定阈值,做出二值化处理 |
计算灰度距离 |
计算输入图像的各个像素与灰度阈值之差的绝对值 |
双阈值 |
介于最小阈值与最大阈值之间像素强度置为255,否则置为0 |
参数#
- 阈值分割方法
含义:选择阈值分割的方法
范围:全局自动二值化,全局手动二值trans_dst - 范围:大于阈值,为255,否则为0,大于阈值,为0,否则为255,大于阈值,为阈值,否则为原像素强度,大于阈值,为原像素强度,否则为0,大于阈值,为0,否则为原像素强度
- 全局手动二值化-阈值:
含义:全局手动二值化的阈值
范围:[0,255]
- 局部自适应二值化-自适应最大阈值:
含义:
范围:[0,255]
- 局部自适应二值化-自适应方法:
含义:选择自适应的方法
范围:自适应均值阈值,自适应高斯阈值
- 局部自适应二值化-阈值处理方法:
含义:选择阈值处理方法
范围:像素大于阈值时,为255,否则为0,像素大于阈值时,为0,否则为255
- 局部自适应二值化-核大小:
含义:
范围:3*3,5*5,7*7,9*9,11*11
- 局部自适应二值化-自适应变量:
含义:偏移值调整量
范围:[-100,100]
- 计算灰度距离-方法
含义:选择计算灰度距离的方法
范围:自动阈值,手动阈值
- 计算灰度距离-阈值
含义:当选手动阈值时,该参数有效
范围:[0,255]
- 双阈值-最小阈值
含义:要保留灰度强度值范围的下限值
范围:[0,255]
- 双阈值-最大阈值
含义:要保留灰度强度值范围的上限值
范围:[0,255]
范例#
算法 |
示例:输入图 |
示例:输出图 |
---|---|---|
全局自动二值化 |
||
全局手动二值化 |
||
局部自适应二值化 |
||
计算灰度距离 |
||
双阈值 |
标定#
2D手眼标定变换#
简介#
2D 手眼标定转换算子主要用于机器人定位抓取应用。其作用是将图像像素坐标转换为机器人坐标。即将像素单位转换为 mm 单位。
输入#
- 输入位姿
类型:
Pose2D
Pose2DList
含义:像素坐标下位姿
- 输入文件路径
类型:
std::string
含义:2D手眼标定文件(*.dmcalib)的路径
输出#
- 输出位姿
类型:
Pose2D
Pose2DList
含义:机器人结果位姿
参数#
- 文件路径
含义:2D手眼标定文件(*.dmcalib)的路径
范围:
- 文件输入设置
含义:ROI 区域内搜索线的数目
范围:从参数设置,从输入变量设置
定位#
形状匹配#
简介#
形状匹配主要用于工业场景的目标定位,需要先通过 2D模板制作工具 制作模板,再在算子中配置模板文件,才能进行匹配计算。
输入#
- 输入图像
类型:
ImageColor
ImageGray
含义:待检测图像
ROI#
- 感兴趣区域
类型:
ROI2DRect
ROI2DRotatedRect
输出#
- 输出位姿
类型:
Pose2DList
含义:识别出的目标位姿,包含x、y、theta值
- 得分
类型:
DoubleList
含义:识别结果的分数[0,1],顺序与输出位姿一致
- 输出图像
类型:
Debuge2D
含义:结果图
参数#
该算子的参数可分为 简易参数组 与 专家参数组
简易参数组#
- 模板图路径
含义:选择用于匹配的dmtemp模板路径
- 目标最大数量
含义:识别输出的最大目标数量
范围:[1,99]
- 精度
含义:识别目标的精度
范围:[1,99]
- 速度
含义:识别目标的速度
范围:[1,99]
专家参数组#
- 模板图路径
含义:选择用于匹配的dmtemp模板路径
- 最小得分值
含义:输出目标的最小得分
范围:[0.1,1]
Note
分数的提高,输出匹配结果的会与训练的模板更加匹配,但输出结果会有缺失。
- 起始角度
含义:相对于模板角度的起始角度
范围:[-180,180]
- 终止角度
含义:相对于模板角度的终止角度
范围:[-180,180]
- 最大重叠率
含义:待搜索图像上出现多个目标时,目标之间相互重叠。重叠率越高,表示能够容忍的重叠区域越大
范围:[0.01,0.99]
Note
重叠率的提高,会影响搜索速度,同时也会产生错误搜索结果。
- 金字塔层数
含义:搜素加速的策略方法,-1时为自动。金字塔层数越小,搜索速度越慢,稳定性越高。
范围:-1,0,1,2,3,4,5,6,7
- 贪婪系数
含义:搜索启发式。设置的越小,越早退出判断的循环,越有可能找不到对象。
范围:[0,1]
- 排序使能
含义:开关显示功能
- 排序方式
含义:排序维度
范围:
X:按X坐标优先排序
Y:按Y坐标优先排序
- 细长件
含义:当检测细长件有误时,可打开此标志位
范例#
输入图像
输出图像
2DMark定位#
简介#
2DMark定位主要用于工业场景的目标定位, 依靠识别2D标记板进行定位抓取操作
输入#
- 输入图像
类型:
ImageColor
ImageGray
含义:待检测图像
输出#
- 输出位姿
类型:
Pose3DList
含义:识别出所有2DMark的位姿
- 是否检测到2DMark
类型:
Bool
含义:待测图像里是否有检测到2DMark
- 输出图像
类型:
Debuge2D
含义:结果图, 识别到的2DMark位姿及其角点
参数#
- 标记板类型
含义:默认为DM-Mark2D-50A
- 内参文件
含义:相机的内参文件, 需要进行内参标定得到
范例#
输入图像
输出图像
图像处理#
图片复制#
简介#
图像复制,复制图片到新的变量。
输入#
- 输入图像
类型:
ImageColor
ImageGray
含义:待处理图像
输出#
- 输出图像
类型:
ImageColor
ImageGray
含义:结果图
区域绘制#
简介#
在图像上绘制图形变量的信息,并显示绘制结果。
输入#
- 输入图像
类型:
ImageColor
ImageGray
含义:待处理图像
- 输入区域
类型:
Region
含义:掩模区域
输出#
- 输出图像
类型:
ImageColor
ImageGray
含义:结果图
参数#
- 绘制方式
含义:绘制方式,原图绘制直接把该区域的原图像素直接复制,指定颜色填充是按照设置的颜色像素数值进行区域内的全部填充
范围:原图绘制,指定颜色填充
- 前景绘制
含义:只对在图像中的前景区域设置有效
范围:红,绿,蓝,灰
- 背景绘制
含义:只对在图像中的背景区域设置有效
范围:红,绿,蓝,灰
范例#
算法 |
示例:输入图 |
示例:输出图 |
---|---|---|
原图绘制 |
||
指定颜色绘制 |
获取图像信息#
简介#
获取图像的信息,得到图像的宽、高、通道数。
输入#
- 输入图像
类型:
ImageColor
ImageGray
含义:待检测图像
输出#
- 宽
类型:
Int
含义:图像的宽
- 长
类型:
Int
含义:图像的长
- 通道
类型:
Int
含义:图像的通道数
图像通道分离#
简介#
将彩色图像(三通道图像)按 RGB 或 HSV 方式进行通道分离,输出三个分离后的通道(灰度)图像。
输入#
- 输入图像
类型:
ImageColor
含义:待处理图像
输出#
- 输出图像1
类型:
ImageGray
含义:R 通道/H 通道图像变量
- 输出图像2
类型:
ImageGray
含义:G 通道/S 通道图像变量
- 输出图像3
类型:
ImageGray
含义:B 通道/V 通道图像变量
参数#
- 转换方式
含义:转换方式
范围:BGR,HSV
范例#
输入图像
输出图像 - BGR
输出图像 - HSV
图像通道合并#
简介#
将按 RGB 或 HSV 方式进行通道分离后的三个通道(灰度)图像合并为彩色图像(三通道图像)。
输入#
- 输入图像1
类型:
ImageGray
含义:待处理R 通道/H 通道图像变量
- 输入图像2
类型:
ImageGray
含义:待处理G 通道/S 通道图像变量
- 输入图像3
类型:
ImageGray
含义:待处理B 通道/V 通道图像变量
输出#
- 输出图像
类型:
ImageColor
含义:结果图
参数#
- 转换方式
含义:转换方式
范围:BGR,HSV
范例#
输入图像 - BGR
输入图像 - HSV
输出图像
区域逻辑运算#
简介#
将 2 个区域进行逻辑运算,包括与,或,异或。
输入#
- 输入区域1
类型:
Region
含义:待处理区域1
- 输入区域2
类型:
Region
含义:待处理区域2
输出#
- 输出区域
类型:
Region
含义:结果区域
参数#
- 逻辑运算方式
含义:逻辑运算方式,与是将相同区域输出,或是将全部区域输出,异或是将不同区域输出
范围:与,或,异或
范例#
输入区域1
输入区域2
输出区域 - 与
输出区域 - 或
输出区域 - 异或
ROI#
图像裁切#
简介#
图像裁切可用来裁切图片,使其裁切为适当区域大小。
输入#
- 输入图像
类型:
ImageColor
ImageGray
含义:待处理图像
ROI#
- 感兴趣区域
类型:
ROI2DRect
ROI2DRotatedRect
输出#
- 输出图像
类型:
ImageColor
含义:结果图
范例#
输入图像
输出图像
ROI转Region#
简介#
ROI转Region算子能够创建矩形、旋转矩形的掩膜 ROI 区域。所生成的掩膜 ROI 变量能够被形状匹配算子使用。掩膜 ROI 区域表示该区域内图像不被搜索。
输入#
- 输入图像
类型:
ImageColor
ImageGray
含义:待处理图像
ROI#
- 感兴趣区域
类型:
ROI2DRect
ROI2DRotatedRect
输出#
- 输出区域
类型:
Region
含义:结果区域
范例#
输入ROI
输出区域
ROI生成#
简介#
ROI 生成算子是用来创建图像 ROI 区域,该算子能够创建矩形、旋转矩形的 ROI 区域。所生成的 ROI 变量能够被预处理、定位、检测和测量模块的算子使用。ROI 区域能够使算子在用户设计的区域内查找和处理,使算法准确度、效率均有效提升。
输入#
- 输入图像
类型:
ImageColor
ImageGray
含义:待处理图像
ROI#
- 感兴趣区域
类型:
ROI2DRect
ROI2DRotatedRect
范例#
输入图像
ROI校正#
简介#
实际现场应用中,待检测工件在图像中的位置会发生偏移,从而 ROI 需要跟随其变动,否则会导致检测不到。 ROI 校正算子通过创建定位基准,使 ROI 跟随基准移动,能够很好地解决问题。 ROI 校正一般是算子组合应用,通常组合的算子有:ROI 生成、形状匹配、ROI 校正。比如ROI 未经过校正的情况下,直接进行卡尺测量,会导致算法失效。此时,ROI 校正便可以解决该问题。
输入#
- 输入ROI
类型:
ROI2DRect
ROI2DRotatedRect
含义:需要校正的ROI
- 输入位姿
类型:
Pose2D
含义:需要校正的ROI的位姿
输出#
- 输出图像
类型:
ROI2DRect
ROI2DRotatedRect
含义:校正结果
参数#
- 像素坐标X
含义:坐标X的校正量
- 像素坐标X
含义:坐标X的校正量
范围:[0,2147483647]
- 像素坐标Y
含义:坐标Y的校正量
范围:[0,2147483647]
- 像素坐标角度
含义:角度的校正量
范围:[0,360]
范例#
情况 |
示例:输入图 |
示例:输出图 |
---|---|---|
情况1 |
||
情况2 |
||
情况3 |
区域变换#
简介#
在裁切图片上识别出的Region区域,可以还原到原图坐标系中
输入#
- 输入区域
类型:
Region
含义:需要变换的Region区域
- 输入裁剪区域
类型:
ROI2DRect
ROI2DRotatedRect
Rect2D
RotatedRect2D
含义:原图上的裁切区域
输出#
- 输出区域
类型:
Region
含义:裁切图上的区域转换到原图上的区域
范例#
输入区域
输入裁剪区域
输出区域
检测#
颜色提取#
简介#
颜色检测是根据 HSV 颜色空间所给范围,在彩色图像中识别出用户设定颜色的区域。
输入#
- 输入图像
类型:
ImageColor
含义:待检测图像
输出#
- 提取区域
类型:
Region
含义:提取颜色的区域
- 掩模图像
类型:
ImageGray
含义:提取后的二值化图
- 掩模结果
类型:
Debuge2D
含义:提取后的结果图
参数#
颜色提取HSV
范例#
输入图像
输出图像
Blob检测#
简介#
Blob 分析是指图像中具有相似颜色、纹理等特征所组成的一块连通区域。Blob 分析是将图像进行二值化,分割得到前景和背景,然后进行连通区域检测,从而得到 Blob 块的过程。 Blob 分析为机器视觉应用提供图像中斑点数量、位置、形状和方向,可应用于特定目标定位、存在、缺陷检测、数量统计等。主要适用于以下图像:二值化图像、高对比图像。在药品包装行业、食品包装行业,Blob 分析可以检测物体的位置以及合格性。
输入#
- 输入图像
类型:
ImageColor
ImageGray
含义:待检测图像
ROI#
- 感兴趣区域
类型:
ROI2DRect
ROI2DRotatedRect
输出#
- 识别目标
类型:
Region
含义:识别出的目标
- 结果位姿
类型:
Pose2DList
含义:识别结果的位姿
- 面积
类型:
DoubleList
含义:面积大小
- 掩模图像
类型:
Debuge2D
含义:结果图
参数#
- 最大数量
含义:识别输出的最大目标数量
范围:[1,2147483647]
- 斑点颜色
含义:颜色种类
范围:白或黑,白,黑
- 排序类型
含义:排序类型
范围:面积,角度,长边,短边
- 排序
含义:排序方法
范围:升序,降序
- 面积过滤使能
含义:面积过滤开关
- 面积范围
含义:面积过滤范围
范围:[1,2147483647]
- 角度过滤使能
含义:长边过滤开关
- 长边范围
含义:长边过滤范围
范围:[1,2147483647]
- 短边过滤使能
含义:短边过滤开关
- 短边范围
含义:短边过滤范围
范围:[1,2147483647]
范例#
输入图像
输出图像
有无检测#
简介#
有无检测是根据图像中黑点或者白点像素数目,以及图像的对比度进行有无判断的算子。
输入#
- 输入图像
类型:
ImageColor
ImageGray
含义:待检测图像
ROI#
- 感兴趣区域
类型:
ROI2DRect
ROI2DRotatedRect
输出#
- 黑点/白点个数
类型:
Double
含义:黑点/白点个数
- 有无结果
类型:
Bool
含义:有无结果
- 输出图像
类型:
Debug2D
含义:结果图
参数#
- 检测方法
含义:检测有无的方法
范围:黑点,白点,对比度
- 筛选方法
含义:筛选有无的方法
范围:[0,2147483647]
范例#
输入图像
输出图像
灰度分析#
简介#
灰度分析功能用来统计图像中的灰度值均值,灰度值标准差。
输入#
- 输入图像
类型:
ImageGray
含义:待检测图像
输出#
- 灰度值均值
类型:
Double
含义:灰度图的结果均值
- 灰度值标准差
类型:
Double
含义:灰度图的结果标准差
- 灰度直方图列表
类型:
DoubleList
含义:灰度直方图列表
测量#
卡尺#
简介#
卡尺,就是在灰度图像上指定的区域内寻找目标的两条平行直线,并计算这两条直线的距离。卡尺工具常用于检测物体的宽度。
输入#
- 输入图像
类型:
ImageColor
ImageGray
含义:待检测图像
ROI#
- 感兴趣区域
类型:
ROI2DRotatedRect
输出#
- 第一边缘点集
类型:
Vector2DList
含义:被检测的第一个边缘点集合
- 第二边缘点集
类型:
Vector2DList
含义:被检测的第二个边缘点集合
- 边缘对间距集
类型:
DoubleList
含义:同一个边缘对之间的距离
- 连续边缘间距集
类型:
DoubleList
含义:两个边缘对之间的距离
- 输出图像
类型:
Debuge2D
含义:结果图
参数#
- 平滑强度
含义:待测图高斯平滑标准差
范围:[0.1,50.0]
- 幅度阈值下限
含义:一阶导数(梯度)值,用于过滤边缘曲线的点
范围:[0,99]
- 边缘对极性
含义:灰度值过渡类型,决定如何将边缘分组成边缘对
范围:所有边缘,最强边缘,正边缘,正边缘最强,负边缘,负边缘最强
Tip
边缘对极性的几种类型介绍
所有边缘
最强边缘
正边缘
正边缘最强
负边缘
负边缘最强
- 边缘对选择方式
含义:用于对边缘对首尾筛选用
范围:所有边缘对,第一个边缘对,最后一个边缘对
范例#
输入图像
输出图像
识别#
读码#
简介#
读码算子是用来进行多种条形码、QR 码、DM 码、ArUco 码的识别。
输入#
- 输入图像
类型:
ImageColor
ImageGray
含义:待检测图像
ROI#
- 感兴趣区域
类型:
ROI2DRect
ROI2DRotatedRect
输出#
- 结果位姿
类型:
Pose2DList
含义:识别出的目标位姿
- 识别结果
类型:
StringList
含义:读码结果
- 二维码种类
类型:
StringList
含义:识别出来的二维码种类
- 输出图像
类型:
Debuge2D
含义:结果图
参数#
- 角度校正使能
含义:开关角度校正
范围:[0,300]
- 极性
范围:黑底白图,白底黑图
- 阈值
含义:灰度强度值过滤
范围:[0,255]
- 核大小
含义:图像滤波核大小
范围:3*3,5*5,7*7,9*9,11*11,13*13,15*15,17*17,19*19,21*21
- 码种类
范围:条形码,二维码
- 条形码种类
范围:全条形码,EAN_UPC,CODEBAR,I25,CODE39,DATABAR,CODE93,DATABAR_EXP,CODE128
- 二维码种类
范围:QR,DM,ArUco
范例#
输入图像
输出图像
OCR#
简介#
OCR 算子是用来对物件以及标签上的字符进行识别,主要识别英文字符与数字。
输入#
- 输入图像
类型:
ImageColor
ImageGray
含义:待检测图像
ROI#
- 感兴趣区域
类型:
ROI2DRect
ROI2DRotatedRect
输出#
- 输出字符串列表
类型:
StringList
含义:识别出的字符串列表
- 输出图像
类型:
Debuge2D
含义:结果图
参数#
- 大小写
范围:自动,大写,小写
- 语言
范围:英文,中文,英文+中文
- 模式
含义:分割模式
范围:自动页面分割,单行文本,单词,单个字符
- 去除空格
含义:是否需要去除空格
- 特殊字符
范围:无,数字0识别为字母O,字母O识别为数字0
范例#
输入图像
输出图像
3D视觉算子#
输入输出#
点云读取#
简介#
点云读取用于从本地路径读取点云。
输入#
- 输入路径
类型:
String
含义:文件路径
输出#
- 输出图像
类型:
PointCloud
PointCloudNormal
含义:向全局变量列表输出点云
配置参数#
- 文件输入设置
含义:文件路径的来源
范围:
从参数设置:通过配置参数 文件路径 设置文件路径
从输入变量设置:通过输入变量 输入路径 设置文件路径
- 文件路径
含义:选择点云读取路径
- 点云类型
范围:输出XYZ点云,输出XYZNormal点云
Tip
点云变量类型依据配置参数修改。
点云保存#
简介#
点云保存用于将软件中处理的点云保存到本地。
输入#
- 输入图像
类型:
PointCloud
PointCloudNormal
含义:输入全局变量列表中的一个点云
配置参数#
- 文件保存设置
含义:文件路径的来源
范围:
从参数设置:通过配置参数 文件路径 设置文件路径
从输入变量设置:通过输入变量 输入路径 设置文件路径
- 保存路径
含义:选择点云的保存路径
- 保存类型
范围:
二进制
文本
- 后缀名
范围:无,时间戳,计数器
ROI#
点云裁切#
简介#
点云裁切可用来裁切点云,使其裁切为适当区域大小。
输入#
- 输入点云
类型:
PointCloud
PointCloudNormal
含义:待处理点云
输出#
- 输出点云ROIcorrect_dst
含义:绘制的结果点云图
参数#
- 包围盒输入设置
含义:选择包围盒输入的方式
范围:从参数设置,从输入变量设置
- 位姿输入设置
含义:选择位姿输入的方式
范围:从参数设置,从输入变量设置
Tip
包围盒输入与位姿输入参数依据配置参数修改。
- 包围盒长:
含义:包围盒区域的长度
范围:[0,999999]
- 包围盒宽:
含义:包围盒区域的宽度
范围:[0,999999]
- 包围盒高:
含义:包围盒区域的高度
范围:[0,999999]
- X方向的平移量:
含义:
范围:[-999999,999999]
- y方向的平移量:
含义:
范围:[-999999,999999]
- Z方向的平移量:
含义:
范围:[-999999,999999]
- 绕X轴的旋转量:
含义:
范围:[-360,360]
- 绕Y轴的旋转量:
含义:
范围:[-360,360]
- 绕Z轴的旋转量:
含义:
范围:[-360,360]
范例#
情况 |
示例:输入点云 |
示例:输出点云 |
---|---|---|
情况1 |
||
情况2 |
过滤排序#
点云数组过滤#
简介#
点云数组过滤算子提供了从点云数组中筛选点云的功能。筛选条件可以设置为最上层点云、点云点数或只获取点数最多的点云。其中,“最上层点云过滤”方式用于相同工件(如管状工件)堆叠时,获取最上层的(多个)工件点云
输入#
- 输入点云数组
类型:
PointCloud
含义:待处理点云
输出#
- 输出过滤点云数组
类型:
PointCloudList
含义:结果点云数组
参数#
- 过滤方法
含义:选择点云数组过滤的方式
范围:获取最上层点云,根据点数过滤,获取点数最多的点云
- 获取最上层点云-层间距
含义:用于多层点云的过滤
范围:[0.2,60]
- 根据点数过滤-最大点云数量
含义:点数的最大值,用于点数过滤
范围:[5,999999]
- 根据点数过滤-最小点云数量
含义:点数的最小值,用于点数过滤
范围:[5,999999]
范例#
方法 |
示例:输入点云 |
示例:输出点云 |
---|---|---|
获取最上层点云 |
||
根据点数过滤 |
||
获取点数最多的点云 |
位姿数组过滤#
简介#
位姿数组过滤算子提供了从位姿数组中筛选位姿的功能。筛选条件可以设置为“输入位姿是否在 ROI 内”和“输入位姿与参考位姿间的角度是否小于阈值”两种方式
输入#
- 输入位姿数组
类型:
Pose3DList
含义:待处理位姿数组
输出#
- 输出位姿数组
类型:
Pose3DList
含义:结果位姿数组
参数#
- 过滤方法
含义:选择位姿数组过滤的方式
范围:包围盒范围,到参考位姿的角度
- 参考位姿输入方式
含义:选择参考位姿输入方式
范围:从参考位姿参数输入,从输入参考位姿输入
- 角度阈值
含义:
范围:[0.01,360]
- 包围盒长:
含义:包围盒区域的长度
范围:[0,999999]
- 包围盒宽:
含义:包围盒区域的宽度
范围:[0,999999]
- 包围盒高:
含义:包围盒区域的高度
范围:[0,999999]
- X方向的平移量:
含义:
范围:[-999999,999999]
- y方向的平移量:
含义:
范围:[-999999,999999]
- Z方向的平移量:
含义:
范围:[-999999,999999]
- 绕X轴的旋转量:
含义:
范围:[-360,360]
- 绕Y轴的旋转量:
含义:
范围:[-360,360]
- 绕Z轴的旋转量:
含义:
范围:[-360,360]
点云数组排序#
简介#
点云数组排序算子提供了对点云数组进行排序的功能。排序条件可以设置为点云点数、点云包围盒体积或点云中心坐标
输入#
- 输入点云数组
类型:
PointCloudList
含义:待处理点云数组
- 输入参考位姿
类型:
Pose3D
含义:待处理点云数组
输出#
- 输出排序后点云数组
类型:
PointCloudList
含义:结果点云数组
- 索引列表
类型:
IntList
含义:结果点云数组
参数#
- 排序方式
含义:选择点云数组排序的方式
范围:点云点数,包围盒大小,点云中心点坐标
- 是否按升序排列
含义:升序的标志,Fasle则为降序,True则为升序
范围:[True,False]
- 参考位姿输入方式
含义:
范围:从参考位姿参数输入,从输入参考位姿输入
- 点云中心点坐标-X方向的平移量:
含义:
范围:[-999999,999999]
- 点云中心点坐标-y方向的平移量:
含义:
范围:[-999999,999999]
- 点云中心点坐标-Z方向的平移量:
含义:
范围:[-999999,999999]
- 点云中心点坐标-绕X轴的旋转量:
含义:
范围:[-360,360]
- 点云中心点坐标-绕Y轴的旋转量:
含义:
范围:[-360,360]
- 点云中心点坐标-绕Z轴的旋转量:
含义:
范围:[-360,360]
- 点云中心点坐标-中心轴:
含义:
范围:点云中心点X坐标,点云中心点Y坐标,点云中心点Z坐标
位姿数组排序#
简介#
位姿数组排序算子提供了对位姿数组进行排序的功能。排序条件可以设置为“输入位姿与参考位姿间的距离或角度”或“输入位姿在参考轴上的投影”这 2 类排序方式
输入#
- 输入位姿数组
类型:
Pose3DList
含义:待处理位姿数组
- 输入参考位姿
类型:
Pose3D
含义:待处理点云数组
输出#
- 输出排序位姿数组
类型:
Pose3DList
含义:结果点云数组
- 索引列表
类型:
IntList
含义:结果点云数组
参数#
- 排序方式
含义:选择位姿数组排序的方式
范围:到参考位姿的欧式距离,到参考位姿的角度,沿X轴,沿Y轴,沿Z轴
- 是否按升序排列
含义:升序的标志,Fasle则为降序,True则为升序
范围:[True,False]
- 参考位姿输入方式
含义:
范围:从参考位姿参数输入,从输入参考位姿输入
- 点云中心点坐标-X方向的平移量:
含义:
范围:[-999999,999999]
- 点云中心点坐标-y方向的平移量:
含义:
范围:[-999999,999999]
- 点云中心点坐标-Z方向的平移量:
含义:
范围:[-999999,999999]
- 点云中心点坐标-绕X轴的旋转量:
含义:
范围:[-360,360]
- 点云中心点坐标-绕Y轴的旋转量:
含义:
范围:[-360,360]
- 点云中心点坐标-绕Z轴的旋转量:
含义:
范围:[-360,360]
- 点云中心点坐标-中心轴:
含义:
范围:点云中心点X坐标,点云中心点Y坐标,点云中心点Z坐标
滤波#
离群点过滤#
简介#
离群点过滤算子提供了根据点间距离剔除点云中离群点(Outlier)的功能。在点云获取过程中,由于各种外界环境和硬件因素的影响,往往导致某些点远离目标表面,这些点称之为离群点(outlier)。
输入#
- 输入点云
类型:
PointCloud
PointCloudNormal
含义:待处理点云
输出#
- 输出点云
类型:
PointCloud
PointCloudNormal
含义:过滤后的结果点云
参数#
- 过滤方法
含义:选择离群点过滤的方式
范围:统计滤波,半径滤波
- 统计滤波-K均值聚类
含义:用于计算点间平均距离和标准差的邻域点个数,一般取5~10
范围:[2,10000]
- 统计滤波-阈值
含义:离群点剔除的阈值因子,即距离标准差的倍数,一般取 1~2 即可剔除大量离群点
范围:[0.1,1000]
- 统计滤波-循环次数
含义:离群点剔除的执行次数。当执行完一次剔除后,点间平均距离和标准会减小,根据更新后的距离阈值再次进行剔除
范围:[1,10000]
- 半径滤波-滤波半径
含义:
范围:[0.1,1000]
- 半径滤波-领域点查询个数
含义:
范围:[1,10000]
范例#
输入点云
输出点云
点云下采样#
简介#
下采样提供了对点云进行降采样的功能,可以有效减少点云点数,加快后续算子处理的速度。 下采样提供了随机(跳点)采样和体素采样 2 种方式
输入#
- 输入点云
类型:
PointCloud
PointCloudNormal
含义:待处理点云
输出#
- 输出点云
类型:
PointCloud
PointCloudNormal
含义:过滤后的结果点云
参数#
- 点云采样方法
含义:选择点云下采样的方式
范围:体素采样,均匀采样
- 体素采样-X轴体素长度
含义:X轴方向上的采样间隔,一般设置为 1~10
范围:[0.1,10000]
- 体素采样-Y轴体素长度
含义:Y轴方向上的采样间隔,一般设置为 1~10
范围:[0.1,1000]
- 体素采样-Z轴体素长度
含义:Z轴方向上的采样间隔,一般设置为 1~10
范围:[0.1,10000]
- 均匀采样-均匀采样值
含义:
范围:[0.01,10000]
范例#
输入点云
输出点云
分割#
点云分割#
简介#
点云分割通过采用某种机制,将点云数据细分为一系列的点云块,同一块内的点云具有相似的性质,如颜色、强度、曲率、形状等,一方面可将全局处理缩小到兴趣区域内的局部处理,另一方面由于块内点云的相似性,可以简化点云存储结构,并提高后续处理算法的效率
输入#
- 输入点云
类型:
PointCloud
含义:待处理点云
输出#
- 输出点云
类型:
PointCloudList
含义:结果点云
参数#
- 点云分割方法
含义:选择点云分割的方式
范围:距离分割,凸分割
- 距离分割-最小聚类点云数量
含义:分割后同一点云块的最小点云数,如果某一点云块的点数小于该值,则该点云块将从分割结果中删除,可用于滤除过小物体或团聚噪声点。根据分割实际需求设置
范围:[100,999999]
- 距离分割-最大聚类点云数量
含义:分割后同一点云块的最大点云数,如果某一点云块的点数大于该值,则该点云块将从分割结果中删除,可用于滤除过大物体或背景。根据分割实际需求设置
范围:[100,999999]
- 距离分割-点间距离阈值
含义:点间距离阈值,单位为 mm,大于该值将认为两点属于不同点云块。根据分割实际需求设置
范围:[0.1,100]
- 凸分割-最小聚类点云数量
含义:分割后同一点云块的最小点云数,如果某一点云块的点数小于该值,则该点云块将从分割结果中删除,可用于滤除过小物体或团聚噪声点。根据分割实际需求设置
范围:[100,999999]
- 凸分割-最大聚类点云数量
含义:分割后同一点云块的最大点云数,如果某一点云块的点数大于该值,则该点云块将从分割结果中删除,可用于滤除过大物体或背景。根据分割实际需求设置
范围:[100,999999]
- 凸分割-体素的分辨率
含义:体素是以一定分辨率对原始点云进行网格划分,在该算法表示最小处理单元的尺度,即将该网格内的点云采取同样的操作
范围:[0.1,100]
- 凸分割-种子点密度
含义:种子点的密度,单位为 mm。一般为体素的分辨率的2~5 倍。如果不需要精细的分割结果,可设为较大值
范围:[0.1,100]
- 凸分割-空间距离权重
含义:与法线权重结合使用。如果两个目标的点云在空间相近,而其相邻部分点云又基本位于同一平面,则需要增大空间距离的权重
范围:[0.1,5]
- 凸分割-法线权重
含义:与空间距离权重结合使用。如果某一目标由于遮挡等因素导致其内部点云块不连续,则需要增大法向量权重的阈值
范围:[0.1,100]
- 凸分割-凹凸性容忍度
含义:凹凸性容忍阈值,角度值,一般取 3~10。如果要求较小的凹凸变化也被分割,则设置为较小值
范围:[0.1,30]
- 凸分割-平滑度阈值
含义:0 代表不考虑平滑性,1 代表最严格的平滑性,一般取 0.5
范围:[0.1,1]
- 凸分割-是否使用扩展凹凸性检查
含义:特殊场景下使用,一般选择false
范围:[False,Ture]
- 凸分割-是否采用合理性检查
含义:特殊场景下使用,一般选择 false,不使用
范围:[False,Ture]
范例#
算法 |
示例:输入点云 |
示例:输出点云 |
---|---|---|
距离分割 |
||
凸分割 |
点云区域分割#
简介#
基于2D图像分割区域对点云进行分割
输入#
- 输入点云
类型:
PointCloud
含义:待处理点云
- 点云Map
类型:
PointCloudRegLUT
含义:待处理点云map
- 输入区域
类型:
Region
含义:点云的区域
输出#
- 输出点云
类型:
PointCloud
含义:结果点云
范例#
输入点云
输出点云
点云区域增长#
简介#
利用法线信息分割点云
输入#
- 输入点云
类型:
PointCloudNormal
含义:待处理点云
输出#
- 输出点云
类型:
PointCloudList
含义:结果点云
参数#
- 最小聚类数量
含义:分割后同一点云块的最小点云数,如果某一点云块的点数小于该值,则该点云块将从分割结果中删除,可用于滤除过小物体或团聚噪声点。根据分割实际需求设置
范围:[100,999999]
- 最大聚类数量
含义:分割后同一点云块的最大点云数,如果某一点云块的点数大于该值,则该点云块将从分割结果中删除,可用于滤除过大物体或背景。根据分割实际需求设置
范围:[100,999999]
- 搜索点数
含义:在初始点位附近搜索的点数个数,有助于分割效果,搜索点数越多,法线计算相对越准确,分割结果越好
范围:[1,1000]
- 平滑阈值(度)
含义:两个点聚类的时候会首先计算两个点法线的夹角,当这个夹角小于等于平滑度阈值时,那么这两个点属于同一个类,反之,这两个点不在同一个类
范围:[0.1,80]
- 曲率阈值
含义:两个点所在的表面处的弯曲程度,如果小于曲率阈值时,那么这两个点属于同一个类,反之,这两个点不在同一个类
范围:[0.001,40]
- 剩余阈值
含义:允许设置用于测试点的残差阈值,小于这个阈值即可进入类的筛选条件
范围:[0.001,40]
范例#
输入点云
输出点云
特征计算#
边缘检测#
简介#
边缘检测算子提供了检测点云边缘的功能。该功能可用于圆拟合、匹配等算子的前置处理。
输入#
- 输入点云
类型:
PointCloudNormal
含义:待处理点云
输出#
- 输出边缘点云
类型:
PointCloud
含义:结果点云
参数#
- 角度阈值
含义:用于控制法向角度偏差的阈值
范围:[1,89]
- 搜索K领域
含义:用于判断某个点是否为边缘点时的搜索半径
范围:[1,200]
范例#
输入图像
输出图像
法线估计#
简介#
法线估计算子提供了计算点云法向量的功能。该算子可添加在需要法向量点云输入的算子前。
输入#
- 输入点云
类型:
PointCloud
含义:待处理点云
输出#
- 输出点云
类型:
PointCloudNormal
含义:结果点云
参数#
- 法线计算方法
含义:选择法线计算的方式
范围:计算法线,计算切线
- 计算法线-搜索类型
含义:计算某点法向量时搜索临近点的方式
范围:使用半径搜索,使用K领域搜索
- 计算法线-使用半径搜索
含义:搜索半径
范围:[0.01,500]
- 计算法线-使用K领域搜索
含义:K值大小
范围:[3,10000]
- 计算法线-使用分辨率估计搜索半径
含义:是否用搜索半径做为计算场景点云法向量的分辨率系数
- 计算法线-重点向
含义:通过设置“视点坐标”的方式,将方向指定为朝向“视点坐标”的方向
范围:视点,重定向
- 计算法线-X方向的平移量
含义:
范围:[-500,500]
- 计算法线-Y方向的平移量
含义:
范围:[-500,500]
- 计算法线-Z方向的平移量
含义:
范围:[-500,500]
- 计算切线-搜索类型
含义:计算某点法向量时搜索临近点的方式
范围:使用半径搜索,使用K领域搜索
- 计算切线-使用半径搜索
含义:搜索半径
范围:[0.01,500]
- 计算切线-使用K领域搜索
含义:K值大小
范围:[3,10000]
- 计算切线-使用分辨率估计搜索半径
含义:是否用搜索半径做为计算场景点云法向量的分辨率系数
- 计算切线-切线百分比
含义:切线百分比
范围:[0.01,500]
- 计算切线-切线阈值
含义:切线阈值
范围:[0,1000]
范例#
算法 |
示例:输入图 |
示例:输出图 |
---|---|---|
计算法线 |
||
计算切线 |
变换#
点云合并#
简介#
合并两个点云。
输入#
- 输入点云
类型:
PointCloud
PointCloudNormal
含义:待处理点云
输出#
- 输出点云
类型:
PointCloud
PointCloudNormal
含义:结果点云
范例#
输入图像
输出图像
点云镜像#
简介#
点云对称变换。
输入#
- 输入点云
类型:
PointCloud
含义:待处理点云
- 输入平面位姿
类型:
Pose3D
含义:输入镜像平面
输出#
- 输出点云
类型:
PointCloud
含义:结果点云
- 3D结果图
类型:
Debug3D
含义:3D结果图
参数#
- 镜像平面输入方式
含义:镜像平面的输入方式
范围:从平面参数输入,从输入镜像平面输入
- 镜像平面
含义:选择对称的平面
范围:XOY平面,YOZ平面,ZOX平面
- 平面位姿参数-X方向的平移量
含义:
范围:[-999999,999999]
- 平面位姿参数-Y方向的平移量
含义:
范围:[-999999,999999]
- 平面位姿参数-Z方向的平移量
含义:
范围:[-999999,999999]
- 平面位姿参数-绕X轴的旋转量
含义:
范围:[-360,360]
- 平面位姿参数-绕Y轴的旋转量
含义:
范围:[-360,360]
- 平面位姿参数-绕Z轴的旋转量
含义:
范围:[-360,360]
范例#
算法 |
示例:输入图 |
示例:输出图 |
---|---|---|
XOY平面 |
||
YOZ平面 |
||
ZOX平面 |
点云投影#
简介#
点云投影算子提供了将输入点云投影到指定平面成为平面点云的功能。
输入#
- 输入点云
类型:
PointCloud
含义:待处理点云
- 输入平面位姿
类型:
Pose3D
含义:输入投影平面
输出#
- 输出点云
类型:
PointCloud
含义:结果点云
- 3D结果图
类型:
Debug3D
含义:3D结果图
参数#
- 投影平面输入方式
含义:投影平面的输入方式
范围:从平面参数输入,从输入投影平面输入
- 投影平面
含义:选择对称的平面
范围:XOY平面,YOZ平面,ZOX平面
- 平面位姿参数-X方向的平移量
含义:
范围:[-999999,999999]
- 平面位姿参数-Y方向的平移量
含义:
范围:[-999999,999999]
- 平面位姿参数-Z方向的平移量
含义:
范围:[-999999,999999]
- 平面位姿参数-绕X轴的旋转量
含义:
范围:[-360,360]
- 平面位姿参数-绕Y轴的旋转量
含义:
范围:[-360,360]
- 平面位姿参数-绕Z轴的旋转量
含义:
范围:[-360,360]
范例#
算法 |
示例:输入图 |
示例:输出图 |
---|---|---|
XOY平面 |
||
YOZ平面 |
||
ZOX平面 |
点云数量统计#
简介#
点云点数统计的功能。
输入#
- 输入点云
类型:
PointCloud
PointCloudNormal
含义:待处理点云
输出#
- 点云数量
类型:
Int
含义:点云点数的数量
点云变换#
简介#
点云变换算子提供了对点云进行旋转平移变换的功能。
输入#
- 输入点云
类型:
PointCloud
PointCloudNormal
含义:待处理点云
- 输入位姿
类型:
Pose3D
含义:输入位姿
输出#
- 输出点云
类型:
PointCloud
PointCloudNormal
含义:结果点云
参数#
- 位姿输入设置
含义:点云变换位姿的输入方式
范围:从参数设置,从输入变量设置
- 转换位姿-X方向的平移量
含义:
范围:[-999999,999999]
- 转换位姿-Y方向的平移量
含义:
范围:[-999999,999999]
- 转换位姿-Z方向的平移量
含义:
范围:[-999999,999999]
- 转换位姿-绕X轴的旋转量
含义:
范围:[-360,360]
- 转换位姿-绕Y轴的旋转量
含义:
范围:[-360,360]
- 转换位姿-绕Z轴的旋转量
含义:
范围:[-360,360]
范例#
输入图像
输出图像
位姿调整#
简介#
位姿调整算子提供了将位姿调整的功能。
输入#
- 输入位姿
类型:
Pose3DList
含义:输入位姿
- 输入点云
类型:
PointCloud
含义:输入点云
- 输入参考位姿
类型:
Pose3D
含义:输入参考位姿
输出#
- 输出调整位姿
类型:
Pose3DList
含义:输出调整位姿
- 3D结果图
类型:
Debug3D
含义:3D结果图
参数#
- 调整方法
含义:位姿调整的方式
范围:依据取反调整,依据点云方向调整,依据参考位姿调整
- 依据取反调整-取反轴
含义:直接取反调整位姿
范围:XY轴,YZ轴,ZX轴
- 依据点云方向调整-调整方式
含义:
范围:调整XYZ,调整Normal,调整XYZNormal
- 依据点云方向调整-参考方向轴
含义:
范围:X轴,Y轴,Z轴
- 依据点云方向调整-包围盒长
含义:
范围:[5,999999]
- 依据点云方向调整-包围盒宽
含义:
范围:[5,999999]
- 依据点云方向调整-包围盒高
含义:
范围:[5,999999]
- 依据参考位姿调整-参考位姿输入方式
含义:
范围:从位姿参数输入,从输入位姿输入
- 依据参考位姿调整-固定轴
含义:
范围:固定X轴,固定Y轴,固定Z轴
- 依据参考位姿调整-X方向的平移量
含义:
范围:[-999999,999999]
- 依据参考位姿调整-Y方向的平移量
含义:
范围:[-999999,999999]
- 依据参考位姿调整-Z方向的平移量
含义:
范围:[-999999,999999]
- 依据参考位姿调整-绕X轴的旋转量
含义:
范围:[-360,360]
- 依据参考位姿调整-绕Y轴的旋转量
含义:
范围:[-360,360]
- 依据参考位姿调整-绕Z轴的旋转量
含义:
范围:[-360,360]
位姿离散化#
简介#
位姿离散化算子提供了将位姿离散化的功能。
输入#
- 输入位姿
类型:
Pose3DList
含义:输入位姿
输出#
- 输出离散位姿
类型:
Pose3DList
含义:输出离散位姿
- 3D结果图
类型:
Debug3D
含义:3D结果图
参数#
- 离散方法
含义:位姿离散化的方式
范围:平移变换,旋转变换
- 平移变换-平移平面
含义:
范围:XOY平面,YOZ平面,ZOX平面
- 平移变换-平移范围
含义:
范围:[0,999999]
- 平移变换-平移步长
含义:
范围:[0,9999]
- 旋转变换-旋转轴
含义:
范围:绕X轴旋转,绕Y轴旋转,绕Z轴旋转
- 旋转变换-旋转范围
含义:
范围:[0,360]
- 旋转变换-旋转步长
含义:
范围:[0,180]
位姿变换#
简介#
位姿变换算子提供了操作位姿的功能。
输入#
- 输入位姿
类型:
Pose3DList
含义:输入位姿
- 输入转换位姿
类型:
Pose3D
含义:输入参考位姿
输出#
- 输出转换位姿
类型:
Pose3DList
含义:输出离散位姿
参数#
- 位姿转换方式
含义:位姿转换的方式
范围:位姿相乘,位姿取逆
- 位姿输入设置
含义:
范围:从参数设置,从输入变量设置
- 位姿相乘-X方向的平移量
含义:
范围:[-999999,999999]
- 位姿相乘-Y方向的平移量
含义:
范围:[-999999,999999]
- 位姿相乘-Z方向的平移量
含义:
范围:[-999999,999999]
- 位姿相乘-绕X轴的旋转量
含义:
范围:[-360,360]
- 位姿相乘-绕Y轴的旋转量
含义:
范围:[-360,360]
- 位姿相乘-绕Z轴的旋转量
含义:
范围:[-360,360]
点云清空#
简介#
点云清空算子提供了清空点云数据的功能。
输入#
- 输入点云
类型:
PointCloud
PointCloudNormal
含义:待处理点云
检测#
点云包围盒#
简介#
包围盒算子提供了输出云包围盒的功能。
Tip
注意,包围盒的边通常与坐标轴平行。
输入#
- 输入点云
类型:
PointCloud
含义:待处理点云
输出#
- 点云位姿
类型:
Pose3D
含义:点云位姿
- 点云尺寸
类型:
Vector3D
含义:点云尺寸大小
- 3D结果图
类型:
Debug3D
含义:3D结果图
参数#
- 计算方式
含义:计算包围盒的方式
范围:PCA,最小体积
- 最小体积-近似点的直径误差
含义:
范围:[1,20]
- 最小体积-采样点数
含义:
范围:[10,5000]
- 最小体积-网格尺寸
含义:
范围:[5,50]
- 最小体积-直径优化循环次数
含义:
范围:[0,50]
- 最小体积-网格搜索优化循环次数
含义:
范围:[3,50]
范例#
输入图像
输出图像
圆拟合#
简介#
圆拟合算子提供了拟合圆形点云的功能。为避免大面积点(如圆孔所在的平面点)影响,可在圆拟合算子前增加边缘检测以提取圆形点云。
Tip
注意,该算子最多只有一个拟合结果,当没有拟合结果时,输出变量“有无结果”返回 false。
输入#
- 输入点云
类型:
PointCloud
PointCloudNormal
含义:待处理点云
输出#
- 输出点云
类型:
PointCloud
PointCloudNormal
含义:结果点云
- 圆位姿
类型:
Pose3D
含义:圆位姿
- 圆半径
类型:
Double
含义:圆的半径
- 误差
类型:
Double
含义:误差
- 是否有输出
类型:
Bool
含义:有无结果
- 3D结果图
类型:
Debug3D
含义:3D结果图
参数#
- 测距离阈值
含义:距离阈值用于控制点到拟合圆上的距离阈值。该值调大,则输入点云中更多的点会被纳入拟合结果。
范围:[0.001,99999]
- 法线的影响权重
含义:距离与法向量夹角间的权重
范围:[0.001,1]
- 最小半径
含义:球的最小参考半径
范围:[1,99999]
- 最大半径
含义:球的最大参考半径
范围:[1,99999]
- 最大迭代次数
含义:允许迭代求解的最大次数
范围:[5,99999]
- 重叠率
含义:拟合后的与原点云间的最小重叠率,用于评判拟合结果。注意当该值过高时,算子可能输出空结果。
范围:[0.000001,1]
- 是否输出圆
含义:控制输出的点云是否是拟合后的点云
范例#
输入图像
输出图像
圆柱拟合#
简介#
圆柱拟合算子提供了拟合圆柱点云的功能。
Tip
注意,该算子最多只有一个拟合结果,当没有拟合结果时,输出变量“有无结果”返回 false。
输入#
- 输入点云
类型:
PointCloudNormal
含义:待处理点云
输出#
- 输出点云
类型:
PointCloudNormal
含义:结果点云
- 圆柱位姿
类型:
Pose3D
含义:圆柱位姿
- 圆柱半径
类型:
Double
含义:圆柱的半径
- 圆柱长度
类型:
Double
含义:圆柱的长度
- 误差
类型:
Double
含义:误差
- 是否有输出
类型:
Bool
含义:有无结果
- 3D结果图
类型:
Debug3D
含义:3D结果图
参数#
- 粗检测距离阈值
含义:距离阈值用于控制点到拟合圆上的距离阈值。该值调大,则输入点云中更多的点会被纳入拟合结果。
范围:[0.001,99999]
- 精检测距离阈值
含义:距离阈值用于控制点到拟合圆上的距离阈值。该值调大,则输入点云中更多的点会被纳入拟合结果。
范围:[0.001,99999]
- 最小半径
含义:球的最小参考半径
范围:[1,99999]
- 最大半径
含义:球的最大参考半径
范围:[1,99999]
- 法线的影响权重
含义:距离与法向量夹角间的权重
范围:[0.001,1]
- 最大迭代次数
含义:允许迭代求解的最大次数
范围:[5,99999]
- 重叠率
含义:拟合后的与原点云间的最小重叠率,用于评判拟合结果。注意当该值过高时,算子可能输出空结果。
范围:[0.000001,1]
- 是否输出圆柱
含义:控制输出的点云是否是拟合后的点云
范例#
输入图像
输出图像
平面检测#
简介#
平面检测算子提供了估算规则盒体上表面的包围盒,并据此估算中心坐标,主要应用于简单场景的抓取任务。
输入#
- 输入点云
类型:
PointCloudList
含义:待处理点云
Tip
需要前置点云分割算子。
输出#
- 输出点云
类型:
PointCloudList
含义:结果点云
- 平面位姿
类型:
Pose3DList
含义:平面位姿
- 平面大小
类型:
Vector2DList
含义:平面的大小
- 3D结果图
类型:
Debug3D
含义:3D结果图
参数#
- 距离阈值
含义:距离阈值用于控制点到拟合圆上的距离阈值。
范围:[0.001,99999]
- 最大迭代次数
含义:允许迭代求解的最大次数
范围:[5,99999]
- 输出平面
含义:控制输出的点云是否是检测后的点云
范例#
输入图像
输出图像
平面拟合#
简介#
平面拟合算子提供了拟合平面点云的功能。
Tip
注意,该算子最多只有一个拟合结果,当没有拟合结果时,输出变量“有无结果”返回 false。
输入#
- 输入点云
类型:
PointCloudNormal
含义:待处理点云
输出#
- 输出点云
类型:
PointCloudNormal
含义:结果点云
- 平面位姿
类型:
Pose3D
含义:平面位姿
- 平面大小
类型:
Vector2D
含义:平面的大小
- 最大偏差点(所有点)
类型:
Double
含义:
- 最小偏差点(所有点)
类型:
Double
含义:
- 是否有输出
类型:
Bool
含义:有无结果
- 3D结果图
类型:
Debug3D
含义:3D结果图
参数#
- 拟合方法
含义:拟合平面的方法
范围:全局拟合,平面拟合
- 最大允许误差
含义:
范围:[0.001,2147483647]
- 最大允许百分比
含义:
范围:[0.001,100]
- 距离阈值
含义:距离阈值用于控制点到拟合圆上的距离阈值。该值调大,则输入点云中更多的点会被纳入拟合结果。
范围:[0.001,2147483647]
- 法线的影响权重
含义:距离与法向量夹角间的权重
范围:[0.001,1]
- 最大迭代次数
含义:允许迭代求解的最大次数
范围:[5,99999]
- 平面度
含义:用于评判拟合结果。注意当该值过高时,算子可能输出空结果。
范围:[0.000001,1]
- 是否输出平面
含义:控制输出的点云是否是拟合后的平面点云。如果勾选,则输出拟合到的平面点云,否则,输出为拟合到的平面点云以外的点云(可用于过滤平面)。
范例#
输入图像
输出图像
球拟合#
简介#
球拟合算子提供了拟合球形点云的功能。
Tip
注意,该算子最多只有一个拟合结果,当没有拟合结果时,输出变量“有无结果”返回 false。
输入#
- 输入点云
类型:
PointCloud
PointCloudNormal
含义:待处理点云
输出#
- 输出点云
类型:
PointCloud
PointCloudNormal
含义:结果点云
- 球半径
类型:
Double
含义:球半径
- 球中心
类型:
Vector3D
含义:球的中心点
- 误差
类型:
Double
含义:误差
- 是否有输出
类型:
Bool
含义:有无结果
- 3D结果图
类型:
Debug3D
含义:3D结果图
参数#
- 距离阈值
含义:距离阈值用于控制点到拟合圆上的距离阈值。该值调大,则输入点云中更多的点会被纳入拟合结果。
范围:[0.001,99999]
- 法线的影响权重
含义:距离与法向量夹角间的权重
范围:[0.001,1]
- 球的最小半径
含义:球的最小参考半径
范围:[1,99999]
- 球的最大半径
含义:球的最大参考半径
范围:[1,99999]
- 最大迭代次数
含义:允许迭代求解的最大次数
范围:[5,99999]
- 重叠率
含义:拟合后的与原点云间的最小重叠率,用于评判拟合结果。注意当该值过高时,算子可能输出空结果。
范围:[0.000001,1]
- 是否输出平面
含义:控制输出的点云是否是拟合后的点云。
范例#
输入图像
输出图像
标定#
3D手眼标定变换#
简介#
3D 标定转换算子提供了根据手眼标定结果将相机坐标系下的位姿变换到机器人基坐标系下的功能。3D 点云的位姿是基于相机坐标系,不能直接提供给机器人进行任务执行,需要通过刚体变换将相机坐标系下的目标位姿转换到机器人基坐标系统。
输入#
- 输入位姿列表
类型:
Pose3D
Pose3DList
含义:待处理位姿列表
- 输入文件路径
类型:
String
含义:配置文件路径
输出#
- 输出位姿列表
类型:
Pose3D
Pose3DList
含义:结果位姿列表
参数#
- 文件输入设置
含义:配置文件输入方法
范围:从参数设置,从输入变量设置
- 文件路径
含义:配置文件路径
3D手眼标定文件读取#
简介#
标定文件读取算子提供了读取标定文件(手眼标定文件)的功能
输入#
- 输入文件路径
类型:
String
含义:配置文件路径
输出#
- 手眼变换位姿
类型:
Pose3D
含义:手眼变换位姿
参数#
- 文件输入设置
含义:文件输入方法
范围:从参数设置,从输入变量设置
- 文件路径
含义:文件路径
定位#
粗匹配#
简介#
粗匹配算子主要提供了两种功能:一是基于目标点云制作模板(其中模板制作也是分法线模板制作和切线模板制作,与 3D 模板匹配算子相同);二是基于模板在场景中识别目标并初步估算其位姿的功能。可简单理解为“3D 模板匹配”算子的拆分(3D 模板匹配=粗匹配+精匹配)版本。
输入#
- 输入点云
类型:
PointCloudNormal
含义:待处理点云
输出#
- 匹配位姿
类型:
Pose3DList
含义:匹配结果的位姿
- 3D结果图
类型:
Debug3D
含义:3D结果图
参数#
- 模板路径
含义:模板文件路径
- 角度细分数
含义:
范围:[15,100]
- 使用投票比例
含义:筛选可能位姿的比例
范围:[1,99]
- 模板点云体素采样值
含义:降采样参数,用于控制模型(模板)点云体素降采样时的体素大小
范围:[0.5,20]
- 场景点云体素采样值
含义:降采样参数,用于控制场景点云体素降采样时的体素大小
范围:[0.5,20]
- 场景点云跳点采样值
含义:该值越大,匹配速度越慢
范围:[1,100]
- 最大匹配个数
含义:用于匹配结果个数的控制
范围:[1,10]
- 匹配位姿使用率
含义:中间结果位姿的使用率
范围:[1,100]
- 重叠率体素大小
含义:
范围:[0.001,10000]
- 匹配结果之间重叠率
含义:
范围:[0.0001,1]
- 场景模板重叠率
含义:
范围:[0.0001,1]
- 投票数权重
含义:
范围:[0,1]
- 重叠率权重
含义:
范围:[0,1]
范例#
输入图像
输出图像
精匹配#
简介#
精匹配算子主要提供了两种功能:一是基于目标点云制作模板(其中模板制作也是分法线模板制作和切线模板制作,与 3D 模板匹配算子相同与 3D 模板匹配算子相同);二是基于模板在场景中识别目标并估算其位姿的功能。可简单理解为“3D 模板匹配”算子的拆分(3D模板匹配=粗匹配+精匹配)版本。通常与粗匹配算子搭配使用。
输入#
- 输入点云
类型:
PointCloudNormal
含义:待处理点云
- 匹配位姿
类型:
Pose3DList
含义:匹配的参考位姿
输出#
- 精位姿
类型:
Pose3DList
含义:匹配结果的位姿
- 3D结果图
类型:
Debug3D
含义:3D结果图
参数#
- 模板路径
含义:模板文件路径
- 精匹配方法
含义:精匹配方法
范围:金字塔精匹配,经典精匹配
- 金字塔精匹配-包围盒扩张尺寸
含义:
范围:[-1,200]
- 金字塔精匹配-采样方式
含义:
范围:跳点采样,均匀采样
- 金字塔精匹配-金字塔模型点云体素采样率
含义:降采样参数,用于控制模型(模板)点云体素降采样时的体素大小
范围:[1,100]
- 金字塔精匹配-金字塔场景点云体素采样率
含义:降采样参数,用于控制场景点云体素降采样时的体素大小
范围:[1,100]
- 金字塔精匹配-金字塔模板点云体素采样值
含义:降采样参数,用于控制模型(模板)点云体素降采样时的体素大小
范围:[0.5,20]
- 金字塔精匹配-金字塔场景点云体素采样值
含义:降采样参数,用于控制场景点云体素降采样时的体素大小
范围:[0.5,20]
- 金字塔精匹配-是否剔除离群点对
含义:
- 金字塔精匹配-迭代容忍阈值
含义:
范围:[0.0001,0.1]
- 金字塔精匹配-最大迭代次数
含义:
范围:[5,10000]
- 金字塔精匹配-最小重叠率
含义:
范围:[0.1,0.99]
- 经典精匹配-计算方法
含义:
范围:点到面,点到点
- 经典精匹配-包围盒扩张尺寸
含义:
范围:[-1,200]
- 经典精匹配-采样方式
含义:
范围:跳点采样,均匀采样
- 经典精匹配-经典模型点云体素采样率
含义:降采样参数,用于控制模型(模板)点云体素降采样时的体素大小
范围:[1,100]
- 经典精匹配-经典场景点云体素采样率
含义:降采样参数,用于控制场景点云体素降采样时的体素大小
范围:[1,100]
- 经典精匹配-经典模板点云体素采样值
含义:降采样参数,用于控制模型(模板)点云体素降采样时的体素大小
范围:[0.5,20]
- 经典精匹配-经典场景点云体素采样值
含义:降采样参数,用于控制场景点云体素降采样时的体素大小
范围:[0.5,20]
- 经典精匹配-迭代容忍阈值
含义:
范围:[0.0001,0.1]
- 经典精匹配-最大迭代次数
含义:
范围:[5,10000]
- 经典精匹配-最小重叠率
含义:
范围:[0.1,0.99]
范例#
算法 |
示例:输入图 |
示例:输出图 |
---|---|---|
金字塔精匹配 |
||
经典精匹配 |
深度学习#
DL目标检测-快速#
深度学习目标检测-快速可以用来加载训练好的模型文件,并对输入图像进行推理,实现目标检测的功能。
- 输入图像
类型:
ImageColor
ImageGray
含义:待处理图像
- 结果标签
类型:
IntList
含义:目标检测结果的类别标签集合
- 结果得分
类型:
DoubleList
含义:目标检测结果的类别得分集合
- 结果包围盒
类型:
Rect2DList
含义:目标检测结果的包围盒集合
- 包围盒掩膜
类型:
RegionList
含义:目标检测结果的包围盒区域掩膜集合
- 结果图
类型:
Debug2D
含义:目标检测结果图
- 模型路径
含义:模型文件所在的路径
- 分数阈值
含义:目标检测得分阈值
范围: [0.0,1.0]
- 最大目标数
含义:目标检测最大显示数量
范围: [0,100]
输入图像
输出图像
DL目标检测-精检测#
深度学习目标检测-精检测可以用来加载训练好的模型文件,并对输入图像进行推理,实现目标检测的功能。
- 输入图像
类型:
ImageColor
ImageGray
含义:待处理图像
- 结果标签
类型:
IntList
含义:目标检测结果的类别标签集合
- 结果得分
类型:
DoubleList
含义:目标检测结果的类别得分集合
- 结果包围盒
类型:
Rect2DList
含义:目标检测结果的包围盒集合
- 包围盒掩膜
类型:
RegionList
含义:目标检测结果的包围盒区域掩膜集合
- 结果图
类型:
Debug2D
含义:目标检测结果图
- 模型路径
含义:模型文件所在的路径
- 分数阈值
含义:目标检测得分阈值
范围: [0.0,1.0]
- 最大目标数
含义:目标检测最大显示数量
范围: [0,100]
输入图像
输出图像
DL分类#
深度学习分类可以用来加载训练好的模型文件,并对输入图像进行推理,实现分类的功能。
- 输入图像
类型:
ImageColor
ImageGray
含义:待处理图像
- 结果标签
类型:
StringList
含义:分类结果的类别标签
- 结果得分
类型:
DoubleList
含义:分类结果的类别得分
- 结果图
类型:
Debug2D
含义:分类结果图
- 模型路径
含义:模型文件所在的路径
输入图像
输出图像
DL实例分割#
深度学习实例分割可以用来加载训练好的模型文件,并对输入图像进行推理,实现实例分割的功能。
- 输入图像
类型:
ImageColor
ImageGray
含义:待处理图像
- 结果标签
类型:
IntList
含义:实例分割结果的类别标签集合
- 结果得分
类型:
DoubleList
含义:实例分割结果的类别得分集合
- 结果包围盒
类型:
Rect2DList
含义:实例分割结果的包围盒集合
- 包围盒掩膜
类型:
RegionList
含义:实例分割结果的包围盒区域内目标掩膜集合
- 结果图
类型:
Debug2D
含义:实例分割结果图
- 模型路径
含义:模型文件所在的路径
- 分数阈值
含义:实例分割得分阈值
范围: [0.0,1.0]
- 最大目标数
含义:实例分割最大显示数量
范围: [0,100]
- 像素点阈值
含义:实例分割内目标掩膜像素点得分阈值,敏感参数,参数调大可能会使掩膜显示不全,默认0.1
范围: [0,1.0]
输入图像
输出图像
DL实例分割-快速#
深度学习实例分割(快速)可以用来加载训练好的模型文件,并实现本地DUCOMind对输入图片的推理功能,得到当前图像中检测出的对象的位置和包围盒信息以及所属的类别。
- 输入图像
类型:
ImageColor
ImageGray
含义:待处理图像
- 结果标签
类型:
IntList
含义:实例分割结果的类别标签集合
- 结果名字
类型:
StringList
含义:实例分割(快速)的识别结果标签名称集合
- 结果得分
类型:
DoubleList
含义:实例分割结果的类别得分集合
- 结果包围盒
类型:
Rect2DList
含义:实例分割结果的包围盒集合
- 包围盒掩膜
类型:
RegionList
含义:实例分割结果的包围盒区域内目标掩膜集合
- 结果图
类型:
Debug2D
含义:实例分割结果图
- 模型
含义:模型文件所在的路径
- 分数阈值
含义:实例分割得分阈值
范围: [0.0,1.0]
- 最大目标数
含义:实例分割最大显示数量
范围: [0,100]
- 像素点阈值
含义:实例分割内目标掩膜像素点得分阈值,敏感参数,参数调大可能会使掩膜显示不全,默认0.1
范围: [0,1.0]
输入图像
输出图像
DL旋转框目标检测#
深度学习旋转框目标检测可以用来加载训练好的模型文件,并对输入图像进行推理,实现目标检测的功能。
- 输入图像
类型:
ImageColor
ImageGray
含义:待处理图像
- 结果标签
类型:
IntList
含义:旋转框目标检测结果的类别标签集合
- 结果得分
类型:
DoubleList
含义:旋转框目标检测结果的类别得分集合
- 结果包围盒
类型:
RotationRect2Dlist
含义:旋转框目标检测结果的包围盒集合
- 包围盒掩膜
类型:
RegionList
含义:旋转框目标检测结果的包围盒区域掩膜集合
- 结果图
类型:
Debug2D
含义:旋转框目标检测结果图
- 模型路径
含义:模型文件所在的路径
- 分数阈值
含义:旋转框目标检测得分阈值
范围: [0.0,1.0]
- 最大目标数
含义:旋转框目标检测最大显示数量
范围: [0,100]
输入图像
输出图像
DL关键点检测#
深度学习关键点检测可以用来加载训练好的模型文件,并对输入图像进行推理,实现关键点检测的功能。
- 输入图像
类型:
ImageColor
ImageGray
含义:待处理图像
- 结果标签
类型:
IntList
含义:关键点检测结果的类别标签集合
- 结果位置
类型:
Vector2DList
含义:关键点检测结果的关键点位置集合
- 结果图
类型:
Debug2D
含义:关键点检测结果图
- 模型路径
含义:模型文件所在的路径
- 分数阈值
含义:关键点得分阈值
范围: [0.0,1.0]
- 最大目标数
含义:关键点最大显示数量
范围: [0,100]
- 增益:
含义:关键点检测增益(默认2500,敏感参数需调试,信息较多的图片可以先尝试大增益)
范围: [100,10000]
输入图像
输出图像
变量#
转换为字符串#
将各种变量转换为字符串类型。
- 输入值
类型:
任意变量
含义:待处理值
- 字符串
类型:
String
含义:字符串
- 值输入设置
含义:值的输入方式
范围:从输入设置,从参数设置
- 连载配置
含义:分割标志
范围:前缀,后缀,分隔符,列表前缀,列表后缀,列表分隔符
- 请输入字符串
含义:直接输入字符串
输入图像
字符串拼接#
将两个字符串拼接为一个字符串。
- 字符串1
类型:
String
含义:待处理字符串
- 字符串2
类型:
String
含义:待处理字符串
- 输出字符串
类型:
String
含义:输出字符串
- 连载配置
含义:分割标志
范围:前缀,后缀,分隔符
输入图像
变量赋值#
将一个变量赋给另一个变量。
- 源变量
类型:
任意变量
含义:变量的来源
- 目标变量
类型:
任意变量
含义:被赋值的变量
输入图像
通用算子#
脚本#
简介#
此脚本函数手册适用于DUCO MIND编程使用
lua语法的脚本, 支持原生lua语法以及本系统自定义的一些语法和函数
输入#
点击脚本算子, 打开 模板配置 即可增加或删除输入变量, 如下图所示为打开 模板配置
点击上图中箭头所指的 + 号可以增加输入, 默认增加的输入类型为 String , 默认名称为 输入变量1 , 点击下图箭头所指可以删除某个输入变量
当增加或删除某个输入变量后, 关闭 模板配置 开关, 关闭后的结果如下图所示
此时在 输入变量1 后的下拉框选择一个 String 类型的变量即可
获取 输入变量1 的值可用下列语句:
str1 = Script.get_value("输入变量1")
输出#
点击脚本算子, 打开 模板配置 即可增加或删除输出变量, 如下图所示为打开 模板配置
点击上图中箭头所指的 + 号可以增加输出, 默认增加的输出类型为 String , 输出名称为 输出变量1 , 点击下图箭头所指可以删除某个输出变量
当增加或删除某个输出变量后, 关闭 模板配置 开关, 关闭后的结果如下图所示
此时点击 输出变量1 后箭头所指的按钮可弹出 监控 开关, 打开 监控 开关可以将该输出添加到监视列表中
给 输出变量1 的赋值 hello, world 语句为:
Script.set_value("输出变量1", "hello, world")
数据类型和变量#
内置数据类型#
空类型: nil,表示没有任何有效值。
算术类型: 系统内置算数类型为双精度实浮点数(number)。
字符串类型 : String 例如 “siasun robot”
布尔类型 : Bool 列如 true、false
列表类型list : 可容纳其他数据类型的表(数组结构):例如 {1,2,3,4,5}、{“a”,”b”,”c”}
扩展数据类型#
Pose3D#
存储6个 Double 类型的变量, 例如 : {1.1, 2.2, 3.3, 4.4, 5.5, 6.6} , 通常可用来表示机器人位姿, 例如:
my_pose3d=Pose3D.new({1.1, 2.2, 3.3, 4.4, 5.5, 6.6})
表示定义一个Pose3D类型的my_pose3d值为{1.1, 2.2, 3.3, 4.4, 5.5, 6.6}
my_pose3d1=Script.get_value(my_pose3d):get()
表示读取my_pose3d中的值并给到my_pose3d1
Script.set_value(my_pose3d2, my_pose3d1)
表示将my_pose3d1的值赋值给my_pose3d2
Vector3D#
存储3个 Double 类型的变量, 例如 : {1.1, 2.2, 3.3} , 例如:
my_vec3d=Vector3D.new({1.1, 2.2, 3.3})
表示定义一个Vector3D类型的my_vec3d值为{1.1, 2.2, 3.3}
my_vec3d1=Script.get_value(my_vec3d):get()
表示读取my_vec3d中的值并给到my_vec3d1
Script.set_value(my_vec3d2, my_vec3d1)
表示将my_vec3d1的值赋值给my_vec3d2
系统常量#
一个形如42的值被称作字面值常量。每个字面值常量都对应一种数据类型, 字面值常量的形式和值决定了它的数据类型和在脚本中的使用方式。系统支持的常量如下:
基本类型常量#
算数类型常量、true、false
算数类型常量通常指的双精度实浮点数常量,该类型常量可以参与关系运算、算数运算、逻辑运算,并可以为基本类型变量进行赋值和初始化,亦可作为函数的实参进行参数传递。
true在系统中代指真
false在系统中代指假
字符串常量#
字符串常量是字符的集合,字符串常量可用于字符串变量的定义,函数参数传递
变量#
变量在系统中通常用一个唯一的标识符来表示 (id). 并且变量需要在定义之后才可以使用。
基本类型变量#
a =1.23 `变量赋值 上面定义了a的类型为双精度实浮点数, 初始化a的值为1.23 `
b = true b 布尔变量定义,初始化为 真
c = false `c 布尔变量定义,初始化为 假
字符串类型变量#
s1= “siasun” s1变量定义 字符串类型 初始化为“siasun”
s2= “SiasunCobot” s2 变量定义 字符串类型 初始化为“SiasunCobot”
s2=s1 `s2 变量赋值,值修改为 “siasun” `
列表类型变量#
a1 = {} a1变量定义, 空列表, 长度为0
a2={1.1, 2.2, 3.3, 4.4} a2 变量定义, 双精度实浮点数列表, 长度为4
a3={ “a”, “b”, “c” } a3变量定义, 字符串列表, 长度为3
a4=a3 a4 变量定义, a4和a3指向同一个列表, 修改a4的值, a3同时被修改
可以通过索引操作具体的元素, 索引下标从1开始, 比如:
a2[1]=12
a3[2]= “siasun”
表达式#
表达式在系统中指的是有返回值的运算集合,是一个递归的定义。
在此用exp表示表达式, 用op表示运算符。
系统支持 加(+)减(-)乘(*)除(/)四类算数运算,算数运算表达式返回算数类型常量。
关系运算表达式#
系统支持 > < >= <= == ~= 类型的关系运算,关系运算表达式返回常量真或假。
逻辑运算表达式#
系统支持and 、 or 、 not类型的逻辑运算。
exp1 and exp2, 若exp1 为真 而且 exp2 为真, 那么表达式返回true, 否则返回 false。
exp1 or exp2, 若exp1为真 或者 exp2为真, 那么表达式返回true, 否则返回 false。
not exp1, 若exp1为真, 那么表达式返回false, 否则返回 true。
赋值表达式#
变量名(id) = exp
赋值表达式的左值是一个变量的表示符,只有在变量已经定义过的情况下该表达式才是一个赋值表达式,若变量没有定义,那么就是一个变量定义语句。
函数调用表达式#
函数名 (实参列表)
语句#
循环语句while#
while (exp)
do
exp
…
end
函数定义#
function fun( 参数列表 )
语句列表
…
return exp
end
例:
function fun1(a,b,c)
…
return a+b+c
end
参数类型:以实际传入参数为准
返回值类型:以实际返回参数为准
函数可以多参数返回,以 , 分割 例如:
function fun1(a,b,c)
…
return a,b,c
end
return语句#
return exp
Tip
return语句 只能用在函数内部, 用来返回函数的运算结果
return语句 返回的数据类型决定了函数的返回值, 若函数中没有包含 return语句 , 那么函数不返回任何值
条件控制语句#
形式一:#
if (exp)
then
…
elseif (exp)
then
…
else
…
end
形式二:#
if (exp)
then
…
end
形式三:#
if (exp)
then
…
else
…
end
同大多数语言一样, 系统支持if条件控制语句, 当if / elseif 中的判定条件表达式为真时, 就执行语句块中的内容
Tip
控制结构的条件表达式结果可以是任何值, false和nil为假, true和非nil为真
特别注意0为true:
if (0)
then
print("0 is true")
end
结果: 0 is true
goto语句#
goto Label
:: Label::
例:
a=1
::label:: print("----goto-----"")
if a<3 then
goto label
end
break语句#
使用break语句终止循环。
例:
a=10
while( a<20 )
do
print("a=",a)
a=a+1
if(a>15) then
break
end
end
函数#
鼠标点击下图箭头所指处即可弹出 脚本添加 界面, 该界面存在常用的一些函数, 点击函数名称会有函数说明
脚本添加界面如下, 鼠标在脚本添加界面上方按住可拖动当前界面
单击函数名称会显示该函数的介绍页, 如下图为显示 pose_multiply 函数的介绍部分:
在上图中, 鼠标双击 某个函数可直接将该函数添加到脚本编辑框中
赋值函数#
set_value()
例如用一个 String 类型的变量 Str1 给 输出变量1 赋值:
set_value("输出变量1", Str1)
取值函数#
get_value()
例如读取一个 String 类型的 输入变量1 的值:
valueStr=get_value("输入变量1")
例如读取一个 Pose3D 类型的 输入变量2 的值:
valuePose=get_value("输入变量2")
全局函数#
pose3d_multiply
或pose3d_trans
两个位姿相乘得到一个新的位姿参数1: Pose3D
参数2: Pose3D
返回值:Pose3D
例子: pose1 = pose3d_multiply(pose2, pose3) 或 pose1 = pose3d_trans(pose2, pose3)
pose3d_inverse
或pose3d_inv
位姿取逆参数1: Pose3D
返回值:Pose3D
例如: pose1 = pose3d_inverse(pose2)
pose3d_angle
求两个位姿之间的轴角参数1: Pose3D
参数2: Pose3D
返回值1:Double
返回值2:Vector3D
例如: angle, vec = pose3d_angle(pose1, pose2)
pose3d_distance
计算两个位姿的空间距离参数1: Pose3D
参数2: Pose3D
返回值:Int
例如: distance = pose3d_distance(pose1, pose2)
pose3d_offset
计算两个位姿之间的偏移量参数1: Pose3D
参数2: Pose3D
返回值:Pose3D
例如: poseOff = pose3d_offset(pose1, pose2)
pose3d_get_trans
将一个Pose3D类型的 x,y,z值输出到一个Vector3D中参数: Pose3D
返回值:Vector3D
例如: vec = pose3d_get_trans(pose1)
pose3d_get_rpy
将一个Pose3D类型的 RX,RY,RZ值输出到一个Vector3D中参数: Pose3D
返回值:Vector3D
例如: vec = pose3d_get_rpy(pose1)
cross_product
两个向量的差乘参数1: Vector3D
参数2: Vector3D
返回值:Vector3D
例如: vec = cross_product(vec1, vec2)
rpy_to_axis_angle
欧拉角转换成轴角参数1: RPY
返回值:Double
例如: var = rpy_to_axis_angle(rpy)
axis_angle_to_rpy
轴角转欧拉角参数1: Vector3D
参数2: Vector3D
返回值:RPY
例如: rpy1 = axis_angle_to_rpy(vec1, vec2)
vector3d_norm
向量的模长参数: Vector3D
返回值:Float
例如: var = vector3d_norm(vec)
vector3d_normalized
向量的归一化参数: Vector3D
返回值:Vector3D
例如: vec1 = vector3d_normalized(vec2)
vector3d_cross
两个向量的差乘参数1: Vector3D
参数2: Vector3D
返回值:Vector3D
例如: vec = vector3d_cross(vec1, vec2)
vector3d_dot
两个向量的点乘参数1: Vector3D
参数2: Vector3D
返回值:Float
例如: dot = vector3d_dot(vec1, vec2)
rpy_to_rot
欧拉角转换成旋转矩阵参数: Vector3D
返回值1:Vector3D
返回值2:Vector3D
返回值3:Vector3D
例如: vx,vy,vz = rpy_to_rot(vec)
rot_to_rpy
旋转矩阵转换成欧拉角参数1: Vector3D
参数2: Vector3D
参数3: Vector3D
返回值:Vector3D
例如: vec = rot_to_rpy(vec1, vec2, vec3)
sleep
程序休眠一段时间 单位: 毫秒参数: Int
例如: sleep(500) 表示程序将休眠500毫秒
log
打印日志- 参数1: String 日志等级, 支持以下四个等级
“debug”
“info”
“error” : 打印错误日志,此时错误
“warn”
参数2: String 日志具体内容
例如: log(“debug”, “hello, world”)
time
计算并返回当前毫秒级时间戳返回值: Double 当前时间戳
例如: curTime = time()
Pose2D类型相关函数#
定义#
new()
: 以列表的形式创建Pose2D类型, 具体如下
例: 定义一个 Pose2D 类型的变量 pose1 , 并且该变量的值为 1,2,3 :
pose1=Pose2D.new({1, 2, 3})
Tip
String , Int , Double , Bool 类型在定义时可以直接用 = 赋值定义, 其他类型诸如Pose3D等在定义时均要使用 new()
Pose2D类型取值#
可直接使用下标访问取值, 比如 存在Pose2D类型的数据 p1 = {1,2,3}, 则p1[1]的值为1, p1[2]的值为2, p1[3]的值为3
Pose2D类型赋值#
可直接使用下标访问赋值, 比如 存在Pose3D类型的数据 p1 = {1,2,3}, 可使p1[1] = 111, 则此时p1 = {111, 2, 3}
Pose3D类型相关函数#
定义#
new()
: 以列表的形式创建Pose3D类型, 具体如下
例: 定义一个 Pose3D 类型的变量 pose1 , 并且该变量的值为 1,2,3,4,5,6 :
pose1=Pose3D.new({1, 2, 3, 4, 5, 6})
Tip
String , Int , Double , Bool 类型在定义时可以直接用 = 赋值定义, 其他类型诸如Pose3D等在定义时均要使用 new()
Pose3D类型取值#
可直接使用下标访问取值, 比如 存在Pose3D类型的数据 p1 = {1,2,3,4,5,6}, 则p1[1]的值为1, p1[2]的值为2, p1[3]的值为3, p1[4]的值为4, p1[5]的值为5, p1[6]的值为6
Pose3D类型赋值#
可直接使用下标访问赋值, 比如 存在Pose3D类型的数据 p1 = {1,2,3,4,5,6}, 可使p1[1] = 111, 则此时p1 = {111, 2, 3, 4, 5, 6}
Vector2D类型相关函数#
定义#
new()
: 以列表的形式创建Vector2D类型, 具体如下
例: 定义一个 Vector2D 类型的变量 vector1 , 并且该变量的值为 1,2 :
vector1=Vector2D.new({1, 2})
Tip
String , Int , Double , Bool 类型在定义时可以直接用 = 赋值定义, 其他类型诸如Pose3D等在定义时均要使用 new()
Vector2D类型取值#
比如 存在Vector2D类型的数据 v1 = {1,2}, 则 v1[1] 的值为1, v1[2]的值为2
Vector2D类型赋值#
比如 存在Vector2D类型的数据 v1 = {1,2}, 则 v1[1] = 8后 v1 = {8, 2}
Vector3D类型相关函数#
定义#
new()
: 以列表的形式创建Vector3D类型, 具体如下
例: 定义一个 Vecot3D 类型的变量 vector1 , 并且该变量的值为 1,2,3 :
vector1=Vecot3D.new({1, 2, 3})
Tip
String , Int , Double , Bool 类型在定义时可以直接用 = 赋值定义, 其他类型诸如Pose3D等在定义时均要使用 new()
Vector3D类型取值#
比如 存在Vecot3D类型的数据 v1 = {1,2,3}, 则 v1[1] 的值为1, v1[2] 的值为2, v1[3] 的值为3
Vector3D类型赋值#
比如 存在Vecot3D类型的数据 v1 = {1,2,3}, 则 v1[1] = 8后 v1 = {8,2,3}
- normalized
含义: 返回大小为1的向量(只读)。规范化时,向量保持相同的方向,但其长度为1.0。如果向量太小而不能被归一化,则返回一个零向量
参数: Vector3D
返回值:Vector3D
例如: v1 = v2:normalized()
- normalize
含义: 自身规范化
参数: Vector3D
返回值:无
例如:v:normalize()
ROI2DRect类型相关函数#
定义#
new()
: 以列表的形式创建ROI2DRect类型, 具体如下
例: 定义一个 ROI2DRect 类型的变量 var , 并且该变量的x = 1, y = 2, width = 3, height = 4 :
var=ROI2DRect.new({1, 2, 3, 4})
Tip
String , Int , Double , Bool 类型在定义时可以直接用 = 赋值定义, 其他类型诸如Pose3D等在定义时均要使用 new()
ROI2DRect类型取值#
可直接使用下标访问取值, 比如 存在ROI2DRect类型的数据 v1 = {1,2,3,4}, 则v1[1]的值(表示x)为1, v1[2]的值(表示y)为2, v1[3]的值(表示width)为3, v1[4]的值(表示height)为4
ROI2DRect类型赋值#
可直接使用下标访问赋值, 比如 存在ROI2DRect类型的数据 v1 = {1,2,3,4}, 可使v1[1] = 111, 则此时v1 = {111, 2, 3, 4}
ROI2DRotatedRect类型相关函数#
定义#
new()
: 以列表的形式创建ROI2DRotatedRect类型, 具体如下
例: 定义一个 ROI2DRotatedRect 类型的变量 var , 并且该变量的x = 1, y = 2, angle = 90, width = 3, height = 4 :
var=ROI2DRotatedRect.new({1, 2, 90, 3, 4})
Tip
String , Int , Double , Bool 类型在定义时可以直接用 = 赋值定义, 其他类型诸如Pose3D等在定义时均要使用 new()
ROI2DRotatedRect类型取值#
可直接使用下标访问取值, 比如 存在ROI2DRotatedRect类型的数据 v1 = {1,2,90,3,4}, 则v1[1]的值(表示x)为1, v1[2]的值(表示y)为2, v1[3]的值(表示angle)为90, v1[4]的值(表示width)为3, v1[5]的值(表示height)为4
ROI2DRotatedRect类型赋值#
可直接使用下标访问赋值, 比如 存在ROI2DRotatedRect类型的数据 v1 = {1,2,90,3,4}, 可使v1[1] = 111, 则此时v1 = {111, 2,90, 3, 4}
Rect2D类型相关函数#
定义#
new()
: 以列表的形式创建Rect2D类型, 具体如下
例: 定义一个 Rect2D 类型的变量 var , 并且该变量的x = 1, y = 2, width = 3, height = 4 :
var=Rect2D.new({1, 2, 3, 4})
Tip
String , Int , Double , Bool 类型在定义时可以直接用 = 赋值定义, 其他类型诸如Pose3D等在定义时均要使用 new()
Rect2D类型取值#
可直接使用下标访问取值, 比如 存在Rect2D类型的数据 v1 = {1,2,3,4}, 则v1[1]的值(表示x)为1, v1[2]的值(表示y)为2, v1[3]的值(表示width)为3, v1[4]的值(表示height)为4
Rect2D类型赋值#
可直接使用下标访问赋值, 比如 存在Rect2D类型的数据 v1 = {1,2,3,4}, 可使v1[1] = 111, 则此时v1 = {111, 2, 3, 4}
RotatedRect2D类型相关函数#
定义#
new()
: 以列表的形式创建RotatedRect2D类型, 具体如下
例: 定义一个 RotatedRect2D 类型的变量 var , 并且该变量的x = 1, y = 2, angle = 90, width = 3, height = 4 :
var=RotatedRect2D.new({1, 2, 90, 3, 4})
Tip
String , Int , Double , Bool 类型在定义时可以直接用 = 赋值定义, 其他类型诸如Pose3D等在定义时均要使用 new()
RotatedRect2D类型取值#
可直接使用下标访问取值, 比如 存在RotatedRect2D类型的数据 v1 = {1,2,90,3,4}, 则v1[1]的值(表示x)为1, v1[2]的值(表示y)为2, v1[3]的值(表示angle)为90, v1[4]的值(表示width)为3, v1[5]的值(表示height)为4
RotatedRect2D类型赋值#
可直接使用下标访问赋值, 比如 存在RotatedRect2D类型的数据 v1 = {1,2,90,3,4}, 可使v1[1] = 111, 则此时v1 = {111, 2,90, 3, 4}
RPY类型相关函数#
定义#
new()
: 以列表的形式创建RPY类型, 具体如下
例: 定义一个 RPY 类型的变量 var , 并且该变量的rx = 1, ry = 2, rz = 3, rpyType(欧拉角类型,范围0~11) = 1, refType(范围 0(内旋), 1(外旋)) = 0 :
var=RPY.new({1, 2, 3, 1, 0})
Tip
String , Int , Double , Bool 类型在定义时可以直接用 = 赋值定义, 其他类型诸如Pose3D等在定义时均要使用 new()
RPY类型取值#
可直接使用下标访问取值, 比如 存在RPY类型的数据 v1 = {1, 2, 3, 1, 0}, 则v1[1]的值(表示rx)为1, v1[2]的值(表示ry)为2, v1[3]的值(表示rz)为3, v1[4]的值(表示rpyType)为1, v1[5]的值(表示refType)为0
RPY类型赋值#
可直接使用下标访问赋值, 比如 存在RPY类型的数据 v1 = {1, 2, 3, 1, 0}, 可使v1[1] = 111, 则此时v1 = {111, 2,3, 1, 0}
查找#
点击下图箭头所指图标即可弹出查找框, 输入要查找的内容即可
延时#
使程序休眠一段时间
- 睡眠时间单位
含义:睡眠时间的单位时间
范围:秒,毫秒
- 睡眠时间
含义:睡眠时间
范围:[0,2147483647]
数组#
数组清空#
将一个数组清空。
- 输入数组
类型:
任意数组
含义:待处理数组
数组取值#
将从一个数组中取值。
- 输入数组
类型:
任意数组
含义:待处理数组
- 数组元素值
类型:
任意数组
含义:取出的元素
- 取值下标
含义:需要取值的元素下标
范围:[1,2147483647]
新建数组#
将一个数组清空。
- 输出数组
类型:
任意数组
含义:新建的数组
- 数组类型
含义:新建的数组类型
范围:BoolList,Circle2DList,DoubleList,Edge2DList,ImageColorList,ImageGrayList,IntList,Line2DList,LineSegment2DList,Point2DList,PointCloudList,PointCloudNormalList,Polygon2DList,Pose2DList,Pose3DList,PropertyTypeList,Rect2DList,RegionList,Ring2DList,RotatedRect2DList,Size2DList,StringList,Text2DList,Vector2DList,Vector3DList,Vector4DList
数组元素删除#
将一个数组中的某个元素删除。
- 输入数组
类型:
任意数组
含义:待处理数组
- 删除元素下标
含义:需要删除的元素下标
范围:[1,2147483647]
数组元素添加#
将一个元素添加进一个数组中。
- 输入数组
类型:
任意数组
含义:待处理数组
- 要添加的元素
类型:
任意匹配元素
含义:要添加的元素
逻辑算子#
并行分支#
可自定义分支的并行运行逻辑。
右上角+号可添加分支,划块开关控制分支使能。
选择分支#
可自定义分支的选择运行逻辑。
- 类型
含义:选择被判断元素的类型
范围:Int,Double,Bool,String
- 变量描述名
含义:具体被判断的值
- 条件
含义:判别条件
右上角+号可添加分支,划块开关控制分支使能。
条件循环#
根据条件进行循环的功能。
- 类型
含义:选择被判断元素的类型
范围:Int,Double,Bool,String
- 条件变量
含义:具体被判断的值
- 循环条件
含义:循环判别条件
数组遍历#
在数组中遍历元素的功能。
- 输入
类型:
任意数组
含义:待处理数组
- 输出
类型:
相应元素
含义:输出的元素
相机#
相机拍照#
相机拍照算子可调用DucoMimd已经连接上的某一个相机进行拍照操作, 拍照时可设置失败重拍和失败重连等操作
- 输入相机
类型:
相机
含义:已经连接上的相机名称
- 输出结果
类型:
Bool
含义:相机拍照是否成功
- 自动连接
自动重连:是否开启相机自动重连的开关
重连次数:相机未连接时自动重连的次数
重连间隔:每次连接的时间间隔
- 失败重拍
自动拍照:是否开启相机自动重拍的开关
重拍次数:相机拍照失败时自动重拍的次数
重拍间隔:每次重拍的时间间隔
- 相机类型
含义:在使用相机拍照算子进行相机拍照前可设置相机的参数
Tip
使用相机拍照算子设置相机参数时,若选择的相机类型与当前相机类型不对应则运行该算子后算子的输出结果为false
相机拍照算子中展现的相机参数为相机的默认参数组,不能根据具体相机实例的参数进行动态更新,但是在相机拍照算子中更改了参数后会更新具体相机实例中的参数
调试#
2D调试#
2D调试算子可输入一个Debug2D算子,并向其中绘入特定的参数,比如图像、线段、坐标轴和圆点等
- 输入Debug2D
类型:
Debug2D
含义:输入Debug2D类型的数据,后续的绘制会在该数据上进行
- 输入Vector2D
类型:
Vector2D
Vector2DList
含义:Vector2D和Vector2DList类型的数据, 表示绘制圆点
- 输入Pose2D
类型:
Pose2D
Pose2DList
含义:Pose2D和Pose2DList类型的数据, 表示绘制坐标轴
- 输入Region
类型:
Region
RegionList
含义:Region和RegionList类型的数据, 表示绘制Region
- 输入String
类型:
String
StringList
含义:String和StringList类型的数据, 表示绘制文本
- 输入Image
类型:
ImageColor
ImageGray
含义:ImageColor和ImageGray类型的数据, 表示在绘制图像
- 绘制类型
Vector2D:此时需要输入一个
Vector2D
或Vector2DList
类型的数据,表示在特定的一个或几个坐标绘制点Pose2D:此时需要输入一个
Pose2D
或Pose2DList
类型的数据,表示在特定的一个或几个坐标绘制坐标轴Region:此时需要输入一个
Region
或RegionList
类型的数据,表示绘制一个或多个RegionString:此时需要输入一个
String
, 表示在坐标圆点绘制文字String_Pose2D:此时需要输入一个
String/StringList
和一个Pose2D/Pose2DList
, 表示在特定的坐标绘制文字Image:此时需要输入一个
ImageColor
或ImageGray
类型的数据, 表示绘制图片
- 颜色粗细配置
面板颜色:绘制在面板上的颜色, 可选
绿
,红
,黑
,蓝
,白
填充颜色:填充的颜色, 可选
绿
,红
,黑
,蓝
,白
粗细:线条或点的粗细
面板开关:是否开启面板颜色
填充开关:是否开启填充颜色
线类型:可选择绘制的线条是
实线
还是虚线
- 粗细大小配置
粗细:绘制线条的粗细
大小:绘制点的大小
- 颜色配置
颜色:绘制面板的颜色
粗细:绘制线条的粗细
- String和Pose2D配置
颜色:绘制文字的颜色
粗细:绘制文字的大小
3D调试#
3D调试算子可输入一个Debug3D算子,并向其中绘入特定的参数,比如点云、坐标轴和圆点
- 输入Debug3D
类型:
Debug3D
含义:输入Debug3D类型的数据,后续的绘制会在该数据上进行
- 输入Vector3D
类型:
Vector3D
Vector3DList
含义:Vector3D和Vector3DList类型的数据, 表示在Debug3D上添加绘制圆点
- 输入Pose3D
类型:
Pose3D
Pose3DList
含义:Pose3D和Pose3DList类型的数据, 表示在Debug3D上添加绘制坐标轴
- 输入PointCloud
类型:
PointCloudXYZ
PointCloudNormal
含义:PointCloudXYZ和PointCloudNormalt类型的数据, 表示在Debug3D上添加点云数据
- 绘制类型
Vector3D:此时需要输入一个
Vector3D
或Vector3DList
类型的数据,表示在特定的一个或几个坐标绘制点Pose3D:此时需要输入一个
Pose3D
或Pose3DList
类型的数据,表示在特定的一个或几个坐标点绘制坐标轴PointCloud:此时需要输入一个
PointCloud
或PointCloudNormal
类型的数据,表示绘制点云
- 颜色粗细配置
面板颜色:绘制在面板上的颜色, 可选
绿
,红
,黑
,蓝
,白
粗细:线条或点的粗细
面板开关:是否开启面板颜色
填充开关:是否开启填充颜色
- 长度粗细配置
粗细:绘制线条的粗细
长度:绘制线条的长度