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

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

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

Postby dadreamer on 18 Feb 2015, 20:18

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

Аналогично можно найти верхний и нижний фронты (Y1 и Y2), и по полученным координатам построить ROI. Если получится и будет более-менее работать, можно будет ввести дополнительные проверки и фильтры, а потом испытать на реальной картинке.
А можно вообще сжать всю картинку до одной строки, усреднив интенсивность пикселей в каждом столбце, и по такой усредненной строке найти фронты X1 и X2.

Сейчас ещё подумал, можно, наверное, использовать IMAQ Particle Analysis. Сначала выполнить фильтрацию и бинаризацию изображения, а потом загнать в этот :vi: . Он может вернуть координаты прямоугольника, ограничивающего частицы на изображении. Так как цифры у вас являются такими частицами, то получим их координаты и можно будет использовать их как несколько ROI (это к третьему вопросу относится как раз).
User avatar
dadreamer
professor
professor
 
Posts: 3338
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 845
I/O VIP vision internet

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

Postby bee on 19 Feb 2015, 13:49

dadreamer спасибо за Ваше участие.
По Вашему совету решил начать с тестовой картинки и перебора пикселей, при этом координаты для обработки я беру с прямоугольного РОИ.
Тут все получилось - рисует профиль линии по центру указанного РОИ и исследует его на яркость. Затем выделяем левую и правую сторону региона где были перепады квадратной рамкой (вложение 1).
Т.к. у символов не всегда крайние точки для РОИ будут вдоль центральной линии, решил организовать сканирование(перемещение линии по оси 0Y и построение массива профиля яркости) в пределах выделенного РОИ.
Вызывает затруднение построение двумерного массива по результатам сравнения полученной яркости с пороговым значением. Если выбрать регион как на вложении 2 верхнюю часть, где еще не началась прямая почему-то не заносит в результирующий двумерный массив.
Attachments
1.jpg
2.jpg
Image_Line_2.vi
(58.54 KiB) Downloaded 97 times
bee
junior
junior
 
Posts: 51
Joined: 12 Jun 2013, 09:04
LabVIEW Version: 2014
Karma: 0

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

Postby dadreamer on 19 Feb 2015, 20:35

То ли вы не ту версию программы залилил, то ли я что-то сделал не так. У меня не получается такого же overlay как у вас, вот что рисует (картинку вашу взял):
2015-02-19_22-15-46.jpg

Да и я так подумал, слишком сложно получается с этим перебором. Это аналогично поиску границ объекта, что есть совсем непростая задача и решается множеством способов, в зависимости, в т.ч., и от свойств изображения (качество, шумы, пороги, резкость и прочее). Я решил попробовать сделать распознавание через IMAQ Particle Analysis. Естественно, требуется бинарное изображение для работы. А кроме того, пришлось в Vision Assistant'е "обучить" программу распознанию, т.е. создать шаблон с тестовой последовательностью символов. Например, вот:
1234567890.png
1234567890.png (2.98 KiB) Viewed 4460 times

Не буду расписывать, как это делается, там всё интуитивно понятно. На выходе получился файл charset.abc:
charset.rar
(7.47 KiB) Downloaded 115 times

Далее, я сделал тестовую картинку из этих цифр банальным копи-пастом:
Test.png
Test.png (5.44 KiB) Viewed 4460 times

(естественно, на реальных изображениях будет множество лишнего, такого как точки, размытости, неровности, искажения символов, наклон, смещение и т.д.)
В :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 KiB) Downloaded 134 times


Кстати, не сразу у меня получилось это распознание. Долго не мог понять, почему на выходе получаю совсем не те символы, что на картинке. Хотя в Ассистанте распознаётся верно. Потом наконец дошло, что IMAQ Particle Analysis выдаёт неотсортированный массив-отчёт, то есть, там объекты хоть как могут размещаться. Поэтому стоит учесть это и сделать сортировку по крайнему левому X (Left), например.
User avatar
dadreamer
professor
professor
 
Posts: 3338
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 845
I/O VIP vision internet

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

Postby bee on 20 Feb 2015, 10:42

По поводу версии выложенной мной программы - все так и должно быть тут РОИ заполняется линией сканирования попиксельно сверху вниз.
К сожалению выложенный вами ВП в ЛВ2012 не находит несколько инструментов, используя имеющиеся удалось получить похожую картину выделения символов.
Не совсем понял по поводу сортировки выходного массива IMAQ Particle Analysis, что с ней, что без нее распознание не совсем корректное, хотя аналогично в ассистента все распознает.
В любом случае, dadreamer, спасибо, что задали направление для дальнейшей разработки :super:
Attachments
1.jpg
bee
junior
junior
 
Posts: 51
Joined: 12 Jun 2013, 09:04
LabVIEW Version: 2014
Karma: 0

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

Postby dadreamer on 20 Feb 2015, 14:59

bee wrote:распознание не совсем корректное

Вы из ассистента скопируйте в :labview: также кластер с параметрами, идущий на IVA OCR - Set Parameters 2.vi. Там есть такие важные параметры, как игнор символов, лежащих на ROI (вместо символа будет выдаваться "?") и цвет фона/символов - свётлое на тёмном или наоборот).
bee wrote:Не совсем понял по поводу сортировки выходного массива IMAQ Particle Analysis

Если вы вытащите распознанные символы из For Loop в виде массива, например, то эти символы могут оказаться идущими не в том порядке, как они на картинке идут. Поэтому надо массив-отчёт сортировать по левому иксу ограничивающего прямоугольника (нулевой столбец в массиве): самый левый объект сверху, самый правый снизу массива. Однако текстовый оверлей вроде как верно выводит эти символы внутри For Loop, по крайней мере у меня всё совпало.
User avatar
dadreamer
professor
professor
 
Posts: 3338
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 845
I/O VIP vision internet

Previous

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

Who is online

Users browsing this forum: No registered users and 1 guest

cron