Как с помощью вэбки считать значение с LCD?

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

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

Re: Как с помощью вэбки считать значение с LCD?

Сообщение dadreamer »

bee
Не совсем разобрался в вашей программе (плюс ещё Vision на домашнем компе только на LV 2011), но я бы для начала нашёл крайний левый и крайний правый фронты (X1 и X2), считая условно что на данный момент шумов и искажений нет. Это можно сделать простым перебором пикселей в конкретной строке, сравнивая их с порогом-константой. Если нашли превышение, то запомнили эту координату.
2015-02-18_22-01-09.jpg
Аналогично можно найти верхний и нижний фронты (Y1 и Y2), и по полученным координатам построить ROI. Если получится и будет более-менее работать, можно будет ввести дополнительные проверки и фильтры, а потом испытать на реальной картинке.
А можно вообще сжать всю картинку до одной строки, усреднив интенсивность пикселей в каждом столбце, и по такой усредненной строке найти фронты X1 и X2.

Сейчас ещё подумал, можно, наверное, использовать IMAQ Particle Analysis. Сначала выполнить фильтрацию и бинаризацию изображения, а потом загнать в этот :vi: . Он может вернуть координаты прямоугольника, ограничивающего частицы на изображении. Так как цифры у вас являются такими частицами, то получим их координаты и можно будет использовать их как несколько ROI (это к третьему вопросу относится как раз).
bee
junior
junior
Сообщения: 51
Зарегистрирован: 12 июн 2013, 09:04
Версия LabVIEW: 2014
Контактная информация:

Re: Как с помощью вэбки считать значение с LCD?

Сообщение bee »

dadreamer спасибо за Ваше участие.
По Вашему совету решил начать с тестовой картинки и перебора пикселей, при этом координаты для обработки я беру с прямоугольного РОИ.
Тут все получилось - рисует профиль линии по центру указанного РОИ и исследует его на яркость. Затем выделяем левую и правую сторону региона где были перепады квадратной рамкой (вложение 1).
Т.к. у символов не всегда крайние точки для РОИ будут вдоль центральной линии, решил организовать сканирование(перемещение линии по оси 0Y и построение массива профиля яркости) в пределах выделенного РОИ.
Вызывает затруднение построение двумерного массива по результатам сравнения полученной яркости с пороговым значением. Если выбрать регион как на вложении 2 верхнюю часть, где еще не началась прямая почему-то не заносит в результирующий двумерный массив.
Вложения
1.jpg
2.jpg
Image_Line_2.vi
(58.54 КБ) 188 скачиваний
Аватара пользователя
dadreamer

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

Re: Как с помощью вэбки считать значение с LCD?

Сообщение dadreamer »

То ли вы не ту версию программы залилил, то ли я что-то сделал не так. У меня не получается такого же overlay как у вас, вот что рисует (картинку вашу взял):
2015-02-19_22-15-46.jpg
Да и я так подумал, слишком сложно получается с этим перебором. Это аналогично поиску границ объекта, что есть совсем непростая задача и решается множеством способов, в зависимости, в т.ч., и от свойств изображения (качество, шумы, пороги, резкость и прочее). Я решил попробовать сделать распознавание через IMAQ Particle Analysis. Естественно, требуется бинарное изображение для работы. А кроме того, пришлось в Vision Assistant'е "обучить" программу распознанию, т.е. создать шаблон с тестовой последовательностью символов. Например, вот:
1234567890.png
1234567890.png (2.98 КБ) 5991 просмотр
Не буду расписывать, как это делается, там всё интуитивно понятно. На выходе получился файл charset.abc:
charset.rar
(7.47 КБ) 207 скачиваний
Далее, я сделал тестовую картинку из этих цифр банальным копи-пастом:
Test.png
Test.png (5.44 КБ) 5991 просмотр
(естественно, на реальных изображениях будет множество лишнего, такого как точки, размытости, неровности, искажения символов, наклон, смещение и т.д.)
В :labview: берём данные из отчёта IMAQ Particle Analysis и строим ROI для каждого объекта по координатам из этого отчёта. Полученный ROI подаём на IMAQ OCR Read Text 4. Попутно выводим оверлеем ограничивающий прямоугольник и собственно сам текст, который был распознан по нашему ROI. Для тестовой последовательности все цифры были распознаны успешно.
2015-02-19_22-28-51.jpg
И вот сам :vi: :
visn.vi
lv2011
(46.2 КБ) 235 скачиваний
Кстати, не сразу у меня получилось это распознание. Долго не мог понять, почему на выходе получаю совсем не те символы, что на картинке. Хотя в Ассистанте распознаётся верно. Потом наконец дошло, что IMAQ Particle Analysis выдаёт неотсортированный массив-отчёт, то есть, там объекты хоть как могут размещаться. Поэтому стоит учесть это и сделать сортировку по крайнему левому X (Left), например.
bee
junior
junior
Сообщения: 51
Зарегистрирован: 12 июн 2013, 09:04
Версия LabVIEW: 2014
Контактная информация:

Re: Как с помощью вэбки считать значение с LCD?

Сообщение bee »

По поводу версии выложенной мной программы - все так и должно быть тут РОИ заполняется линией сканирования попиксельно сверху вниз.
К сожалению выложенный вами ВП в ЛВ2012 не находит несколько инструментов, используя имеющиеся удалось получить похожую картину выделения символов.
Не совсем понял по поводу сортировки выходного массива IMAQ Particle Analysis, что с ней, что без нее распознание не совсем корректное, хотя аналогично в ассистента все распознает.
В любом случае, dadreamer, спасибо, что задали направление для дальнейшей разработки :super:
Вложения
1.jpg
Аватара пользователя
dadreamer

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

Re: Как с помощью вэбки считать значение с LCD?

Сообщение dadreamer »

bee писал(а):распознание не совсем корректное
Вы из ассистента скопируйте в :labview: также кластер с параметрами, идущий на IVA OCR - Set Parameters 2.vi. Там есть такие важные параметры, как игнор символов, лежащих на ROI (вместо символа будет выдаваться "?") и цвет фона/символов - свётлое на тёмном или наоборот).
bee писал(а):Не совсем понял по поводу сортировки выходного массива IMAQ Particle Analysis
Если вы вытащите распознанные символы из For Loop в виде массива, например, то эти символы могут оказаться идущими не в том порядке, как они на картинке идут. Поэтому надо массив-отчёт сортировать по левому иксу ограничивающего прямоугольника (нулевой столбец в массиве): самый левый объект сверху, самый правый снизу массива. Однако текстовый оверлей вроде как верно выводит эти символы внутри For Loop, по крайней мере у меня всё совпало.
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: Как с помощью вэбки считать значение с LCD?

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

Добрый день. Подскажите пожалуйста по очень близкой задаче... хочу строить профиль интенсивности в ROI, нет ли случаем в IMAQ какой-то стандартной опции по ROI построить профиль яркости R,G,B канал + суммарный? Вроде бы должна быть, но не могу найти... можно конечно руками заморочиться из Image Pixels в формате U32 8 битные RGB каналы вытащить, да плюс ещё ROI обрезать, но сходу сложновато как-то показалось... наверняка же уже есть стандартное решение? Спасибо большое за ликбез!
Вложения
webcampic.png
PLD_cam_logger.vi
(69.15 КБ) 34 скачивания
Аватара пользователя
dadreamer

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

Re: Как с помощью вэбки считать значение с LCD?

Сообщение dadreamer »

Есть IMAQ LineProfile и IMAQ Light Meter (Line), они строят профиль интенсивности вдоль линии. Есть также IMAQ ROIProfile, он строит профиль интенсивности по границе ROI. Если нужен набор профилей внутри прямоугольника, придётся предварительно сделать несколько вещей вручную. У IMAQ ColorImageToArray есть вход Optional Rectangle, позволяющий сразу получить только те пиксели, что находятся внутри заданного прямоугольника (Left, Top, Right, Bottom). У IMAQ индикатора есть свойство ROI. Подаёте ROI на IMAQ Convert ROI to Rectangle, потом на Unbundle и четыре элемента I32 на Build Array, получите массив Optional Rectangle. Этот массив - на IMAQ ColorImageToArray, получите пиксели внутри выделенной области. Далее в цикле For переберите строки и заведите каждую на IMAQ LineProfile, так получите интенсивности по каждой строке. Для скорости можно вместо LineProfile использовать Array Subset. Полученный массив профилей можно усреднить по столбцам, например, или сделать что-то ещё, в зависимости от задачи.

Если цвет не принципиален, лучше работать с Grayscale, некоторые операции проще выполняются и больше :vi: , работающих с этим представлением.
Последний раз редактировалось dadreamer 26 июл 2023, 16:41, всего редактировалось 1 раз.
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: Как с помощью вэбки считать значение с LCD?

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

Спасибо за быстрый ответ, попробую осмыслить. Но цвет как раз важен, требуется ловить границу (пунктиром) зеленой и красной плазмы на производимой ленте. Если кому-то интересно, это вакуумный IBAD процесс напыления текстурированных плёнок. Глазом видно так себе, и каждый оператор видит по-своему;)
UPD: странно, не нашел у себя таких VI в IMAQ 4.0 и 4.7... стоит VAS_August2012, кажись это максимум что натягивается на Labview2012. Видимо пора LabView обновлять уже. А как-то можно пиксели под зеленой линией вытащить ловко? У picture среди свойств не нашел.
P.S. Знатоки, какой IMAQdx накатить получить заветные возможности, например увидеть в палитре IMAQ LineProfile? Судя по viewtopic.php?t=4060 надо ставить VAS, и всё... что я и сделал. Спасибо!
Вложения
corr2zone.png
green_line.png
IMAQ.png
Аватара пользователя
dadreamer

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

Re: Как с помощью вэбки считать значение с LCD?

Сообщение dadreamer »

Andrey Petrzhik писал(а): 26 июл 2023, 15:15странно, не нашел у себя таких VI в IMAQ 4.0 и 4.7... стоит VAS_August2012, кажись это максимум что натягивается на Labview2012. Видимо пора LabView обновлять уже. А как-то можно пиксели под зеленой линией вытащить ловко? У picture среди свойств не нашел.
Свойство ROI должно быть вот такое:
2023-07-26_23-59-43.jpg
VDM (Vision Development Module) тоже обновили? VAS - это, в основном, для съёмки с видеокамер и другого железа.
Andrey Petrzhik
user
user
Сообщения: 81
Зарегистрирован: 17 ноя 2015, 11:57
Версия LabVIEW: 12
Благодарил (а): 4 раза
Контактная информация:

Re: Как с помощью вэбки считать значение с LCD?

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

Да, обновил и Vision Development Module, но видимо нельзя было ставить последнюю версию, пороюсь ещё на досуге... но пока подзабил.
Может кому будет полезно: моя задача (и многие подобные) решается через ImageJ и плагин оказывается.
Вот так:
1. Ставим ImageJ https://imagej.net/ij/download.html
2. Качаем плагин для подключения вебки https://imagej.nih.gov/ij/plugins/webca ... index.html
3. Архив распаковываем в корень ImageJ\plugins (возможно и не в корень прокатит)
4. Открываем ImageJ, находим Web'ку в Plugins->LJWebcam plugin
выбираем камеру
5. Рисуем на кадре с камеры прямую, Analyze->Plot profile->вжать Live кнопочку
Вложения
int.png
Аватара пользователя
IvanLis

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

Re: Как с помощью вэбки считать значение с LCD?

Сообщение IvanLis »

IMAQ LineProfile входит в состав NI Vision Development Module в 15 версии уже присутствует, раньше посмотреть не имею возможности.
NI Vision Development Module.png
NI Vision Development Module.png (11.67 КБ) 511 просмотров
Пример использования лежит в папке примерно с таким путем:
C:\Program Files\National Instruments\LabVIEW 2015\examples\Vision\Analysis
Line Profile.png
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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