Калибровка OpenCV камеры обрезки изображения (подматрица ROI)

У меня есть небольшая проблема при работе с неискаженной функцией OpenCV. Я работаю с камерой, используя широкоугольный объектив. Допустим, мой доступ к нему проблематичен, так как он уже установлен. Проблема в основном сводится к следующему:

Я успешно измерил все параметры объектива и могу без проблем искажать полнокадровое изображение, проблема в том, что я на самом деле работаю в режиме линейного сканирования. Мы используем только вырез в середине датчика, около 100 пикселей в высоту. Изображения для иллюстрации:

Используемая часть датчика

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

Я понимаю, как можно изменить матрицу камеры, чтобы компенсировать масштаб изображения, если бы я использовал полнокадровый снимок только с более низким разрешением, но вопрос заключается в следующем: могу ли я каким-либо образом компенсировать обрезанный сдвиг для достижения правильного преобразования?

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

Спасибо за любые идеи!

Ура,
Январь

2

Решение

Если вы обрезаете изображение, то главная точка будет иметь разные координаты. Например, если ваша исходная главная точка была в (30,40), и вы обрезали 10 пикселей вокруг сторон, то ваша новая главная точка будет в (20,30), потому что пиксель (20,30) в обрезанное изображение совпадает с пикселем (30,40) в исходном изображении.

Вам необходимо соответствующим образом настроить значения cx и cy в матрице камеры.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector