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

Обсуждение вопросов, связанных с обработкой аудио и видео информации

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

Postby Andrey Petrzhik on 13 Jul 2018, 20:06

Добрый день!
У меня есть хитрая камера от микроскопа, которая очень крутая, но изображение гонит "отраженное" по горизонтали.
Как это выглядит, видно на приложенном принтскрине. Да, на бумажке должно отображаться "лента".
Есть ли какой-то простой способ в Vision and Motion отразить видеопоток по горизонтали... возможно как-то через ROI можно сделать?
Спасибо большое за помощь, сам нагуглить и сообразить что-то не смог пока...
Attachments
otrazit.png
PLD_cam_logger.vi
(45.04 KiB) Downloaded 18 times
code.jpg
Andrey Petrzhik
beginner
beginner
 
Posts: 45
Joined: 17 Nov 2015, 11:57
LabVIEW Version: 12
Karma: 0

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

Postby dadreamer on 13 Jul 2018, 20:41

IMAQ Symmetry VI w/ Type of Symmetry = Vertical
User avatar
dadreamer
professor
professor
 
Posts: 3150
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 801
I/O VIP vision internet

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

Postby Andrey Petrzhik on 13 Jul 2018, 21:53

Круто! Только у меня Labview 2012 + IMAQ 2012... и там вроде как такого нет.
Но я понял в какую сторону смотреть, спасибо!
Andrey Petrzhik
beginner
beginner
 
Posts: 45
Joined: 17 Nov 2015, 11:57
LabVIEW Version: 12
Karma: 0

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

Postby dadreamer on 13 Jul 2018, 23:00

Andrey Petrzhik wrote:Только у меня Labview 2012 + IMAQ 2012... и там вроде как такого нет.

Функция довольно старая, ещё в 2009-м Вижене была. Наверно, надо IMAQdx поставить, тогда появится. Ну, или можно картинку перегнать в массив, развернуть массив построчно и перегнать его обратно в картинку.
User avatar
dadreamer
professor
professor
 
Posts: 3150
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 801
I/O VIP vision internet

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

Postby Andrey Petrzhik on 16 Jul 2018, 19:46

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

Но фиг с ним. Перегоняю картинку в массив, потом кручу массив как вот тут: http://www.labview.ru/forum/viewtopic.php?p=16486 , и его опять в картинку. Но не работает - вылетает ошибка "Invalid image type". Что же не так?..
Attachments
flip_horiz.jpg
Andrey Petrzhik
beginner
beginner
 
Posts: 45
Joined: 17 Nov 2015, 11:57
LabVIEW Version: 12
Karma: 0

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

Postby dadreamer on 16 Jul 2018, 20:56

Andrey Petrzhik wrote:Но не работает - вылетает ошибка "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") или поставить тулкит.
User avatar
dadreamer
professor
professor
 
Posts: 3150
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 801
I/O VIP vision internet

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

Postby Andrey Petrzhik on 17 Jul 2018, 19:28

Ура, получилось! Ничего дополнительно не устанавливал. Кому интересно, файлик приложен. Вертит/отражает видеопоток с usb камер.
Attachments
PLD_cam_logger.vi
(55.48 KiB) Downloaded 23 times
Andrey Petrzhik
beginner
beginner
 
Posts: 45
Joined: 17 Nov 2015, 11:57
LabVIEW Version: 12
Karma: 0

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

Postby dadreamer on 17 Jul 2018, 19:55

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

А теперь - классика.
Caveats and Recommendations when Using Events in LabVIEW
Цикл While внутрь Эвент структуры помещать крайне не рекомендуется. Но! Следует Эвент структуру поместить в цикл While. А получение данных с камеры вынести вообще в отдельный цикл. Дело в том, что сейчас при текущей архитектуре событие нажатия кнопки Start обрабатывается однократно, а все последующие нажатия не могут быть обработаны, т.к. Эвент структура уже отработала и некому её перезапустить. В цикле While она бы крутилась постоянно и всегда могла бы обработать нажатия кнопок и прочее. Кроме того, запуская внутри Эвента цикл, мы не даём структуре возможность обработать прочие события, если они происходят, т.к. нужно ждать, пока отработает внутренний цикл. Стандартный подход - это выделять на все UI-события отдельный цикл с Эвент структурой, а всё остальное (работа с железом, логика, мат. операции) выполнять в каких-то других циклах. Посмотрите, например, шаблон State Machine / Автомат состояний, шаблон Producer-Consumer (Производитель-Потребитель) и т.д.
User avatar
dadreamer
professor
professor
 
Posts: 3150
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 801
I/O VIP vision internet

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

Postby Andrey Petrzhik on 21 Aug 2018, 14:09

1.jpg
Всем привет. Появилась минутка, переделал предыдущий вариант. Вроде покрасивее стало... Поругайте кому не лень что не так пожалуйста. Завтра буду тестить на производстве, где есть одна вредная нестандартная камера, которая отваливалась работая с предыдущей программкой, обычно раз в 3-4 часа...
Attachments
2.jpg
3.jpg
4.jpg
PLD_camera.vi
(64.68 KiB) Downloaded 19 times
Andrey Petrzhik
beginner
beginner
 
Posts: 45
Joined: 17 Nov 2015, 11:57
LabVIEW Version: 12
Karma: 0

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

Postby Andrey Petrzhik on 23 Aug 2018, 12:56

Отваливается всё равно:( Причём сама-то программка не виснет. Стоп-Старт и всё работает.
Как бы так научиться пинговать меняется/не меняется картинка, и если нет, закрывать/открывать сессию?..
Andrey Petrzhik
beginner
beginner
 
Posts: 45
Joined: 17 Nov 2015, 11:57
LabVIEW Version: 12
Karma: 0

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

Postby Artem.spb on 23 Aug 2018, 14:57

Простое "=" массивов не проккатит?
Если каринка реальная, то всё равно небольшой дребезг цветов есть, а полное равенство очень подозрительно
Artem.spb
expert
expert
 
Posts: 1420
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 246
CLD hardware I/O VIP freelance

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

Postby Andrey Petrzhik on 23 Aug 2018, 15:26

Артём, в принципе я думал так сделать, но получается что когда темно (нет процесса в снимаемой камере), то картинка как была чёрная, так и есть чёрная. Но наверное можно попробовать... вдруг какая-то разница таки обнаружится...
Andrey Petrzhik
beginner
beginner
 
Posts: 45
Joined: 17 Nov 2015, 11:57
LabVIEW Version: 12
Karma: 0

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

Postby Artem.spb on 23 Aug 2018, 15:30

Можно совсем чёрную исключать из проверки.
Artem.spb
expert
expert
 
Posts: 1420
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 246
CLD hardware I/O VIP freelance

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

Postby IvanLis on 24 Aug 2018, 12:14

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


Артем правильно говорит, сейчас в основном все алгоритмы адаптивные, может получиться так, что даже если Вы одну и туже картинку прогоните через компрессию/декомпрессию, то результат будет отличаться.

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

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

Последовательно идущие кадры должны отличаться между собой несильно, по этому рекомендую в буфере хранить например кадр 10 секундной давности. При 25fps это -250.
User avatar
IvanLis
professor
professor
 
Posts: 4636
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 728
hardware VIP bloggers teachers


Return to Работа с графикой и звуком

Who is online

Users browsing this forum: No registered users and 2 guests

cron