主要内容

readAprilTag

在图像检测和估计姿势AprilTag

描述

例子

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

(id,疯狂的)= readAprilTag (,tagFamily)检测AprilTags只有指定的家庭,tagFamily

(___,构成)= readAprilTag (___,intrinsic,tagSize)返回标签的姿势对指定的摄像机内参数,intrinsic和大小的标签tagSize除了参数在以前的语法的任意组合。

(___,detectedFamily)= readAprilTag (___)返回公认AprilTag家庭,detectedFamily

例子

全部折叠

读一个图像到工作区中。

我= imread (“aprilTagsMulti.jpg”);

图像中搜索指定AprilTag格式。

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

检测图像中标记和标签的位置,和阅读标签id。

[id、loc detectedFamily] = readAprilTag(我tagFamily);idx = 1:长度(id)%显示ID和标签的家庭disp (“检测到标签ID、家庭:“(idx) + + id”、“+ detectedFamily (idx));%插入标记指示的位置markerRadius = 8;numCorners =大小(loc, 1);markerPosition = [loc (:,:, idx) repmat (markerRadius numCorners 1)];我= insertShape (,“FilledCircle”、markerPosition颜色=“红色”,透明度= 1);结束
tag36h11检测到标签ID、家庭:30日检测到标签ID、家庭:32岁tagCircle21h7检测到标签ID、家庭:98年,tagStandard41h12检测到标签ID、家庭:195年,tagCustom48h12检测到标签ID、家庭:884年,tagCircle49h12

显示图像和标记来表示的角落位置检测到标签。

imshow(我)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

读一个图像,其中包含AprilTags到工作区中。显示图像。

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

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

加载摄像机内参数。

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

指定标签大小米。

tagSize = 0.04;

Undistort使用摄像机内参数的输入图像。

我= undistortImage(我intrinsic OutputView =“相同”);

检测特定的AprilTags家庭和估计标签构成。

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

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

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

添加标签帧和IDs的形象。

i = 1:长度(构成)%获得轴图像坐标。imagePoints = world2img (worldPoints构成(i), intrinsic);%画出彩色的轴。我= insertShape(线= [imagePoints (: 1) imagePoints (2:);:imagePoints (1) imagePoints (3:);:imagePoints (1) imagePoints (4:)),颜色= [“红色”,“绿色”,“蓝色”),线宽= 7);我= insertText(我,loc(1:我),身份证(我),BoxOpacity = 1,字形大小= 25);结束

带注释的图像显示。

imshow(我)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

输入参数

全部折叠

输入图像,作为指定——- - - - - -N3真彩图像或一个——- - - - - -N灰度图像。

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

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

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

摄像机内参数,指定为一个cameraIntrinsics对象。

标签的大小在世界单位(如毫米),指定为一个积极的标量。函数定义了标签的大小之间的长度两个相邻角落外黑边。

输出参数

全部折叠

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

标签的位置在图像,作为4-by-2-by——返回N数组中。该数组包含(x,y)为每个四个角的位置N标签。

提出了标记的相机,作为数组返回rigidtform3d对象。每个对象封装了3 d刚性变换的标签在世界相同的单位tagSize输入参数。每个标签帧的起源的中心位于相应的标签。的X- - - - - -Y标签面框架定义的平面表面的AprilTag坐Z设在指向标记。

检测到标签的家庭,作为一个向量返回的字符串。

提示

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

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

  • pregenerated标签标记所有支持的家庭,明白了万博1manbetxGitHub上Pregenerated AprilTag图像

扩展功能

版本历史

介绍了R2020b

全部展开