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