主要内容

本页采用了机器翻译。点击此处可查看英文原文。

generateArucoMarker

生成 ArUco 标记图像

自 R2024a 起

说明

imgs = generateArucoMarker(markerFamily,ids,markerSize) 生成指定族别 markerFamily 和大小 markerSize 的 ArUco 标记图像 imgs,并赋予其相应的标识符 ids

示例

imgs = generateArucoMarker(___,NumBorderBits=numBits) 用于设置生成标记时需添加的标记边框位数,此外还包含前一语法中的所有参量。请将 numBits 指定为一个正整值。默认值设置为 1

示例

全部折叠

生成 12 张 ArUco 标记图像,将其显示出来,并保存为 PNG 文件。

请指定要生成的标记的数量、大小、族别和 ID。

numMarkers = 12;
markerSize = 50; % in pixels
markerFamily = "DICT_4X4_250";
ids = 1:numMarkers;

生成 ArUco 标记点。

imgs = generateArucoMarker(markerFamily,ids,markerSize);

显示标记。

tiledlayout(3,4,TileSpacing="compact")
for i = 1:numMarkers
    nexttile
    imshow(imgs(:,:,i))
    title("ID = " + ids(i))
end

将每个标记图像写入一个 PNG 文件中。

for i = 1:numMarkers
    filename = markerFamily + "_ID" + ids(i) + ".png";
    imwrite(imgs(:,:,i), filename)
end

输入参数

全部折叠

ArUco 标记族,指定为字符向量、字符串标量、字符串向量或字符向量元胞数组。每个元素必须是表格中列出的有效 ArUco 标记族之一。请根据所需标记的总数、标记长度以及标记码词之间的汉明距离,选择适合您应用场景的标记族。同一族内标记之间的最小汉明距离,决定了检测这些标记和纠正错误的能力。标记数量较少的标记族比标记数量较多的标记族更稳健,因为后者需要提取的位数更多,这会增加标记检测的难度。以下通用规则适用:

  • 需要检测的位数越少,标记可被检测到的距离就越远。

  • 为了确保正确识别和解码,ArUco 标记需要带有白色边框,也称为静区

族别标记大小(位)族中的标记数量标记之间的最小汉明距离(比特)
"DICT_ARUCO_ORIGINAL"5×510243
"DICT_4X4_50"4×4504
"DICT_4X4_100"1003
"DICT_4X4_250"2502
"DICT_4X4_1000"10002
"DICT_5X5_50"5×5508
"DICT_5X5_100"1007
"DICT_5X5_250"2506
"DICT_5X5_1000"10005
"DICT_6X6_50"6×65013
"DICT_6X6_100"10012
"DICT_6X6_250"25011
"DICT_6X6_1000"10009
"DICT_7X7_50"7×75019
"DICT_7X7_100"25018
"DICT_7X7_250"25017
"DICT_7X7_1000"100014

数据类型: char | string | cell

标记 ID,指定为由正整数组成的 N-元素向量。每个元素必须为非负数,且小于族大小,即该标记族中可用的标记总数。例如,"DICT_7X7_250" 的族规模为 250。

每个标记的大小(以像素为单位),指定为一个正整数。该值用于设置正方形 ArUco 标记单边的长度。标记大小必须足够大,以容纳指定标记族所需的位数。例如,对于 "DICT_6X6_100" 族别的标记,无法生成 5×5 像素的图像,因为该族别要求图像大小为 6×6 像素。如需了解更多信息,请参阅 markerFamily 输入说明中的表格。

输出参量

全部折叠

标记图像,以 M×M×N 数组的形式返回。

数据类型: uint8

版本历史记录

在 R2024a 中推出

另请参阅

函数