Определить размеры шахматной доски в пикселях

Подобно калибровке 2D-изображения одной камеры с шахматной доской, я хочу определить ширину/высоту шахматной доски (или одного квадрата) в пикселях.

У меня есть камера, направленная вертикально на землю, и я уверен, что она находится на одном уровне с поверхностью внизу. Я использую камеру для определения перевода между последовательными кадрами (успешно достигнуто с помощью фазовой корреляции Фурье), в настоящий момент мой результат возвращает перевод в пикселях, однако я хотел бы использовать методы, аналогичные калибровке, когда я перемещаю камеру по шахматная доска, плоская на земле, для автоматического определения размера шахматной доски в пикселях относительно высоты и ширины моего изображения.

Зная размер шахматной доски в миллиметрах, я могу затем преобразовать единицу пикселя в реальную единицу измерения в миллиметрах, т. е. 1 пиксель будет представлять расстояние, пропорциональное высоте камеры над землей. Это позволит мне преобразовать перевод в пикселях в перевод в миллиметрах, перекалибруя каждый раз, когда я изменяю высоту камеры.

Каким будет рекомендуемый способ достижения этого? Конечно, это должно быть проще, чем 2D-калибровка одной камеры.


person Josh    schedule 16.09.2012    source источник


Ответы (2)


OpenCV может дать вам положение углов шахматной доски с помощью cv::findChessboardCorners().

Я не уверен, повлияют ли искажения перспективы на ваши расчеты, но если шахматная доска идеально выровнена под камерой, это должно сработать.

person Blender    schedule 16.09.2012
comment
Ах, спасибо, я попробую. Выходной массив углов, это расположение пикселей (x, y)? внешнего края шахматной доски, по сути, найдя четыре угла? - person Josh; 16.09.2012
comment
Сработало отлично, используйте координаты углов шахматной доски, чтобы определить расстояние в пикселях между каждым углом. Поэтому, зная расстояние между углами в миллиметрах, можно преобразовать перевод, который я измеряю в пикселях, в реальный перевод в миллиметрах. - person Josh; 18.09.2012
comment
Также выполняется проверка, чтобы убедиться, что расстояние в пикселях между каждым углом относительно равно, чтобы убедиться, что шахматная доска идеально выровнена с камерой для калибровки. - person Josh; 18.09.2012
comment
OpenCV довольно крут. Существует также простая оболочка Python для OpenCV, которая значительно упрощает весь API: simplecv.org/docs/SimpleCV.html#i/SimpleCV.ImageClass.Image/ - person Blender; 18.09.2012

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

«В какой-то момент он переключится с ярких на темные пиксели, и это должно произойти (не могу вспомнить количество столбцов на шахматной доске) несколько раз». должен быть выполнимый алгоритм.

person Gung Foo    schedule 16.09.2012