Отражение по горизонтали видеопотока с web камеры

Обсуждение вопросов, связанных с обработкой аудио и видео информации
Ответить
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Отражение по горизонтали видеопотока с web камеры

Сообщение Andrey Petrzhik »

Добрый день!
У меня есть хитрая камера от микроскопа, которая очень крутая, но изображение гонит "отраженное" по горизонтали.
Как это выглядит, видно на приложенном принтскрине. Да, на бумажке должно отображаться "лента".
Есть ли какой-то простой способ в Vision and Motion отразить видеопоток по горизонтали... возможно как-то через ROI можно сделать?
Спасибо большое за помощь, сам нагуглить и сообразить что-то не смог пока...
Вложения
otrazit.png
PLD_cam_logger.vi
(45.04 КБ) 153 скачивания
code.jpg
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Отражение по горизонтали видеопотока с web камеры

Сообщение dadreamer »

IMAQ Symmetry VI w/ Type of Symmetry = Vertical
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: Отражение по горизонтали видеопотока с web камеры

Сообщение Andrey Petrzhik »

Круто! Только у меня Labview 2012 + IMAQ 2012... и там вроде как такого нет.
Но я понял в какую сторону смотреть, спасибо!
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Отражение по горизонтали видеопотока с web камеры

Сообщение dadreamer »

Andrey Petrzhik писал(а):Только у меня Labview 2012 + IMAQ 2012... и там вроде как такого нет.
Функция довольно старая, ещё в 2009-м Вижене была. Наверно, надо IMAQdx поставить, тогда появится. Ну, или можно картинку перегнать в массив, развернуть массив построчно и перегнать его обратно в картинку.
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: Отражение по горизонтали видеопотока с web камеры

Сообщение Andrey Petrzhik »

Странно, но такой функции у меня нет. Установлена Labview 12 и "NI Vision Acquisition Software August 2012", содержащий Ni IMAQdx 4.0.

Но фиг с ним. Перегоняю картинку в массив, потом кручу массив как вот тут: http://www.labview.ru/forum/viewtopic.php?p=16486 , и его опять в картинку. Но не работает - вылетает ошибка "Invalid image type". Что же не так?..
Вложения
flip_horiz.jpg
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Отражение по горизонтали видеопотока с web камеры

Сообщение dadreamer »

Andrey Petrzhik писал(а):Но не работает - вылетает ошибка "Invalid image type". Что же не так?..
Если с чёрно-белой картинкой работаете, то брать надо выход Grayscale (U8), а не Float. Если же хотите с цветной RGB (U32) работать, то поменять надо формат у IMAQ Create, и далее пользовать ColorImageToArray / ArrayToColorImage. Ещё одну странность заметил - на IMAQ Create подаётся ссылка, а не строка, не знаю, насколько это будет критично в дальнейшем, но чтобы избежать багов, лучше присвоить картинке собственное уникальное имя.

Далее, операция разворота 2D-массива в принципе уже реализована. В пакете OpenG есть :vi: Reverse 2D Array, который выполняет это:
2018-07-16_22-53-56.jpg
2018-07-16_22-54-12.jpg
Можно воспользоваться кодом (вариант "By Columns") или поставить тулкит.
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: Отражение по горизонтали видеопотока с web камеры

Сообщение Andrey Petrzhik »

Ура, получилось! Ничего дополнительно не устанавливал. Кому интересно, файлик приложен. Вертит/отражает видеопоток с usb камер.
Вложения
PLD_cam_logger.vi
(55.48 КБ) 158 скачиваний
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Отражение по горизонтали видеопотока с web камеры

Сообщение dadreamer »

Рад, что получилось.

А теперь - классика.
Caveats and Recommendations when Using Events in LabVIEW
Цикл While внутрь Эвент структуры помещать крайне не рекомендуется. Но! Следует Эвент структуру поместить в цикл While. А получение данных с камеры вынести вообще в отдельный цикл. Дело в том, что сейчас при текущей архитектуре событие нажатия кнопки Start обрабатывается однократно, а все последующие нажатия не могут быть обработаны, т.к. Эвент структура уже отработала и некому её перезапустить. В цикле While она бы крутилась постоянно и всегда могла бы обработать нажатия кнопок и прочее. Кроме того, запуская внутри Эвента цикл, мы не даём структуре возможность обработать прочие события, если они происходят, т.к. нужно ждать, пока отработает внутренний цикл. Стандартный подход - это выделять на все UI-события отдельный цикл с Эвент структурой, а всё остальное (работа с железом, логика, мат. операции) выполнять в каких-то других циклах. Посмотрите, например, шаблон State Machine / Автомат состояний, шаблон Producer-Consumer (Производитель-Потребитель) и т.д.
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: Отражение по горизонтали видеопотока с web камеры

Сообщение Andrey Petrzhik »

1.jpg
Всем привет. Появилась минутка, переделал предыдущий вариант. Вроде покрасивее стало... Поругайте кому не лень что не так пожалуйста. Завтра буду тестить на производстве, где есть одна вредная нестандартная камера, которая отваливалась работая с предыдущей программкой, обычно раз в 3-4 часа...
Вложения
2.jpg
3.jpg
4.jpg
PLD_camera.vi
(64.68 КБ) 149 скачиваний
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: Отражение по горизонтали видеопотока с web камеры

Сообщение Andrey Petrzhik »

Отваливается всё равно:( Причём сама-то программка не виснет. Стоп-Старт и всё работает.
Как бы так научиться пинговать меняется/не меняется картинка, и если нет, закрывать/открывать сессию?..
Artem.spb

Activity Автор
professor
professor
Сообщения: 3393
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Отражение по горизонтали видеопотока с web камеры

Сообщение Artem.spb »

Простое "=" массивов не проккатит?
Если каринка реальная, то всё равно небольшой дребезг цветов есть, а полное равенство очень подозрительно
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: Отражение по горизонтали видеопотока с web камеры

Сообщение Andrey Petrzhik »

Артём, в принципе я думал так сделать, но получается что когда темно (нет процесса в снимаемой камере), то картинка как была чёрная, так и есть чёрная. Но наверное можно попробовать... вдруг какая-то разница таки обнаружится...
Artem.spb

Activity Автор
professor
professor
Сообщения: 3393
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Отражение по горизонтали видеопотока с web камеры

Сообщение Artem.spb »

Можно совсем чёрную исключать из проверки.
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5462
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 86 раз

Re: Отражение по горизонтали видеопотока с web камеры

Сообщение IvanLis »

Andrey Petrzhik писал(а):Отваливается всё равно:( Причём сама-то программка не виснет. Стоп-Старт и всё работает.
Как бы так научиться пинговать меняется/не меняется картинка, и если нет, закрывать/открывать сессию?..
Артем правильно говорит, сейчас в основном все алгоритмы адаптивные, может получиться так, что даже если Вы одну и туже картинку прогоните через компрессию/декомпрессию, то результат будет отличаться.

Что касается сравнения кадров между собой....
Можете поиграться: http://www.ni.com/example/30554/en/

Для сравнения картинок можно использовать "интегральную дифференциальную яркость". Т.е. вы сначала вычисляете разницу между кадрами, потом модуль, затем сумму всех значений.
Потом в результате экспериментов получите порог принятия решения, до какого значения считать кадры равными, после которого - различными.
Только если Вы будите работать с RGB, то нужно отдельно каждую компоненту обрабатывать. По этому рекомендую либо взять самую информационную часть R, либо преобразовать предварительно в серое.

Последовательно идущие кадры должны отличаться между собой несильно, по этому рекомендую в буфере хранить например кадр 10 секундной давности. При 25fps это -250.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Работа с графикой и звуком»