СИСТЕМА РАСПОЗНАВАНИЯ ОТОБРАЖАЕМЫХ ДАННЫХ ОБЪЕКТА
ВВЕДЕНИЕ
Разработанная система предназначена для бесконтактного распознавания данных объекта выводимых на его дисплей. Система является частью средств для тестирования объекта по данным диалога между объектом и пользователем.
Тестирование систем, имеющих доступ к программным или аппаратным каналам вывода информации пользователя не требует распознавания данных. Однако, когда такое подключение к данным объекта отсутствует, его можно выполнить при помощи бесконтактной системы распознавания, которая может обеспечить длительное наблюдение за состоянием объекта в автоматическом режиме.
В этой работе обсуждаются средства распознавания без использования нейронных сетей, эффективность которых, в значительной мере, зависит от результатов обучения.
Особенности разработанной системы показаны на примере распознавания данных дайв-компьютера компании Open Safety Equipment Ltd.
Статья содержит следующие разделы.
• Библиотечные функции обработки изображений МатЛАБ
• Характеристики используемой веб камеры, подключение камеры к среде МатЛАБ, настройка режимов камеры.
• Распознавание символов с использованием корреляционных функций.
• Интерфейс пользователя системы распознавания и результаты распознавания
БИБЛИОТЕЧНЫЕ ФУНКЦИИ ОБРАБОТКИ ИЗОБРАЖЕНИЙ МАТЛАБ
MatLAB имеет библиотеки функций для работы с графическими файлами и видеосигналами. Ниже даны используемые варианты библиотечных функций.
Считывание изображения графического файла
>> pct = imread('DC_OS.jpg');
Рис. 1. RGB изображение [1] JPG файла в формате <196x259x3 uint8>
Поддерживаемые форматы входных файлов BMP, CUR, GIF, HDF4, ICO, LPEG, JPEG 2000, PBM, PCX, PGM.
Добавление графического примитива к изображению
Imf = insertShape(pct, 'Rectangle', [32, 27, 220, 153], 'Color', 'green'); % к исходной картинке 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 раза.
Изменение размера изображения
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 >
Рис. 5. Приведение RGB изображения к полутонам серого.
Фильтрация изображения
2d медианная фильтрация изображений в полутонах серого
pct_filt=medfilt2(pct_bw,[3 3]); % Медианный фильтр для устранения шума.
Размытие изображения
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 изображения
Рис. 9. Действие свертки.
Масштабирование интенсивности изображения
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 пикселей
Рис. 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. Фрагмент графического представления структурной переменной Iprops, содержащей координаты и размеры прямоугольных зон пронумерованных групп и бинарную матрицу каждой группы. Выделены координаты и размеры пятой группы.
Гистограмма
Гистограмма imhist(Img_reference) позволяет получить зависимость количества пикселей для каждой интенсивности.
Рис. 16. Изображение (слева) и его гистограмма – количество полутонов серого. Гистограмма показывает, что в изображении преобладает черный цвет нулевой интенсивности: ~3500 точек.
Распределение интенсивностей
Рис. 17. Суммарное распределение интенсивности по строкам sum(Img).
Рис. 18. Слева — сумма интенсивности пикселей по строкам sum (Img) после медианного фильтра Img = medfilt2(Img,[5 5]). Справа — производная от суммы diff(sum(Img)).
Трехмерное построение видеоизображений.
Видеокадр можно представить в табличном виде, как это показано на Рис. 19 для символа 9.
Рис. 19. Табличное распределение интенсивности пикселей символа «9»в Excel.
Графопостроитель МатЛАБ имеет кнопку “Rotate 3D” (Рис. 20), которая позволяет отображать выводимые данные в 3d формате.
Рис. 20. Кнопка графопостроителя для перевода отображаемых данных в 3d формат.
Рис. 21. Примеры 3d изображений. Справа показаны символы «20». По вертикали отображается интенсивность пикселей.
ВИДЕОКАМЕРА
В проекте использовалась ВЕБ камера высокой четкости HD Logitech C52 [2].
Технические характеристики видеокамеры Logitech C52.
• Видеосвязь в формате HD (1280 x 720 пикселей)
• Видеосъемка в формате HD: до 1280 x 720 пикселей.
• Автофокусировка
• Фотографии: до 8 Мпикс (с программной обработкой)
• Встроенный микрофон с поддержкой технологии Logitech RightSound
Рис. 22. Внешний вид и параметры настройки видеокамеры Logitech C52.
Основные требования к компьютеру при разрешении камеры 1280 х 720 точек.
• Частота процессора 2.4 ГГц
• Объем ОЗУ 2 ГБ
• Свободное пространство на жестком диске 200 МБ
• USB порт 2.0
• Операционная среда: Windows XP (SP2 or higher), Vista или Windows 7 (32-бит или 64-бит)
Подключение видеокамеры к МатЛАБ
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 = webcam with properties: Name: 'Logitech HD Webcam C525' Resolution: '640x480' AvailableResolutions: {1x22 cell} Brightness: 128 Contrast: 32 Focus: 60 Gain: 64 WhiteBalance: 5500 Tilt: 0 Exposure: -4 Pan: 0 Sharpness: 22 Saturation: 32 BacklightCompensation: 1 Zoom: 1 ExposureMode: 'auto' |
cam = webcam with properties: Name: 'Logitech HD Webcam C525' Resolution: '960x720' AvailableResolutions: {1x22 cell} Brightness: 128 WhiteBalanceMode: 'manual' Pan: 0 Exposure: -5 Tilt: 0 FocusMode: 'manual' BacklightCompensation: 1 WhiteBalance: 5900 ExposureMode: 'manual' Sharpness: 30 Saturation: 32 Focus: 90 % 80, 85, 90, 95 adjust Contrast: 32 Zoom: 1 Gain: 64 |
К сожалению, не доступен сервер mySQL