detectCheckerboardPoints

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

Описание

пример

[imagePoints,boardSize] = detectCheckerboardPoints(I) обнаруживает черно-белую шахматную доску размера, больше, чем квадраты 4 на 4 в 2D истинном цвете или полутоновом изображении. Функция возвращает обнаруженные точки и размерности шахматной доски.

[imagePoints,boardSize,imagesUsed] = detectCheckerboardPoints(imageFileNames) обнаруживает шаблон шахматной доски в наборе входных изображений, обеспеченных как массив имен файлов.

[imagePoints,boardSize,imagesUsed] = detectCheckerboardPoints(images) обнаруживает шаблон шахматной доски в наборе входных изображений, обеспеченных как массив изображений полутонового или истинного цвета.

[imagePoints,boardSize,pairsUsed] = detectCheckerboardPoints(imageFileNames1,imageFileNames2) обнаруживает шаблон шахматной доски в стереопарах изображений, обеспеченных как массивы ячеек имен файлов.

[imagePoints,boardSize,pairsUsed] = detectCheckerboardPoints(images1,images2) обнаруживает шаблон шахматной доски в стереопарах изображений, обеспеченных как массивы изображений полутонового или истинного цвета.

[imagePoints,boardSize,pairsUsed] = detectCheckerboardPoints(___,'MinCornerMetric',0.15) устанавливает угловой метрический порог, заданный как неотрицательный скаляр. Когда изображение будет шумным или очень текстурированным, увеличьте это значение, чтобы сократить количество ложных углов.

Примеры

свернуть все

Создайте массив ячеек имен файлов калибровочных изображений.

for i = 1:5
  imageFileName = sprintf('image%d.tif', i);
  imageFileNames{i} = fullfile(matlabroot,'toolbox','vision',...
       'visiondata','calibration','webcam',imageFileName);
end

Обнаружьте калибровочный шаблон в изображениях.

[imagePoints,boardSize,imagesUsed] = detectCheckerboardPoints(imageFileNames);

Отобразите обнаруженные точки.

imageFileNames = imageFileNames(imagesUsed);
for i = 1:numel(imageFileNames)
  I = imread(imageFileNames{i});
  subplot(2, 2, i);
  imshow(I);
  hold on;
  plot(imagePoints(:,1,i),imagePoints(:,2,i),'ro');
end

Читайте в стереоизображениях.

numImages = 4;
images1 = cell(1, numImages);
images2 = cell(1, numImages);
for i = 1:numImages
    images1{i} = fullfile(matlabroot,'toolbox','vision',...
        'visiondata','calibration','stereo','left',sprintf('left%02d.png',i));
    images2{i} = fullfile(matlabroot,'toolbox','vision',...
        'visiondata','calibration','stereo','right',sprintf('right%02d.png',i));
end

Обнаружьте шахматные доски в изображениях.

[imagePoints,boardSize,pairsUsed] = ...
    detectCheckerboardPoints(images1,images2);

Отобразите точки от images1.

images1 = images1(pairsUsed);
figure;
for i = 1:numel(images1)
      I = imread(images1{i});
      subplot(2,2,i);
      imshow(I); 
      hold on; 
      plot(imagePoints(:,1,i,1),imagePoints(:,2,i,1),'ro');
end 
annotation('textbox',[0 0.9 1 0.1],'String','Camera 1',...
    'EdgeColor','none','HorizontalAlignment','center')

Отобразите точки от images2.

images2 = images2(pairsUsed);
figure;
for i = 1:numel(images2)
      I = imread(images2{i});
      subplot(2, 2, i);
      imshow(I);
      hold on; 
      plot(imagePoints(:,1,i,2),imagePoints(:,2,i,2),'ro');
end 
annotation('textbox',[0 0.9 1 0.1],'String','Camera 2',...
    'EdgeColor','none','HorizontalAlignment','center')

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

свернуть все

Введите изображение, заданное или в M-by-N-by-3 истинный цвет или в M-by-N 2D шкала полутонов. Входное изображение должно быть действительным и неразреженным. Функция может обнаружить шахматные доски с минимальным размером квадратов 4 на 4.

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

Имена файла образа, заданные как N - массив ячеек элемента имен файлов N.

Имена файлов для камеры 1 изображение, заданное как N - массив ячеек элемента имен файлов N. Изображения, содержавшиеся в этом массиве, должны быть в том же порядке как изображения, содержавшиеся в imageFileNames2, формирование стереопар.

Имена файлов для камеры 2 изображения, заданные как N - массив ячеек элемента имен файлов N. Изображения, содержавшиеся в этом массиве, должны быть в том же порядке как изображения, содержавшиеся в imageFileNames1, формирование стереопар.

Изображения, заданные как H-by-W-by-B-by-F массив, содержащий набор изображений полутонового или истинного цвета. Входные размерности:

H представляет высоту изображения.
W представляет ширину изображения.
B представляет цветовой канал. Значение 1 указывает на полутоновое изображение и значение 3 указывает на изображение истинного цвета.
F представляет количество фреймов изображения.

Изображения, заданные как H-by-W-by-B-by-F массив, содержащий набор изображений полутонового или истинного цвета. Входные размерности:

H представляет высоту изображения.
W представляет ширину изображения.
B представляет цветовой канал. Значение 1 указывает на полутоновое изображение и значение 3 указывает на изображение истинного цвета.
F представляет количество фреймов изображения.

Изображения, заданные как H-by-W-by-B-by-F массив, содержащий набор изображений полутонового или истинного цвета. Входные размерности:

H представляет высоту изображения.
W представляет ширину изображения.
B представляет цветовой канал. Значение 1 указывает на полутоновое изображение и значение 3 указывает на изображение истинного цвета.
F представляет количество фреймов изображения.

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

свернуть все

Обнаруженные угловые координаты шахматной доски, возвращенные как M-by-2 матрица для одного изображения. Для повторных изображений точки возвращены как M-by-2-by-number of images массив, и для стереопар изображений, функция возвращает точки как M-by-2-by-number of pairs-by-number of cameras массив.

Для стереопар, imagePoints(::: 1) точки от первого набора изображений и imagePoints(::: 2) точки от второго набора изображений. Выход содержит количество M [x y] координаты. Каждая координата представляет точку, где прямые углы обнаруживаются на шахматной доске. Число точек, которое возвращает функция, зависит от значения boardSize, который указывает на количество обнаруженных квадратов. Функция обнаруживает точки с субпиксельной точностью.

Функция вычисляет число точек, M, можно следующим образом:

M = prod(boardSize-1).

Если шахматная доска не может быть обнаружена:
imagePoints = []
boardSize= [0,0]

Когда вы задаете imageFileNames введите, функция может возвратить imagePoints как M-by-2-by-N массив. В этом массиве N представляет количество изображений, в которых обнаруживается шахматная доска.

Размерности шахматной доски, возвращенные как с 2 элементами [height, width] вектор. Размерности шахматной доски выражаются в терминах количества квадратов.

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

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

Ссылки

[1] Гайгер, A., Ф. Моосманн, O. Автомобиль и Б. Шустер. "Автоматическая Калибровка Датчика Камеры и Области значений с помощью Одного Выстрела", Международная конференция по вопросам Робототехники и Автоматизации (ICRA), Св. Павла, США, май 2012.

Расширенные возможности

Введенный в R2014a