openCV: можно ли синхронизировать cvQueryFrame с проектором? - PullRequest
1 голос
/ 30 апреля 2011

Когда я снимаю изображения с камеры проецируемых изображений с помощью openCV через 'cvQueryFrame', у меня часто возникает непреднамеренный артефакт: линия сканирования проектора.То есть, поскольку я не могу точно определить время, когда cvQueryFrame захватывает изображение, полученное изображение не соответствует постоянному обновлению 30 Гц проектора.Результатом является то, что типичная горизонтальная полоса, знакомая тем, кто включил видеокамеру на экран телевизора.

Если не прибегать к аппаратной синхронизации, у кого-нибудь был какой-то успех с приближенным (например, «достаточно хорошим») неформальнымСинхронизация проектор-камера в openCV?

Ниже приведены два решения, которые я рассматриваю, но надеялся, что это достаточно распространенная проблема, которая может существовать изящное решение.Мои менее изящные мысли:

  • Добавьте ползунок в cvWindow, отображающий видео для пользователя, чтобы управлять смещением синхронизации от 0 до 1/30 секунды, затем установитетаймер очереди в этом интервале.Всякий раз, когда нужен кадр, вместо непосредственного вызова cvQueryFrame, я бы запросил обратный вызов для выполнения cvQueryFrame при следующем срабатывании таймера.Таким образом, теоретически пользователь сможет использовать ползунок для уменьшения артефакта линии сканирования, при условии, что разрешение таймера будет достаточным.

  • После получения кадра через 'cvQueryFrame',исследовать кадр контрольной горизонтальной полосы путем поиска дельты значений HSV для вертикального столбца пикселей.Естественно, это будет работать только тогда, когда фотографируемый объект содержит проверочную полосу однородного цвета при плавно меняющемся освещении.

Я использовал несколько камер с OpenCV, последняя из которых - Canon SLR (7D).

Ответы [ 2 ]

2 голосов
/ 22 октября 2011

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

В любом случае синхронизация вызова cvQueryFrame не влияет на момент захвата изображения.

Итак, как вы и предполагали, аппаратная синхронизация - это действительно единственный маршрут, если у вас неткамера, как точечная серая камера, которая дает вам явное программное управление триггером запуска интеграции кадров.

1 голос
/ 01 мая 2011

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

...