цифровая электроника
вычислительная техника
встраиваемые системы

 



Система распознавания отображаемых данных объекта

Автор: Mike(admin) от 3-06-2016, 13:55
Dr. Bob Davidov


ВВЕДЕНИЕ


Разработанная система предназначена для беcконтактного распознавания данных объекта выводимых на его дисплей. Система является частью средств для тестирования объекта по данным диалога между объектом и пользователем.


Тестирование систем, имеющих доступ к программным или аппаратным каналам вывода информации пользователя не требует распознавания данных. Однако, когда такое подключение к данным объекта отсутствует, его можно выполнить при помощи безконтактной системы распознавания, которая может обеспечить длительное наблюдение за состоянием объекта в автоматическом режиме.


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


Особенности разработанной системы показаны на примере распознавания данных дайв компьютера компании Open Safety Equipment Ltd.


Статья содержит следующие разделы.


  • Библиотечные функции обработки изображений МатЛАБ
  • Характеристики используемой веб камеры, подключение камеры к среде МатЛАБ, настройка режимов камеры.
  • Распознавание символов с использованием корреляционных функций.
  • Интерфейс пользователя системы распознавания и результаты распознавания

БИБЛИОТЕЧНЫЕ ФУНКЦИИ ОБРАБОТКИ ИЗОБРАЖЕНИЙ МАТЛАБ


MatLAB имеет библиотеки функций для работы с графическими файлами и видеосигналами. Ниже даны используемые варианты библиотечных функций.


Считывание изображения графического файла



>> pct = imread('DC_OS.jpg');

Система распознавания отображаемых данных объекта RGB изображение JPG файла

Рис. 1. RGB изображение JPG файла [•1] в формате <196x259x3 uint8>

Поддерживаемые форматы входных файлов BMP, CUR, GIF, HDF4, ICO, LPEG, JPEG 2000, PBM, PCX, PGM.


Добавление графического примитива к изображению



Imf = insertShape(pct, 'Rectangle', [32, 27, 220, 153], 'Color', 'green'); % к исходной картинке pct добавлена прямоугольная рамка зеленого цвета.

Система распознавания отображаемых данных объекта Изображение pct с прямоугольной рамкой зеленого цвета

Рис. 2. Изображение pct с прямоугольной рамкой зеленого цвета, <240x320x3 uint8>.

m-код добавления примитивов в кадры отображаемого видео:



clear all
pos_triangle = [183 297 302 250 316 297];
pos_hexagon = [340 163 305 186 303 257 334 294 362 255 361 191];

%webcamlist; 
cam = webcam(1);

for i = 1:100
    %считывание кадра веб камеры
    I = snapshot(cam); 
    % добавление круга
    RGB = insertShape(I, 'circle', [150 280 35], 'LineWidth', 5); 
    % добавление треугольника и многоугольника
    RGB = insertShape(RGB, 'FilledPolygon', {pos_triangle, pos_hexagon}, 'Color', {'white', 'green'}, 'Opacity', 0.7);
    figure(2), imshow(RGB); % вывод результата на графопостроитель
end

Система распознавания отображаемых данных объекта Видео изображение с добавленными примитивами

Рис. 3. Видео изображение с добавленными примитивами.

Уменьшение изображения


Уменьшение изображения в 2N раз достигается соответствующим уменьшением количества пикселов изображения по каждой координате.



%Установка параметров сжатия в 4 раза (как 2^2)
gaussPyramid = vision.Pyramid('PyramidLevel', 2);

%Считывание изображения tif файла, перевод серого цвета из uint8 в single
I = im2single(imread('DC_OS.jpg'));
J = step(gaussPyramid, I); сжатие

%Отображение исходной и сжатой картинок
figure, imshow(I); title('Original Image');
figure, imshow(J); title('Reduced Image');

Система распознавания отображаемых данных объекта Уменьшение изображения в 4 раза

Рис. 4. Уменьшение изображения в 4 раза.

Изменение размера изображения



pct=imresize(pct,[400 NaN]); % Изменение размеров матрицы pct изображения с сохранением отношения между сторонами, например, с <196 x 259 x 3 uint8 > в <400 x 529 x 3 uint8 >

Выделение фрагмента изображения



Imf = imcrop(pct_bw, [32, 27, 220, 153]); % Из файла выделяет фрагмент <154 x 221 x 3 uint8 >

Преобразование RGB изображения в палитру серого



pct_bw=rgb2gray(pct); % Преобразование RGB <196 x 259 x 3 uint8 > в <196 x 259 uint8 >

Система распознавания отображаемых данных объекта Приведение RGB изображения к серым полутонам

Рис. 5. Приведение RGB изображения к серым полутонам.

Фильтрация изображения


2d медианная фильтрация изображений в полутонах серого для устранения шума.



pct_filt=medfilt2(pct_bw,[3 3]); % Медианный фильтр для устранения шума.

Создание и применение других 2d фильтров:



h = fspecial(type); % Создание фильтра.  type - тип фильтра:  'average' (сглаживающий), 'disk' (круговой сглаживающий ), 'gaussian' (Гауссовский), 'laplacian' (Лапласа), 'log' (Лапласа Гаусса), 'motion' (сглаживает воздействие линейного движения камеры), 'prewitt' и  'sobel' (выделение кромок)
pic_filt = imfilter(pct_bw,h); % Применение фильтра h к изображению pct_bw

Размытие изображения



se=strel('disk',6); % Создание морфологического структурного элемента (STREL)- массив 0 и 1 с расположением единиц в виде круга, эллипса, квадрата
pct_dilasi=imdilate(pct_filt,se); % Размытие изображения

Система распознавания отображаемых данных объекта Примеры размытия левого изображения

Рис. 6. Примеры размытия левого изображения.

Утонение сплошных элементов изображения



pct_eroding=imerode(pct_filt,se);  % Eroding the gray image with structural element.

Система распознавания отображаемых данных объекта Пример утонения сплошных элементов изображения

Рис. 7. Пример утонения сплошных элементов изображения.

Вычитание константы из изображения или другого изображения



pct_edge_enhacement=imsubtract(pct_dilasi,pct_eroding); % вычитание из pct_dilasi  pct_eroding 

Программа подготовки и вычитания изображений:



pct = imread('DC_OS.jpg');
pct_bw=rgb2gray(pct); 

se=strel('disk',1); 
pct_eroding=imerode(pct_bw,se); 

pct_edge_enhacement=imsubtract(pct_bw,pct_eroding); 
figure, imshow(pct_edge_enhacement); 

Система распознавания отображаемых данных объекта Результат (справа) вычитания среднего изображения из левого

Рис. 8. Результат (справа) вычитания среднего изображения из левого.

Конвертирование матрицы в изображение серых тонов



pct_edge_enhacement_double=mat2gray(double(pct_edge_enhacement)); % конвертирование 196 x 258 uint8 [0 .. 255] > 196 x 258 double  [0 .. 255] >  196 x 258 double  [0 .. 1] 

2d свёртка



pct_double_konv=conv2(pct_edge_enhacement_double,[1 1;1 1]); % Свёртка double изображенияimage f

Система распознавания отображаемых данных объекта Действие свертки

Рис. 9. Действие свертки.

Растягивание интенсивности изображения


При отсутствии параметров интенсивность растягивается так, чтобы ее минимальное и максимальное значение были 0 и 255 соответственно.



pct_intens=imadjust(pct_double_konv,[0.5 0.7],[0 1],0.1); % Интенсивность [0.5 0.7] или 128 .. 179 масштабируется в [0 1] или 0 .. 255; 0.1 - gamma

Система распознавания отображаемых данных объекта Масштабирование интенсивности

Рис. 10. Масштабирование интенсивности.

Преобразование числовой матрицы в логическую



pct_logic=logical(pct_intens); % Преобразование double или uint8 в binary; все, что > 0 становится 1.

Система распознавания отображаемых данных объекта Преобразование

Рис. 11. Преобразование <196 x 256 double> матрицы в бинарную <196 x 256 logical>

Заливка оконтуренных элементов



pct_fill=imfill(pct_line_delete,'holes');

Система распознавания отображаемых данных объекта Заливка элементов с безразрывными контурами

Рис. 12. Заливка элементов с безразрывными контурами <196 x 256 double>

Удаление сплошных фрагментов (шумов) из бинарного изображения



pct_final=bwareaopen(pct_logic,500); % удаляет "белые == 1" объекты > 500 пикселей.

Система распознавания отображаемых данных объекта Удаление черных = 0 фрагментов

Рис. 13. Удаление "черных == 0" фрагментов размерами более 500 пикселей с применением инверсии NOT.

Код программы:



pct_double = double(imread('DC_OS.jpg'))./256;
pct_gray =rgb2gray(pct_double); 

pct_logic=logical(pct_gray); % бинарное изображение
pct_logic_inv=not(logical(pct_logic)); % инверсия

pct_final_inv =bwareaopen(pct_logic_inv,500); % удаление "белых объектов"

pct_final=not(pct_final_inv); % восстановление
figure, imshow(pct_final);

Выделение фрагментов (островков) бинарного изображения



[labelled jml] = bwlabel(pct_final);
% находит “островки” единиц и присваивает им порядковый номер. labelled – изображение с пронумерованными островками, lml – количество найденных островков. 

Система распознавания отображаемых данных объекта Фрагмент десяти пронумерованных островковых групп

Рис. 14. Фрагмент десяти пронумерованных “островковых” групп единиц бинарного изображения.

Нахождение координат и размеров отстровковых зон



Iprops=regionprops(labelled,'BoundingBox','Image');

Система распознавания отображаемых данных объекта 15_0

Система распознавания отображаемых данных объекта Фрагмент графического представления структурной переменной Iprops

Рис. 15. Фрагмент графического представления структурной переменной Iprops, содержащей координаты и размеры прямоугольных зон пронумерованных групп и бинарную матрицу каждой группы. Выделены координаты и размеры пятой группы.

Гистограмма


Гистограмма imhist(Img_reference) позволяет получить зависимость количества пикселей для каждой интенсивности.


Система распознавания отображаемых данных объекта Изображение (слева) и его гистограмма – количество полутонов серого

Рис. 16. Изображение (слева) и его гистограмма – количество полутонов серого. Гистограмма показывает, что в изображении преобладает черный цвет нулевой интенсивности: 3500 точек.

Распределение интенсивностей


Система распознавания отображаемых данных объекта Суммарное распределение интенсивности по строкам

Рис. 17. Суммарное распределение интенсивности по строкам sum(Img).

Система распознавания отображаемых данных объекта Слева - сумма интенсивности пикселей по строкам sum (Img) после медианного фильтра

Рис. 18. Слева - сумма интенсивности пикселей по строкам sum (Img) после медианного фильтра Img = medfilt2(Img,(5 5)). Справа - производная от суммы diff(sum(Img)).

Трехмерное отображение видеоизображений.


Видеокадр можно представить в табличном виде, как это показано на Рис. 19 для символа 9


Система распознавания отображаемых данных объекта Табличное распределение интенсивности пикселей

Рис. 19. Табличное распределение интенсивности пикселей символа "9"в Excel.

Графопостроитель МатЛАБ имеет кнопку “Rotate 3D” (Рис. 20), которая позволяет отображать выводимые данные в 3d формате.


Система распознавания отображаемых данных объекта Кнопка гафопостроителя для перевода отображаемых данных в 3d формат

Рис. 20. Кнопка гафопостроителя для перевода отображаемых данных в 3d формат.

Система распознавания отображаемых данных объекта Примеры 3d изображений

Рис. 21. Примеры 3d изображений. Справа показаны символы "20". По вертикали отображается интенсивность пикселей.

ВЕБ(ВИДЕО)КАМЕРА


В проекте использовалась ВЕБ камера высокой четкости HD Logitech C52 (•2).


Технические характеристики видеокамеры Logitech C52.


  • Видеосвязь в формате HD (1280 x 720 пикселей)
  • Видеосъемка в формате HD: до 1280 x 720 пикселей.
  • Автофокусировка
  • Фотографии: до 8 Мпикс (с программной обработкой)
  • Встроенный микрофон с поддержкой технологии Logitech RightSound™

Система распознавания отображаемых данных объекта Внешний вид и параметры настройки видеокамеры Logitech C52

Рис. 22. Внешний вид и параметры настройки видеокамеры Logitech C52.

Основные требования к компьютеру при разрешении камеры 1280 х 720 точек.


  • Частота процессора 2.4 GHz
  • Объем ОЗУ 2 GB
  • Свободное пространство на жестком диске 200 MB
  • USB порт 2.0
  • Операционная среда: Windows XP (SP2 or higher), Vista или Windows 7 (32-bit или 64-bit)

Подключение видеокамеры к МатЛАБ


1. Проверьте входит ли видиокамера в список устройств МатЛАБ.



>> webcamlist

2. Если камеры нет в списке, подключите её, используя пакет Support Package Installer (см. Рис. 23)


Система распознавания отображаемых данных объекта Подключение видеокамеры к МатЛАБ

Рис. 23. Подключение видеокамеры к МатЛАБ.

3. После успешной установки камера попадает в список



>> webcamlist

Подключение видеокамеры к Simulink


Видеокамеры National Instruments могут подключаться к среде Simulink МатЛАБ через объекты библиотеки Image Acquisition Toolbox > From Video Device. Для подключения необходимо установить пакет NI-DAQmx используя Support Package Installer (Рис. 23).


Запуск Image Acquisition Tool можно выполнить из командной строки МатЛАБ:



>>imaqtool

Порядок ввода видео в МатЛАБ


Ввод кадров в МатЛАБ выполняется в следующем порядке.


1. Поиск подключеных к комппьютеру видеокамер распознаваемых MATLAB.



>> webcamlist

2. Создание объекта видеокамеры.



>> cam = webcam('Logitech')  

или


3. Просмотр RGB видео с выводом имени камеры, времени видео, разрешения и частоты кадров.



>> preview(cam)

Система распознавания отображаемых данных объекта Вывод видео в МатЛАБ

Рис. 24. Вывод видео в МатЛАБ.

4. Установка требуемых параметров камеры.



cam = webcam (1)

Примеры структурного списка параметров камеры:


Система распознавания отображаемых данных объекта Примеры структурного списка параметров камеры

Получение возможных значений параметров, например, разрешения камеры



>> cam.AvailableResolutions
ans = 
    '640x480'    '160x120'    '176x144'
    '320x176'    '320x240'    '432x240'
    '352x288'    '544x288'    '640x360'
    '752x416'    '800x448'    '864x480'
    '960x544'    '1024x576'    '800x600'
    '1184x656'    '960x720'    '1280x720'
    '1392x768'    '1504x832'    '1600x896'
    '1280x960'

Система распознавания отображаемых данных объекта Изображения при разрешении

Рис. 25. Изображения при разрешении '320x240' '640x480' и '1280x960' пикселов.

Установка требуемого значения параметра



>> cam.Resolution = '320x240';

5. Выход из режима просмотра видео.



>> closePreview(cam)

6. Ввод кадра.



>> img = snapshot(cam);

7. Отображение кадра.



>> imshow(img)

8. Удаление объекта камеры.



>> clear('cam');

Настройка положения камеры относительно объекта


К выводимому в МатЛАБ видео добавляется рамка с известными координатами (Рис. 26). При настройке положения камеры относительно объекта границы объекта должны совпадать с положением рамки.


Система распознавания отображаемых данных объекта Рамка в видеокадре

Рис. 26. Рамка в видеокадре.

Пример m-кода для отображения видео с базовой рамкой:



webcamlist; 
cam = webcam(1);
cam.Resolution = '320x240';

target_area = [45, 44, 217, 150];
while(1)
    pct = snapshot(cam); 
    % display target 
    Imf = insertShape(pct, 'Rectangle', target_area, 'Color', 'green');
    image(Imf);
end

Особенности состояний объекта


В процессе работы устройство меняет формат выводимой не экран информации. Система распознаёт смену формата по наличию/отсутствию полей TTS и Step. Для поля каждого формата построено свое распределение зон определения символов Рис. 27.


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

Рис. 27. Разные форматы информации выводимой тестируемым устройством.

РАСПОЗНАВАНИЕ ТЕКСТА


OCR функция МатЛАБ


Функция Optical Character Recognition (OCR) МатЛАБ распознает текст графического файла.



% Загрузка изображения
I = imread('DC_OS.jpg');
 
% Распознавание текста
results = ocr(I);
 
% Анализируемые зоны изображения
wordBBox = results.WordBoundingBoxes
 
% Вывод изображения и зон 
figure;
Iname = insertShape(I, 'Rectangle', wordBBox, 'Color', 'red');
imshow(Iname); 

Система распознавания отображаемых данных объекта Зоны поиска символов

Рис. 28. Зоны поиска символов (23 прямоугольные зоны выделены красным), координаты и размеры зон в results.WordBoundingBoxes.

Таблица 1. Результат распознавания текста.


Система распознавания отображаемых данных объекта Результат распознавания текста

Пример автоматического нахождения текстовых зон и распознавание текста в МатЛАБ


Пример автоматического распознавания текста в МатЛАБ показан в разделе Help МатЛАБ (•3).


Система распознавания отображаемых данных объекта Исходное изображение

Рис. 29. Исходное изображение (•3).

Нахождение фрагмента изображения по корреляционной функции


Вычисление нормированной взаимной корреляции norm_Corr_f позволяет отслеживать наличие заданных фрагментов и их координаты в кадрах видеоизображения. Это можно использовать, например, при поиске или подсчете объектов или настройке положения камеры.


Примеры реализации алгоритма обнаружения показаны на Рис. 30, Рис. 31, код алгоритма (•4).


Система распознавания отображаемых данных объекта Зона объекта

Рис. 30. Зона объекта - текста “Run Time”, правильно обнаруженная на левом кадре. При накрытии рукой зоны объекта программа поиска нашла неправильную область объекта (правый кадр).

Система распознавания отображаемых данных объекта Зависимость корреляционной функции от номера кадра

Рис. 31. Зависимость корреляционной функции от номера кадра. Значение функции при наличии отыскиваемого объекта 0.99, а при его отсутствии 0.978. Малый диапазон изменения функции 0.012 делает алгоритм поиска чувствительным к воздействию помех - нахождению зон без объекта хорошо коррелируемых с эталонным объектом.

Улучшение отношения сигнал/шум корреляции увеличением отношения площади символа к площади обнаружения символа


Способность различать символы корреляционным методом зависит от разрешения поля символа, отношения площади символа к площади обнаружения символа и расхождением между определяемым и эталонными символами. Корреляция увеличивается с увеличением разрешения и отношения площадей и уменьшением расхождений между сравниваемыми символами.


Система распознавания отображаемых данных объекта Выделение зон расположения символов

Рис. 32. Выделение зон расположения символов.

Система распознавания отображаемых данных объекта Коэффициент корреляции между цифрами

Рис. 33. Коэффициент корреляции между цифрами объекта 5 (синяя линия), 6 (коричневая линия) и 2 (желтая линия) в зоне 17x25 пикселей и эталдонными символами: пустая зона, символы от 0 до 9. По амплитуде корреляции видно, что двойка хорошо отличается от остальных символов (её легче обнаружить), а пятерка мало отличается от шестерки.

Устранение неопределенности при сравнении символа с пустой зоной


Корреляционная функция может давать неопределенное значение NaN при сравнении символа объекта с пустой эталонной зоной состоящей из нулей. Для устранения такого эффекта интенсивность одного элемента эталона увеличена до 255:



function nmb = recognize_1(Img,target_area,Img_ref,index)    
nmb = 0;
for n = index(1):index(end)
    Img_target = imcrop(Img,target_area(n,:));
    Img_target = imadjust(Img_target); % Adjust image intensity values     
    Img_target(1,1) = 255; % to remove NaN correlation with zero image
 
    for i = 1:size(Img_ref,1)
        Img_ref(i,1,1) = 255; % to remove NaN correlation with zero image
        Img_reference = reshape(Img_ref(i,:,:),size(Img_ref,2),size(Img_ref,3));
        r(i) = corr2(logical(Img_reference-110),logical(Img_target-110));
    end
    num = find(r == max(r)) - 2;             
    if num < 0  
        num = 0;
    end
    nmb = nmb*10 + num;
end 

Увеличение корреляции использованием типовых шрифтов


В рассматриваемом варианте 320 x 240 пикселей используются шрифты цифр следующих размеров 18; 26; 36 и 60. Подобрать и доработать шрифт эталона к шрифту объекта можно при помощи специальных программ, например, GLCDFontCreator.exe (•5).


Система распознавания отображаемых данных объекта Оригинальное изображение и результат наложения шрифтов

Рис. 35. Оригинальное изображение (слева) и результат наложения 'Arial Rounded MT Bold' шрифтов на оригинальное изображение (справа).

Система распознавания отображаемых данных объекта Вариант сужения зон поиска символов

Рис. 36. Вариант сужения зон поиска символов.

Система распознавания отображаемых данных объекта Варианты эталонных цифр высокого и низкого разрешения

Рис. 37. Варианты эталонных цифр высокого и низкого разрешения. Корреляция (совпадение) между цифрами 5 и 6 выше чем между остальными символами.

Система распознавания отображаемых данных объекта Пиксельный вид надписей Time и Stop

Рис. 39. Пиксельный вид надписей Time и Stop

GUI


Система распознования состояния объекта дополнена Графическим Интерфейсом Пользователя (GUI). Интерфей пользователя разработан в МатЛАБ. Интерфейс имеет следующие особенности.


  • управляет настройкой и запуском видео
  • выводит видио в реальном времени
  • показывает качество установки видеокамеры относительно объекта
  • подстраивает положение зон распознавания
  • показывает результат распознования символов
  • восстанавливает по символам велечины параметров
  • строит графики изменения параметров объекта
  • накапливает и сохраняет результаты
  • принимает воздействие пользователя на объект через кнопки NEXT и SELECT

Система распознавания отображаемых данных объекта Начальное состояние Графического Интерфейса

Рис. 40. Начальное состояние Графического Интерфейса Пользователя (GUI) спроектированного в МатЛАБ.

Система распознавания отображаемых данных объекта Фрагмент GUI

Рис. 41. Фрагмент GUI. Видеоизображение объекта частотой 30 Гц выводится слева. Распознанные в выделенных зеленых зонах символы видеопотока отображаются на шаблоне кадра справа. Точность совмещения камеры и объекта определяется положением рамки самой большой прямоугольной зоны левого кадра.

РЕЗУЛЬТАТ РАСПОЗНАВАНИЯ СИМВОЛОВ ОБЪЕКТА


Система распознавания отображаемых данных объекта Состояние GUI при начальном формате вывода данных объекта

Рис. 43. Состояние GUI при начальном формате вывода данных объекта.

Система распознавания отображаемых данных объекта Состояние GUI при измененном формате вывода данных объекта

Рис. 44. Состояние GUI при измененном формате вывода данных объекта.

Система распознавания отображаемых данных объекта Графики выводимых на дисплей объекта параметров

Рис. 42. Графики выводимых на дисплей объекта параметров, считаных бесконтактной системой распознавания символов.



Литература


1. BIO-350 Dive Computer https://www.opensafety.eu/datasheets/Bio350%20Short%20Datasheet.pdf


2. Портативная веб-камера HD Webcam C525 http://www.logitech.com/ru-ru/product/hd-webcam-c525.


3. Help MatLAB > Computer Vision System Toolbox > Examples > Automatically Detect and Recognize Text in Natural Images.


4. Help MatLAB > Object Detection and Recognition > Examples and How To > Pattern Matching.


5. Построение интерфейса пользователя локальной системы управления на базе контроллера Arduino UNO. http://portalnp.ru/wp-content/uploads/2015/01/15.03_Arduino-UNO-Local-Control-User-Interface_Ed2a.pdf






Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий