3D相机定位抓取介绍

本文已参与「新人创作礼」活动,一起开启掘金创作之路.

本文从实际的案例触发介绍3D定位抓取的介绍

1.目前市面上的3D相机大体上分为一体式和分体式;

一体式的3D相机是吧相机和镜头组装在了一起,相机的事业和检测精度已经固定,想要换视野就要换相机。代表的有国产的没卡曼德。

分体式的3D相机则是可以随意的各部分华北镜头来适配合适的视野,使用更加便捷,代表的有Sick的ranger3相机。

本次介绍以Sick的分体式相机为例

上面的是普通的3D相机的安装方式,下面的是分体的安装方式。 image.png

image.png

这张图可能更加的直观

image.png

指导了相机的构成之后,我们需要取图; 如下是3D相机取出的图像:

1.png

2.png

我们通过halcon进行模板的创建

```C# devclosewindow() ScanningRulerReadBuffer (ImageCirX, ImageCirY, ImageCirZ, Intensity,768,512,'6/Image5/2T13C.dat') * genrectangle1 (Rectangle, 140, 200, 290, 430) * genrectangle1 (Rectangle1, 220, 140, 510, 360) * createshapemodel (ImageCirZ, 'auto', -0.39, 0.79, 'auto', 'auto', 'usepolarity', 'auto', 'auto', ModelID) ScanningRuler_ReadBuffer (ImageCirX, ImageCirY, ImageCirZ, Intensity,768,512,'C:/Users/92576/Desktop/2.dat') get_image_size (ImageCirZ, Width, Height) dev_open_window (0, 0, Width, Height1, 'black', WindowHandle) devdisplay (ImageCirZ) * medianimage (ImageCirX, ImageMedian, 'circle', 1, 'mirrored') * gen_rectangle1 (Region, 106, 311, 315, 521)

drawregion (Region, WindowHandle) reducedomain(ImageCirZ, Region, ImageCirZ) threshold (ImageCirZ, Region1, 344, 364) connection (Region1, Connected1) reducedomain (ImageCirY, Connected1, ImageCirY) reducedomain (ImageCirX, Connected1, ImageCirX) reducedomain (ImageCirZ, Connected1, ImageCirZ) *将3D点从图像转换为3D对象模型 xyztoobjectmodel_3d (ImageCirX, ImageCirY, ImageCirZ, ObjectModel3D1)

*示例一个3D对象模型 sampleobjectmodel_3d (ObjectModel3D1, 'accurate', 0.001, [], [], ObjectModel3DAffineTrans1Sample)

*计算三维物体模型的三维曲面法线 surfacenormalsobjectmodel3d(ObjectModel3DAffineTrans1Sample,'mls', [], [], ObjectModel3DAffineTrans1N)

Instructions[0] := 'Rotate: Left button' Instructions[1] := 'Zoom: Shift + left button' Instructions[2] := 'Move: Ctrl + left button' Message := 'Surface model Right'

*交互式显示三维对象模型 visualizeobjectmodel_3d (WindowHandle, ObjectModel3D1, [], [], [], [], Message, [], Instructions, PoseOut)

*创建执行基于表面的匹配所需的数据结构 createsurfacemodel (ObjectModel3DAffineTrans1N, 0.02, [], [], SFM)

*将表面模型写入文件 writesurfacemodel (SFM, 'C:/Users/92576/Desktop/14.sfm')

*将3D对象模型写入文件 writeobjectmodel_3d (ObjectModel3D1, 'om3', 'Desktop/14.om3', [], []) ```

这个因为C#的源代码太多了,我这里就发了halcon的.

image.png 太多了. 代码片段

我放片段了,大家可以参考下.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋小童

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值