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 object. The axes object 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 имя аргумента и 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.

Типы данных: логический

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

свернуть все

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

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

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

Ограничения

  • Частичное обнаружение шахматной доски не поддерживается.

Введенный в R2020b