主要内容

readAprilTag

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

描述

例子

[ID) = readAprilTag (一世的)检测输入图像中的ApRIGLAGS一世并返回与标记关联的位置和ID。

[ID) = readAprilTag (一世tagFamily的)检测只有指定的家庭的Aprigrags,tagFamily

[___姿势) = readAprilTag (___intrinsic标签的)关于指定的相机内在参数返回标签的姿势,intrinsic以及标签的大小标签除了前面语法中的任何参数组合之外。

[___detectedFamily) = readAprilTag (___的)返回已识别的Aprileg家族,detectedFamily

例子

全部收缩

将图像读入工作区。

我= imread(“aprilTagsMulti.jpg”);

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

tagFamily = [“tag36h11”“tagcircle21h7”“tagcircle49h12”“tagCustom48h12”“tagstandard41h12”];

检测图像中的标签和标记位置,然后读取标签ID。

[id、loc detectedFamily] = readAprilTag(我tagFamily);为了IDX = 1:长度(ID)%显示ID和标签系列disp (“检测到标签ID,家庭:”(idx) + + id”、“......+检测到家庭{idx});%插入标记以指示位置Markerradius = 8;numcorners = size(loc,1);MarkerPosition = [LOC(:,:,idx),repmat(markerradius,numcorners,1)];我= instrshape(我,“FilledCircle”,markerposition,“颜色”“红色的”“不透明度”1);结尾
检测到的标签ID, Family: 30, tag36h11检测到的标签ID, Family: 32, tagCircle21h7检测到的标签ID, Family: 98, tagStandard41h12检测到的标签ID, Family: 195, tagCustom48h12检测到的标签ID, Family: 884, tagCircle49h12

使用标记显示图像以指示检测到的标记的角落位置。

imshow(i)

图包含轴对象。轴对象包含类型图像的对象。

将包含AprilTags的图像读取到工作区中。显示图像。

我= imread(“apriltag36h11.jpg”);imshow(i)

加载相机内部参数。

data = load(“camintrinsicsapriltag.mat”);内在= data.intrinsics;

指定以米为单位的标记大小。

Tagsize = 0.04;

使用相机的固有参数校正输入图像。

我= undistortImage (intrinsic,“outputView”“相同的”);

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

(id、loc姿势)= readAprilTag(我“tag36h11”、intrinsic tagSize);

设置坐标轴向量和标记帧的原点。

WorldPoints = [0 0 0;标签/ 2 0 0;0 TAGSIZE / 2 0;0 0 TAGSIZE / 2];

向图像添加标记帧和id。

为了i = 1:长度(构成)%获取轴的图像坐标。imagePoints = WorldToImage(内在,姿势(i)。轨迹,......构成(i) .Translation worldPoints);%绘制彩色轴。我= instrshape(我,“行”,[imagePoints(1,:)图像点(2,:);......imagePoints(1,:)拍摄点(3,:);图像点(1,:)拍摄点(4,:)],......“颜色”,[“红色的”“绿色”“蓝色”],“线宽”7);我= insertText (loc (1: I),身份证(我),“boxpacity”,1,“字形大小”,25);结尾

显示带注释的图像。

imshow(i)

输入参数

全部收缩

输入图像,指定为M.——- - - - - -N.-By-3 TrueColor图像或M.——- - - - - -N.灰度图像。

APRILTAG系列,指定为此表中列出的一个或多个有效的APRING系列。指定家庭可以通过限制搜索来减少功能的运行时间。

Apriltag家族
“tag16h5”
“tag25h9”
“tag36h11”
“tagcircle21h7”
“tagcircle49h12”
“tagCustom48h12”
“tagstandard41h12”
“tagstandard52h13”

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

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

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

输出参数

全部收缩

标记ID,返回正整数的向量。

图像中标签的位置,返回为4-of-2 -N.大批。阵列包含(Xy)的位置为每个四个角N.标签。

标记相对于相机的姿态,返回为数组rigid3d.对象。每个对象将标签的三维刚性转换封装在相同的世界单位中标签输入参数。每个标签帧的起源位于相应标签的中心。

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

提示

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

  • 对于需要更快的检测时间而不是支持的id数量的应用程序,请使用金宝app“tagstandard41h12”家庭标签。

  • 有关所有受支持的标记族的预生成标记,请参见金宝app在GitHub上预生成AprilTag图像

扩展能力

在R2020B中介绍