Как с помощью вэбки считать значение с LCD?
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Как с помощью вэбки считать значение с LCD?
bee
Не совсем разобрался в вашей программе (плюс ещё Vision на домашнем компе только на LV 2011), но я бы для начала нашёл крайний левый и крайний правый фронты (X1 и X2), считая условно что на данный момент шумов и искажений нет. Это можно сделать простым перебором пикселей в конкретной строке, сравнивая их с порогом-константой. Если нашли превышение, то запомнили эту координату. Аналогично можно найти верхний и нижний фронты (Y1 и Y2), и по полученным координатам построить ROI. Если получится и будет более-менее работать, можно будет ввести дополнительные проверки и фильтры, а потом испытать на реальной картинке.
А можно вообще сжать всю картинку до одной строки, усреднив интенсивность пикселей в каждом столбце, и по такой усредненной строке найти фронты X1 и X2.
Сейчас ещё подумал, можно, наверное, использовать IMAQ Particle Analysis. Сначала выполнить фильтрацию и бинаризацию изображения, а потом загнать в этот . Он может вернуть координаты прямоугольника, ограничивающего частицы на изображении. Так как цифры у вас являются такими частицами, то получим их координаты и можно будет использовать их как несколько ROI (это к третьему вопросу относится как раз).
Не совсем разобрался в вашей программе (плюс ещё Vision на домашнем компе только на LV 2011), но я бы для начала нашёл крайний левый и крайний правый фронты (X1 и X2), считая условно что на данный момент шумов и искажений нет. Это можно сделать простым перебором пикселей в конкретной строке, сравнивая их с порогом-константой. Если нашли превышение, то запомнили эту координату. Аналогично можно найти верхний и нижний фронты (Y1 и Y2), и по полученным координатам построить ROI. Если получится и будет более-менее работать, можно будет ввести дополнительные проверки и фильтры, а потом испытать на реальной картинке.
А можно вообще сжать всю картинку до одной строки, усреднив интенсивность пикселей в каждом столбце, и по такой усредненной строке найти фронты X1 и X2.
Сейчас ещё подумал, можно, наверное, использовать IMAQ Particle Analysis. Сначала выполнить фильтрацию и бинаризацию изображения, а потом загнать в этот . Он может вернуть координаты прямоугольника, ограничивающего частицы на изображении. Так как цифры у вас являются такими частицами, то получим их координаты и можно будет использовать их как несколько ROI (это к третьему вопросу относится как раз).
-
- junior
- Сообщения: 51
- Зарегистрирован: 12 июн 2013, 09:04
- Версия LabVIEW: 2014
- Контактная информация:
Re: Как с помощью вэбки считать значение с LCD?
dadreamer спасибо за Ваше участие.
По Вашему совету решил начать с тестовой картинки и перебора пикселей, при этом координаты для обработки я беру с прямоугольного РОИ.
Тут все получилось - рисует профиль линии по центру указанного РОИ и исследует его на яркость. Затем выделяем левую и правую сторону региона где были перепады квадратной рамкой (вложение 1).
Т.к. у символов не всегда крайние точки для РОИ будут вдоль центральной линии, решил организовать сканирование(перемещение линии по оси 0Y и построение массива профиля яркости) в пределах выделенного РОИ.
Вызывает затруднение построение двумерного массива по результатам сравнения полученной яркости с пороговым значением. Если выбрать регион как на вложении 2 верхнюю часть, где еще не началась прямая почему-то не заносит в результирующий двумерный массив.
По Вашему совету решил начать с тестовой картинки и перебора пикселей, при этом координаты для обработки я беру с прямоугольного РОИ.
Тут все получилось - рисует профиль линии по центру указанного РОИ и исследует его на яркость. Затем выделяем левую и правую сторону региона где были перепады квадратной рамкой (вложение 1).
Т.к. у символов не всегда крайние точки для РОИ будут вдоль центральной линии, решил организовать сканирование(перемещение линии по оси 0Y и построение массива профиля яркости) в пределах выделенного РОИ.
Вызывает затруднение построение двумерного массива по результатам сравнения полученной яркости с пороговым значением. Если выбрать регион как на вложении 2 верхнюю часть, где еще не началась прямая почему-то не заносит в результирующий двумерный массив.
- Вложения
-
- Image_Line_2.vi
- (58.54 КБ) 186 скачиваний
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Как с помощью вэбки считать значение с LCD?
То ли вы не ту версию программы залилил, то ли я что-то сделал не так. У меня не получается такого же overlay как у вас, вот что рисует (картинку вашу взял):
В берём данные из отчёта IMAQ Particle Analysis и строим ROI для каждого объекта по координатам из этого отчёта. Полученный ROI подаём на IMAQ OCR Read Text 4. Попутно выводим оверлеем ограничивающий прямоугольник и собственно сам текст, который был распознан по нашему ROI. Для тестовой последовательности все цифры были распознаны успешно. И вот сам : Кстати, не сразу у меня получилось это распознание. Долго не мог понять, почему на выходе получаю совсем не те символы, что на картинке. Хотя в Ассистанте распознаётся верно. Потом наконец дошло, что IMAQ Particle Analysis выдаёт неотсортированный массив-отчёт, то есть, там объекты хоть как могут размещаться. Поэтому стоит учесть это и сделать сортировку по крайнему левому X (Left), например.
Да и я так подумал, слишком сложно получается с этим перебором. Это аналогично поиску границ объекта, что есть совсем непростая задача и решается множеством способов, в зависимости, в т.ч., и от свойств изображения (качество, шумы, пороги, резкость и прочее). Я решил попробовать сделать распознавание через IMAQ Particle Analysis. Естественно, требуется бинарное изображение для работы. А кроме того, пришлось в Vision Assistant'е "обучить" программу распознанию, т.е. создать шаблон с тестовой последовательностью символов. Например, вот:
Не буду расписывать, как это делается, там всё интуитивно понятно. На выходе получился файл charset.abc:
Далее, я сделал тестовую картинку из этих цифр банальным копи-пастом:
(естественно, на реальных изображениях будет множество лишнего, такого как точки, размытости, неровности, искажения символов, наклон, смещение и т.д.)В берём данные из отчёта IMAQ Particle Analysis и строим ROI для каждого объекта по координатам из этого отчёта. Полученный ROI подаём на IMAQ OCR Read Text 4. Попутно выводим оверлеем ограничивающий прямоугольник и собственно сам текст, который был распознан по нашему ROI. Для тестовой последовательности все цифры были распознаны успешно. И вот сам : Кстати, не сразу у меня получилось это распознание. Долго не мог понять, почему на выходе получаю совсем не те символы, что на картинке. Хотя в Ассистанте распознаётся верно. Потом наконец дошло, что IMAQ Particle Analysis выдаёт неотсортированный массив-отчёт, то есть, там объекты хоть как могут размещаться. Поэтому стоит учесть это и сделать сортировку по крайнему левому X (Left), например.
-
- junior
- Сообщения: 51
- Зарегистрирован: 12 июн 2013, 09:04
- Версия LabVIEW: 2014
- Контактная информация:
Re: Как с помощью вэбки считать значение с LCD?
По поводу версии выложенной мной программы - все так и должно быть тут РОИ заполняется линией сканирования попиксельно сверху вниз.
К сожалению выложенный вами ВП в ЛВ2012 не находит несколько инструментов, используя имеющиеся удалось получить похожую картину выделения символов.
Не совсем понял по поводу сортировки выходного массива IMAQ Particle Analysis, что с ней, что без нее распознание не совсем корректное, хотя аналогично в ассистента все распознает.
В любом случае, dadreamer, спасибо, что задали направление для дальнейшей разработки
К сожалению выложенный вами ВП в ЛВ2012 не находит несколько инструментов, используя имеющиеся удалось получить похожую картину выделения символов.
Не совсем понял по поводу сортировки выходного массива IMAQ Particle Analysis, что с ней, что без нее распознание не совсем корректное, хотя аналогично в ассистента все распознает.
В любом случае, dadreamer, спасибо, что задали направление для дальнейшей разработки
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Как с помощью вэбки считать значение с LCD?
Вы из ассистента скопируйте в также кластер с параметрами, идущий на IVA OCR - Set Parameters 2.vi. Там есть такие важные параметры, как игнор символов, лежащих на ROI (вместо символа будет выдаваться "?") и цвет фона/символов - свётлое на тёмном или наоборот).bee писал(а):распознание не совсем корректное
Если вы вытащите распознанные символы из For Loop в виде массива, например, то эти символы могут оказаться идущими не в том порядке, как они на картинке идут. Поэтому надо массив-отчёт сортировать по левому иксу ограничивающего прямоугольника (нулевой столбец в массиве): самый левый объект сверху, самый правый снизу массива. Однако текстовый оверлей вроде как верно выводит эти символы внутри For Loop, по крайней мере у меня всё совпало.bee писал(а):Не совсем понял по поводу сортировки выходного массива IMAQ Particle Analysis
-
- user
- Сообщения: 81
- Зарегистрирован: 17 ноя 2015, 11:57
- Версия LabVIEW: 12
- Благодарил (а): 4 раза
- Контактная информация:
Re: Как с помощью вэбки считать значение с LCD?
Добрый день. Подскажите пожалуйста по очень близкой задаче... хочу строить профиль интенсивности в ROI, нет ли случаем в IMAQ какой-то стандартной опции по ROI построить профиль яркости R,G,B канал + суммарный? Вроде бы должна быть, но не могу найти... можно конечно руками заморочиться из Image Pixels в формате U32 8 битные RGB каналы вытащить, да плюс ещё ROI обрезать, но сходу сложновато как-то показалось... наверняка же уже есть стандартное решение? Спасибо большое за ликбез!
- Вложения
-
- PLD_cam_logger.vi
- (69.15 КБ) 31 скачивание
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Как с помощью вэбки считать значение с LCD?
Есть 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, некоторые операции проще выполняются и больше , работающих с этим представлением.
Если цвет не принципиален, лучше работать с Grayscale, некоторые операции проще выполняются и больше , работающих с этим представлением.
Последний раз редактировалось dadreamer 26 июл 2023, 16:41, всего редактировалось 1 раз.
-
- user
- Сообщения: 81
- Зарегистрирован: 17 ноя 2015, 11:57
- Версия LabVIEW: 12
- Благодарил (а): 4 раза
- Контактная информация:
Re: Как с помощью вэбки считать значение с LCD?
Спасибо за быстрый ответ, попробую осмыслить. Но цвет как раз важен, требуется ловить границу (пунктиром) зеленой и красной плазмы на производимой ленте. Если кому-то интересно, это вакуумный IBAD процесс напыления текстурированных плёнок. Глазом видно так себе, и каждый оператор видит по-своему;)
UPD: странно, не нашел у себя таких VI в IMAQ 4.0 и 4.7... стоит VAS_August2012, кажись это максимум что натягивается на Labview2012. Видимо пора LabView обновлять уже. А как-то можно пиксели под зеленой линией вытащить ловко? У picture среди свойств не нашел.
P.S. Знатоки, какой IMAQdx накатить получить заветные возможности, например увидеть в палитре IMAQ LineProfile? Судя по viewtopic.php?t=4060 надо ставить VAS, и всё... что я и сделал. Спасибо!
UPD: странно, не нашел у себя таких VI в IMAQ 4.0 и 4.7... стоит VAS_August2012, кажись это максимум что натягивается на Labview2012. Видимо пора LabView обновлять уже. А как-то можно пиксели под зеленой линией вытащить ловко? У picture среди свойств не нашел.
P.S. Знатоки, какой IMAQdx накатить получить заветные возможности, например увидеть в палитре IMAQ LineProfile? Судя по viewtopic.php?t=4060 надо ставить VAS, и всё... что я и сделал. Спасибо!
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Как с помощью вэбки считать значение с LCD?
Свойство ROI должно быть вот такое: VDM (Vision Development Module) тоже обновили? VAS - это, в основном, для съёмки с видеокамер и другого железа.Andrey Petrzhik писал(а): ↑26 июл 2023, 15:15странно, не нашел у себя таких VI в IMAQ 4.0 и 4.7... стоит VAS_August2012, кажись это максимум что натягивается на Labview2012. Видимо пора LabView обновлять уже. А как-то можно пиксели под зеленой линией вытащить ловко? У picture среди свойств не нашел.
-
- user
- Сообщения: 81
- Зарегистрирован: 17 ноя 2015, 11:57
- Версия LabVIEW: 12
- Благодарил (а): 4 раза
- Контактная информация:
Re: Как с помощью вэбки считать значение с LCD?
Да, обновил и 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 кнопочку
Может кому будет полезно: моя задача (и многие подобные) решается через 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 кнопочку
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Как с помощью вэбки считать значение с LCD?
IMAQ LineProfile входит в состав NI Vision Development Module в 15 версии уже присутствует, раньше посмотреть не имею возможности.
C:\Program Files\National Instruments\LabVIEW 2015\examples\Vision\Analysis
Пример использования лежит в папке примерно с таким путем:C:\Program Files\National Instruments\LabVIEW 2015\examples\Vision\Analysis
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 6 Ответы
- 1063 Просмотры
-
Последнее сообщение JohnChaban
-
- 0 Ответы
- 703 Просмотры
-
Последнее сообщение Dima123_Dima321
-
- 13 Ответы
- 2455 Просмотры
-
Последнее сообщение rsv