exponenta event banner

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

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

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

Представлен в R2020b