estimateCheckerboardCorners3d

Оцените координаты мировой системы координат шахматных угловых точек на изображении

Описание

imageCorners3d = estimateCheckerboardCorners3d(I,cameraIntrinsic,checkerSize) оценивает координаты мировой системы координат угловых точек шахматной доски в изображении, I, при помощи внутренних параметров камеры cameraIntrinsic и размер шахматных квадратов checkerSize.

пример

[imageCorners3d,boardDimensions] = estimateCheckerboardCorners3d(I,cameraIntrinsic,checkerSize) дополнительно возвращает шкафные размерности boardDimensions.

[imageCorners3d,boardDimensions,imagesUsed] = estimateCheckerboardCorners3d(imageFileNames,cameraIntrinsic,checkerSize) оценивает координаты мировой системы координат угловых точек шахматной доски из набора файлов изображений, imageFileNames. Функция возвращает логический вектор, который указывает, в каких изображениях она обнаружила шахматную доску imagesUsed, в дополнение к выходным аргументам из предыдущих синтаксисов.

[___] = estimateCheckerboardCorners3d(imageArray,cameraIntrinsic,checkerSize) оценивает координаты мировой системы координат угловых точек шахматной доски из массива изображений, imageArray.

[___] = estimateCheckerboardCorners3d(___,Name,Value) задает опции, использующие один или несколько аргументы пары "имя-значение" в дополнение к любой комбинации аргументов из предыдущих синтаксисов. Для примера, 'MinCornerMetric',0.2 устанавливает порог для угловой метрики шахматной доски равным 0,2.

Примеры

свернуть все

Обнаружение шахматной доски в изображении с помощью estimateCheckerboardCorners3d функция и оценка мировых координат системы координат шахматных углов.

Считайте изображение в рабочую область.

Image = imread('CheckerboardImage.png');

Загрузите параметры камеры в рабочую область.

intrinsic = load('calibration.mat');

Установите размер шахматных квадратов в миллиметрах.

squareSize = 200;

Оцените шахматные углы.

boardCorners = estimateCheckerboardCorners3d(Image, ...
    intrinsic.cameraParams,squareSize)
boardCorners = 4×3

    1.2840   -0.5216    8.8913
    2.8614    0.5774    8.3401
    1.8230    2.0470    8.2984
    0.2455    0.9480    8.8496

Постройте график углов на вход изображении.

imPts = projectLidarPointsOnImage(boardCorners,intrinsic.cameraParams,rigid3d());
J = undistortImage(Image,intrinsic.cameraParams);
imshow(J)
hold on
plot(imPts(:,1),imPts(:,2),'.r','MarkerSize',30)
title('Detected Checkerboard Corners')
hold off

Figure contains an axes. The axes with title Detected Checkerboard Corners contains 2 objects of type image, line.

Входные параметры

свернуть все

Изображение для обнаружения, заданное как H -by- W -by- C массив, где:

  • H - Высота изображения в пикселях

  • W - Ширина изображения в пикселях

  • C - Количество цветовых каналов

Типы данных: single | double | int16 | uint8 | uint16

Имена файлов изображений, заданные как вектор символов или массив ячеек векторов символов Если задано более одного имени файла, необходимо использовать массив ячеек с векторами символов.

Типы данных: char | cell

Набор изображений, заданный как H -by- W -by- C -by- N массив, где:

  • H - Высота самого высокого изображения в массиве

  • W - Ширина самого широкого изображения в массиве

  • C - Количество цветовых каналов

  • N - Количество изображений в массиве

Типы данных: single | double | int16 | uint8 | uint16

Внутренние параметры камеры, заданные как cameraIntrinsics объект.

Размер шахматного квадрата, заданный как скаляр в миллиметрах. Это значение задает длину каждой стороны шахматного квадрата.

Типы данных: single | double

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'MinCornerMetric',0.2 устанавливает порог для угловой метрики шахматной доски равным 0,2.

Заполнение вдоль каждой стороны шахматного щита, заданное как разделенная разделенными запятой парами, состоящая из 'Padding' и четырехэлементный вектор-строка неотрицательных значений в миллиметрах.

Рисунок показывает, как элементы вектора заполняют стороны.

Шахматная подложка

Order of padding vector elements on the checkerboard

Типы данных: single | double

Порог для шахматной угловой метрики, заданное как разделенная разделенными запятой парами, состоящая из 'MinCornerMetric' и неотрицательный скаляр. Использование более высокого порогового значения может уменьшить количество ложных обнаружений в шумном или сильно текстурированном изображении.

Типы данных: single | double

Отобразите прогресс функции в строке прогресса, заданной как разделенная разделенными запятой парами, состоящая из 'ShowProgressBar' и логический false или true.

Типы данных: logical

Выходные аргументы

свернуть все

Предполагаемое расположение шахматных углов, возвращаемое как матрица 4 на 3 или массив 4 на 3 P. Для одного изображения функция возвращает 3-D координаты лабораторной системы координат четырех шахматных углов. Каждая строка представляет x -, y -, z - оси угловой точки в метрах. Для нескольких изображений координаты возвращаются как массив 4 на 3 P, где P - количество изображений, в которых была обнаружена шахматная доска.

Шахматные размерности, возвращенная как двухэлементный вектор-строка. Элементы представляют ширину и длину шахматной доски соответственно в миллиметрах. Размерности шахматной доски выражены в терминах количества квадратов. Функция вычисляет размерности шахматной доски, умножая размер шахматных квадратов, checkerSize, по количеству обнаруженных квадратов вдоль стороны.

Флаг обнаружения шаблона, возвращенный как N -by-1 логический массив. N - количество изображений в первом входном параметре. Значение 1 (true) указывает, что функция обнаружила шаблон шахматной платы в соответствующем изображении. Значение 0 (false) указывает, что функция не обнаружила шаблон шахматной платы в соответствующем изображении.

Введенный в R2020b