помогите с редактированием изображения

Простейшие вопросы в области инженерной разработки
Аватара пользователя
dadreamer

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

Re: помогите с редактированием изображения

Сообщение dadreamer »

Выдалось свободное время, ещё немного поэкспериментировал. Выяснилось, что ffmpeg может выполнять преобразование YUV422 <-> RGB, да и вообще там куча форматов поддерживается. Взял первую попавшуюся в гугле картинку (png), перевёл в yuv такой командой:

Код: Выделить всё

.\ffmpeg.exe -i .\cat.png -f rawvideo -pix_fmt yuv422p output.yuv
Дальше сконвертировал назад в RGB:

Код: Выделить всё

.\ffmpeg.exe -pixel_format yuv422p -video_size 750x750 -framerate 25 -i output.yuv newcat.png
Всё перевелось нормально, за тем исключением, что похерился альфа-канал. Вот, для сравнения оригинал и результат.
оригинал
оригинал
yuv422 -&gt; png
yuv422 -> png
Не знаю, сохраняется ли альфа в бинарник, выяснять стало лень. Надо чем-то верифицировать этот yuv, порылся в сети, нашёл yuvplayer, поддерживает YUV422 и можно выставить кастомное разрешение. В общем, тоже читает без проблем.
2020-11-14_22-20-46.jpg
После этого решил получить то же самое в :labview: . Попалась на глаза тема FFMPEG scripting in LabVIEW (.NET) В архиве FFMPEG Examples v1.1.zip есть уже готовые SubVI для YUV420. Разница между форматами не слишком большая, это можно видеть в yuvplayer, переключая разные форматы. В общем, получилось вот это:
2020-11-14_22-31-24.jpg
2020-11-14_22-32-22.jpg
Слева я вывел "сырой" массив U16, справа - массив, преобразованный в RGB. В плеере получается то же самое, если сменить цветовую схему на 420. В общем, вывод такой, что даже в "сыром" yuv-файле присутствуют все пиксельные данные в линейном виде, т.е. преобразования нужны только для восстановления цвета. Потому даже если вы получаете 8-битную картинку 320 на 256, в ней не должно быть искажений или провалов палитры, как при пороговом преобразовании. Если такое наблюдается, значит либо где-то какая-то пост-обработка всё же выполняется, либо что-то не так с железом (неподходящие заводские настройки или аппаратный дефект). Я бы ещё проверил CL-кабель, если есть осциллограф, то можно даже уровни сигнала замерять. У меня подобной камеры в хозяйстве нет, но есть на работе баслеровские GigE-камеры. Если будет время, проверю, в каких форматах они отдают и какая картинка приходит.

upd: посмотрел, доступны форматы Mono 8, Mono 16, Mono 12, YUV 422 Packed и YUV 422 (YUYV) Packed.
2020-11-16_12-14-19.jpg
В примере Grab из пакета Vision Acquisition использован IMAQdx Grab VI, который автоматом перегоняет изображение в RGB (U32) (ну, или в то, что было выставлено в NI-MAX перед этим). Можно взять "сырой" буфер с помощью IMAQdx Get Image Data VI. Тогда приходит массив U8 размером 2 * длина * ширина изображения. Переводим в U16, затем преобразуем 1D в 2D. У меня камера ч/б, потому нет смысла даже в RGB перегонять.
2020-11-16_12-22-14.jpg
2020-11-16_12-26-09.jpg
AN-G
beginner
beginner
Сообщения: 43
Зарегистрирован: 22 мар 2014, 23:22
Версия LabVIEW: 2011
Благодарил (а): 1 раз

Re: помогите с редактированием изображения

Сообщение AN-G »

Спасибо за ответ. Буду пробовать в понедельник с реализацией данного проекта.Буду надеяться, что с ПЛИС без проблем все получится.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Для чайников»