2013-05-01 2 views
3

Я разрабатываю простой сканер «лазерной линии» с использованием C++ и OpenCV. До сих пор я мог обнаружить центр лазерной линии с точностью до 1 пикселя, поэтому у меня есть начальная точка для возможной функции/алгоритма подпикселя. (ширина линии лазера составляет около 15-20 пикселей)Обнаружение центра лазерной линии с субпиксельной точностью

Теперь я заинтересован в уточнении этой подпиксельной точности. Я знаю, что в OpenCV есть некоторые функции обнаружения субпикселей, но, насколько я знаю, они предназначены только для обнаружения углов .

Если у кого-то есть предложения, я бы хотел их услышать.

Дополнительная информация;

  • Система: QT Framework, C++, библиотека OpenCV

  • камеры; Монохромный (без цвета), с красным фильтром

  • Разрешение изображения; 2560 x 1920

  • Примечание: Только 1 изображение будет проанализировано для лазерной линии.

+0

Что ограничивает точность одного пикселя? – juanchopanza

+0

Я хочу вывести серию (real world) coördinates, которая описывает сканирование лазерной линии. В конечном итоге он будет использоваться для целей измерения. Чтобы гарантировать максимальную точность, мне нужно определить центр лазерной линии с точностью до субпикселей. – phreak

+0

Я понимаю это. В чем непонятно, в чем проблема. – juanchopanza

ответ

6

Есть два основных метода, которые я использовал с хорошими результатами:

  • Easy: на один кадр, порог и найти область, содержащее изображение лазерной полоски, то приспособит параболы к интенсивности сырых пикселей в небольшом интервале (5-7 пикселей, в зависимости от того, насколько хорошо сфокусированы ваши) вокруг максимума интенсивности в каждом ряду изображений. Ваша процедура подстановки должна иметь робастификатор, поскольку выбросы, вероятно, будут, например, вблизи области сцены со значительным зеркальным отражением.

  • Более жесткий, но более точный, если частота кадров вашей камеры достаточно высока (или пучок движется достаточно медленно): Curless's spacetime analysis.

Поиск «подпиксельного лазерного фитинга» возвращает несколько более свежих результатов.

С практической стороны обратите особое внимание на насыщенность: время экспозиции (или апертура объектива) должно гарантировать, что ваш датчик не будет насыщаться, даже когда луч попадает на самые легкие участки поверхности объекта. Поиск пика в области, где сигнал был обрезан насыщением, явно бессмыслен.

Фокусировка (и глубина резкости) - это другие области, на которые нужно обратить внимание - размытое изображение луча на поверхности объекта даст смещенный пик.

+0

Спасибо, я посмотрю! В настоящее время экспериментирует с функцией гауссовской подгонки для определения центроида лазерной линии на субпиксельном уровне. Меня все еще интересуют предложения tho;) .. – phreak

+1

Вы должны перенести/принять ответ, если он соответствует вашему запросу. благодаря –

Смежные вопросы