主要内容

readAprilTag

检测和估计图像中的AprilTag的姿势

描述

例子

id疯狂的= readAprilTag(检测输入图像中的AprilTags并返回与标记相关的位置和id。

id疯狂的= readAprilTag(tagFamily只检测指定族的AprilTags,tagFamily

___构成= readAprilTag(___intrinsictagSize返回标签相对于指定相机固有参数的姿态,intrinsic以及标签的大小tagSize除了以前语法中参数的任何组合之外。

___detectedFamily= readAprilTag(___返回公认的AprilTag家族,detectedFamily

例子

全部折叠

将图像读入工作区。

I = imread(“aprilTagsMulti.jpg”);

指定要在图像中搜索的AprilTag格式。

tagFamily = [“tag36h11”“tagCircle21h7”“tagCircle49h12”“tagCustom48h12”“tagStandard41h12”];

检测图像中的标签和标签位置,并读取标签id。

[id,loc,detectedFamily] = readAprilTag(I,tagFamily);Idx = 1:长度(id)显示ID和标签族disp (“检测到的标签ID,家族:”+ id(idx) +”、“...+ detectedFamily (idx));插入标记以指示位置markerRadius = 8;numCorners = size(loc,1);markerPosition = [loc(:,:,idx),repmat(markerRadius,numCorners,1)];I = insertShape(I,“FilledCircle”、markerPosition颜色=“红色”,透明度= 1);结束
Detected Tag ID, Family: 30, tag36h11 Detected Tag ID, Family: 32, tagCircle21h7 Detected Tag ID, Family: 98, tagStandard41h12 Detected Tag ID, Family: 195, tagCustom48h12 Detected Tag ID, Family: 884, tagCircle49h12

显示带有标记的图像,以指示检测到的标记的角落位置。

imshow(我)

图中包含一个轴对象。axis对象包含一个image类型的对象。

将包含AprilTags的图像读入工作区。显示图像。

I = imread(“aprilTag36h11.jpg”);imshow(我)

图中包含一个轴对象。axis对象包含一个image类型的对象。

加载相机的内在参数。

数据=负载(“camIntrinsicsAprilTag.mat”);intrinsic = data.intrinsic;

以米为单位指定标签大小。

tagSize = 0.04;

使用相机固有参数对输入图像进行校正。

I = undistortion timage (I,intrinsic,OutputView=“相同”);

检测一个特定的AprilTags家族并估计标签的姿势。

[id,loc,pose] = readAprilTag(I,“tag36h11”、intrinsic tagSize);

为坐标轴矢量和标签帧设置原点。

worldPoints = [0 0 0;tagSize/2 0;0 tagSize/2;tagSize/2];

将标签帧和id添加到图像中。

I = 1:长度(姿态)获取轴的图像坐标。imagePoints = world2img(worldPoints,pose(i),intrinsic);绘制彩色轴。I = insertShape(I,Line=[imagePoints(1,:) imagePoints(2,:);...: imagePoints (1) imagePoints (3:);: imagePoints (1) imagePoints (4:)),...颜色= [“红色”“绿色”“蓝色”),线宽= 7);I = insertText(I,loc(1,:, I),id(I),BoxOpacity=1,FontSize=25);结束

显示带注释的图像。

imshow(我)

图中包含一个轴对象。axis对象包含一个image类型的对象。

输入参数

全部折叠

输入图像,指定为——- - - - - -N-by-3真彩色图像或——- - - - - -N灰度图像。

AprilTag族,指定为该表中列出的一个或多个有效的AprilTag族。指定一个族可以通过限制搜索来减少函数的运行时间。

AprilTag家庭
“tag16h5”
“tag25h9”
“tag36h11”
“tagCircle21h7”
“tagCircle49h12”
“tagCustom48h12”
“tagStandard41h12”
“tagStandard52h13”

数据类型:字符|字符串|细胞

相机的内在参数,指定为cameraIntrinsics对象。

以世界单位(如毫米)表示的标签大小,指定为正标量。该函数将标签的大小定义为两个相邻角外黑边之间的长度。

输出参数

全部折叠

标签id,返回一个正整数的向量。

图像中标签的位置,作为4 × 2 × -返回N数组中。数组包含(xy)四个角的位置N标签。

标签相对于相机的姿态,作为数组返回rigidtform3d对象。对象在相同的世界单位中封装了标记的3-D刚性转换tagSize输入参数。每个标签帧的原点位于相应标签的中心。的X-Y标签框的平面是由AprilTag与标签所在的平面定义的Z指向标签的-轴。

检测到的标签族,作为字符串向量返回。

提示

  • 对于需要实时性能的应用程序,同时还要尽量减少假阳性检测,请考虑使用“tag36h11”家庭标签。

  • 对于需要更快的检测时间而不是支持的id数量的应用程序,请使用万博1manbetx“tagStandard41h12”家庭标签。

  • 有关所有支持的标记族的预生成标记,请参见万博1manbetx在GitHub上预生成AprilTag图像

扩展功能

版本历史

R2020b中介绍

全部展开