Дисциплина: Методы и средства распознавания образов и визуализации Тема № 2: Основы распознавания объектов 1 Распознавание Под распознаванием мы понимаем «отнесение исследуемого объекта, задаваемого в виде совокупности наблюдений, к одному из взаимоисключающих классов». В таком смысле «распознавание образов является одной из разновидностей классификации» [Верхаген К., Дёйн Р., Грун Ф. Распознавание образов: состояние и перспективы . М.: РиС, 1985.], а «в тех случаях, когда каждый класс содержит только один объект, классификация эквивалентна идентификации». Идентификацией в данном случае понимается «присвоение рассматриваемому объекту однозначного названия». То есть получение характерных точек на изображении позволит в дальнейшем классифицировать рассматриваемый объект (распознать). Идентификацией в данном случае понимается «присвоение рассматриваемому объекту однозначного названия». То есть получение характерных точек на изображении позволит в дальнейшем классифицировать рассматриваемый объект (распознать). 2 Направления в области распознавания В настоящий момент существуют три основных направления в области распознавания: Распознавание с помощью нейронных сетей; Сопоставление изображения с эталоном; Распознавание изображения по характерным точкам (при этом способ получения характерных точек может отличаться). В зависимости от объекта распознавания тип и количество методов могут изменяться (например, для распознавания лиц наряду с перечисленными методами применяют: распознавание путем эластичного графа, анализ оптических потоков изображений, метод главных компонент [Самаль Д. И. Алгоритмы идентификации человека по фотопортрету на основе геометрических преобразований// Диссертация на соискание ученной степени кандидата наук. Ин-т техн. киберн. НАН Беларуси; Рук. С.В. Абламейко. Мн., 2002]). 3 Выявление характерных точек Как правило, выявление характерных точек на изображении включает следующие основные этапы: 1. Получение нормализованного полутонового изображения; 2. Поиск исследуемых областей; 3. Выделения краев на исследуемой области (методы Собеля, Лапласса, Кани и т. д.); 4. Преобразование рассматриваемого участка в монохромное изображение; 5. Анализ полученного монохромного и полутонового изображения в исследуемой области. Для получения полутонового черно – белого изображения используются следующая классическая формула: I (C ) 0,3 R(C ) 0,59 G (C ) 0,11 B(C ) I – интенсивность в точке полутонового изображения, R, G и B (значения 0..255) – красная, зеленная и синяя компонента цвета С. 4 Выделение контуров методом Собеля Для выделения краев на изображении было предложено применять метод Собеля, использующий для вычисления градиента первого порядка функции интенсивности специальные ядра, известные как «операторы Собеля». I11 I12 I1n 1 0 1 I 2n I 21 I X оператор Собеля; Sx 2 0 2 I 1 0 1 m1 I m 2 I mn 1 2 1 Sy 0 0 0 1 2 1 Y оператор Собеля; матрица исходного изображения, где I ij значения интенсивности в точке. 5 Операторы Собеля Ядра применяются к каждому пикселю изображения: он помещается в центр ядра, и значения интенсивности в соседних точках умножаются на соответствующие коэффициенты ядра, после чего полученные значения суммируются. Следует отметить, что для крайних элементов (точек) исходной матрицы изображения I операторы Собеля не применяются. Х оператор Собеля, примененный к 3х3 матрице исходного изображения, дает величину горизонтальной составляющей градиента интенсивности в центральной точке этой матрицы, а Y - оператор Собеля дает величину вертикальной составляющей градиента. 6 Операторы Собеля Коэффициенты ядра выбраны так, чтобы при его применении одновременно выполнялось сглаживание в одном направлении и вычисление пространственной производной – в другом. Величина градиента определяется как квадратный корень из суммы квадратов значений горизонтальной и вертикальной составляющих градиента. В результате образуется массив чисел I S x I S y I 2 2 характеризующих изменения яркости в различных точках изображения. 7 Инвертирование изображения После применения оператора Собеля изображение подвергается инвертированию В результате применения оператора Собеля получается изображение (рис. а) с выделенными краями. Применив инверсию к I получим изображение (рис. б) I I G I G – константа равная числу уровней яркости изображения (в данном случае 255. 8 Бинаризация изображения Изображение бинаризируется (преобразуется в монохромное) в соответствии с методом Отсу 0, I ij T opt ; I Ot ( I ) opt 1, I ij T ; где T opt- оптимальный для I порог бинаризации. 9 Применение фильтров Габора В 1946 г. Д. Габор предложил подход, описывающий некоторую временную функцию, с одновременным учётом частоты сигнала, который впоследствии стал носить его имя. На основе этого подхода Дагманн в 1988 году сформулировал двумерное преобразование Габора [Jain A.K., Ratha N.K. and Lakshmanan S. Object detection using Gabor filters// Pattern recognition. . 1997. . Vol.30. . N.2. . P.295 . 309.], которое применил для идентификации человека по изображению радужной оболочки глаза. За последние 5-10 лет фильтры Габора компактная форма упомянутого преобразования стали широко используемым инструментом разработчиков систем обработки изображений. Так, например, они применяются для оценки симметричности текстур и их классификации, обнаружения движения на видеопоследовательностях [Фомин Я.А., Тарловский Г.Р. Статистическая теория распознавания образов . М.: РиС, 1986. . 264с., Quan Sh. and Chen D. Discrete Gabor transform// IEEE Trans. On Signal Processing.- 1993.-Vol.41.- No.7.- P.2429-2438.]. 10 Применение фильтров Габора Упорядоченная группа таких фильтров, используемых с разными параметрами, часто называется Габоровскими вейвлетами. Окрестность, окружающая пиксель a(i,j) может быть описана значениями фильтров Габора, которые в совокупности формируют вектор-признак, характеризующий эту окрестность. 11 Общий вид фильтра ho0 g o0 ( x, y ) exp i ( x cos 0 y sin 0 ) 2 2 ( x cos 0 y cos 0 ) ( x cos 0 y sin 0 ) g o0 ( x, y ) exp 2 2 2 x 2 y x y 1 g o0 ( x, y ) является двумерным гауссином с отклонениями повернутым на угол 0. x , y 12 Характеристики фильтра Из анализа выражений следует, что фильтр характеризуется следующими параметрами. Радиусами эллипса σx и σy, углом ориентации θ. В зависимости от периода cos и sin у фильтров может быть различное количество пиков (локальных максимумов). Результатом свёртки фильтра с изображением в некоторой точке (x,y) является комплексное число. В настоящее время, судя по количеству появляющихся публикаций, фильтры Габора являются одним из наиболее исследуемых и обещающих подходов в области распознавания образов и обработки изображений. В ряде случаев они применялись и для идентификации человека по фотопортрету [Smeraldi F., Carmona O. and Bigun J. Saccadic search with Gabor features applied to eye detection and real-time head tracking// Image and Vision Computing. - 2000. - No 18. - P. 323-329.]. 13 Вычисление коэффициента корреляции Рассмотрим метод распознавания объектов на изображении на основе использования вычисления коэффициента корреляции. В этом случае, для решения такого рода задач необходимо кроме исходного изображения иметь также изображение объекта, который необходимо обнаружить на исходном изображении. Описание примера иллюстрируется использованием функций MATLAB. Исходное изображение, содержащее набор букв. function [] = r01() L=imread('a.png'); figure, imshow(L); 14 Эталонные изображения Также нам необходимо иметь эталонные изображения объектов (букв), которые необходимо распознать. L1=imread('b.png'); L2=imread('c.png'); 15 Коэффициент корреляции Следующий шаг заключается в вычислении коэффициента корреляции между матрицами исходного изображения и соответствующего эталона. Для этого используется функция corr2. Функция r = corr2(A,B) возвращает коэффициент корреляции между двумя матрицами или векторами A и B. Коэффициент корреляции вычисляются по формуле: r ( A mn m n ( A mn m A)( Bmn B) A) n A=[1 2; 3 4]; B=[3 4; 5 6]; r=corr2(A,B); r r= 1 >> 2 ( B mn m B) 2 A mean2( A), B mean2( B) n A=[1 2; 3 4]; B=[6 5; 4 3]; r=corr2(A,B); r r = -1 >> 16 Выделение части изображения Необходимо помнить, что функция corr2 вычисляет коэффициент корреляции между матрицами одинакового размера. Поэтому из большей матрицы исходного изображения необходимо вырезать части, которые равны матрице эталонного изображения. Далее вычисляется коэффициент корреляции между каждой частью исходного изображения и каждым эталоном. 17 Коэффициент корреляции Итак, коэффициент корреляции между первым эталоном (буква А) и исходным изображением вычисляется следующим образом. for p=1:3; L_t=L(:,SH*(p-1)+1:SH*p); k(p)=corr2(L1,L_t); end; Значения коэффициентов корреляции для первого эталона (буква А) и трех частей исходного изображения представлены на графике figure, plot(k); 18 Коэффициент корреляции Расположение максимума коэффициента корреляции свидетельствует о том, что эта часть исходного изображения максимально похожа на эталон. Определим, расположение максимального значения коэффициента корреляции. R=find(k==max(k)) R= 1 19 Распознавание номерных знаков автомобилей При решении задачи распознавания номерных знаков автомобилей можно выделить два этапа: 1. локализация номерного знака на изображении 2. распознавание символов на знаке. 20 Преобразование изображения в оттенки серого I=imread('inputimage.bmp'); figure,imshow(I); I=rgb2gray(I);figure, imshow(I); 21 Фильтрация шумов for i=1:N; Для устранения импульсных выбросов используется медианная фильтрация. for j=1:M-2; I(i,j)=median(median(I(i,j:j+2))); end; end; figure, imshow(I); 22 Фильтр повышения резкости 'unsharp' Фильтр, повышающий резкость изображения, имеет маску, определяемую следующим выражением: a a 1 a 1 h a 1 a 5 a 1 a 1 a a 1 a где параметр a выбирается в пределах от 0 до 1. I=imread('z_2e75354a.jpg'); I=rgb2gray(I); h=fspecial('unsharp', 0.2); I2 = filter2(h,I)/255; figure subplot(1,2,1); imshow(I); subplot(1,2,2); imshow(I2); 23 Выравнивание гистограммы Функция histeq улучшает контраст изображения с помощью преобразования значений пикселей исходного изображения таким образом, чтобы гистограмма яркостей пикселей результирующего изображения приблизительно соответствовала некоторой предопределенной гистограмме. 24 Определение расположения номерного знака на изображении После проведения предварительной обработки изображения необходимо определить расположение номерного знака. Для этого на изображении ищутся так называемые связанные области пикселей. Для этого воспользуемся функцией BWLABEL – поиск объектов, входящей в группу функций Поиск объектов и вычисление их признаков, библиотеки Image Processing Toolbox. Функция L=bwlabel(BW, n) ищет на бинарном изображении BW связные области пикселов объектов и создает матрицу L, каждый элемент которой равен номеру объекта, которому принадлежит соответствующий пиксел изображения BW. Размер матрицы номеров объектов L равен размеру BW. Объекты нумеруются по порядку начиная с 1. Элементы, имеющие значение 1, относятся к первому объекту, имеющие значение 2 относятся ко второму объекту и т. д. Если элемент в матрице L равен 0, то это означает, что соответствующий пиксел исходного изображения относится к фону. 25 Функция BWLABEL Функция [L, num]=bwlabel(BW, n) дополнительно в параметр num возвращает количество объектов, найденных на изображении BW. Матрица L имеет формат представления данных double. I=imread('text1.png'); I =rgb2gray(I); bw = im2bw(I,0.9); imshow(bw) L = bwlabel(bw); %L figure,imshow(L == 1) 26 Визуализация найденного массива координат объектов feats=imfeature(L,'Centroid','Extent',8) ; Extent=zeros(num); CentX=zeros(num); CentY=zeros(num); for i=1:1:num; Extent(i)=feats(i).Extent; CentX(i)=feats(i).Centroid(1); CentY(i)=feats(i).Centroid(2); %text(CentX(i),CentY(i),'x','Color',[1 0 0]) text(CentX(i),CentY(i),num2str(i),'Colo r',[1 0 0]) end; 27 Выделение номерного знака на изображении I=imread('217670.jpg'); I =rgb2gray(I); bw = im2bw(I,0.6); imshow(bw) L = bwlabel(bw); %L figure,imshow(L == 4) 28 Распознавание символов После локализации номерного знака на изображении, выполняется второй этап – распознавание символов. Для этого воспользуемся рассмотренным ранее подходом - распознавание объектов на основе вычисления коэффициента корреляции. function [] = m01() L=imread('FIN.png'); figure, imshow(L); %LR = imrotate(L,1,'crop'); p=2; SH=100; L_t=L(1:100,1:200); figure, imshow(L_t); 29 Поиск по эталону Исследуемое изображение 800x219 89x135 Эталонное изображение 30 Поиск по эталону L=imread('FIN.png'); figure, imshow(L); N8=imread('M.png'); figure, imshow(n8); w=89; % ширина h = 135; % высота for x=1:800; L_t=L(y:y+h-1,x:x+w-1); n8 = rgb2gray(N8); k(x)=corr2(L_t,n8); %k end; figure, plot(k); title('\bfКоэффициент корреляции') xlabel('x'), ylabel('k(x)') % метки осей R=find(k==max(k)); R Функция, в которой происходит перемещение эталона по исходному изображению с шагом 1px. На каждом шаге, с помощью функции CORR2 определяется коэффициент корреляции. 31 Поиск по эталону Коэффициента корреляции между матрицами исследуемого изображения и соответствующего эталона Исследуемое изображение 800x219 89x135 Эталонно е изображе ние 32 Обнаружение лиц на изображении Проблема автоматического выделения объектов заданного класса на цифровых визуальных изображениях актуальна для широкого круга приложений вследствие того, что технические возможности регистрации визуальных изображений сейчас превосходят возможности их смысловой обработки. Ключевым примером такого типа является задача автоматического обнаружения лиц людей на электронных видеоизображениях – она необходимая для борьбы с терроризмом и преступностью, для общего контроля перемещения людей, для идентификации личности при банковских операциях в электронных сетях и для целого ряда смежных задач, где цена ошибочной идентификации высока. 33 Методы обнаружения лиц на изображениях За последние несколько лет было предложено множество алгоритмов обнаружения лиц, использующих различные подходы. Основные методы обнаружения лиц на изображениях можно разделить на четыре категории Методы, основанные на знаниях Методы на основе инвариантных свойств Методы на основе сравнения с шаблоном Методы на основе обучения 34 Библиотека компьютерного зрения OpenCV OpenCV (англ. Open Source Computer Vision Library, библиотека компьютерного зрения с открытым исходным кодом) — библиотека алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения с открытым кодом. Реализована на C/C++, также разрабатывается для Python, Ruby, Matlab, Lua и других языков. Может свободно использоваться в академических и коммерческих целях — распространяется в условиях лицензии BSD. Для использования библиотеки в среде .NET разработана кроссплатформенная оболочка Emgu CV. 35 Код программы using (Image<Bgr, Byte> image = new Image<Bgr, byte>("faces.jpg")) //Read the image as a Bgr 8-bit image using (Image<Gray, Byte> gray = image.Convert<Gray, Byte>()) //Convert it to Grayscale { //Read the HaarCascade object HaarCascade face = new HaarCascade("haarcascade_frontalface_alt2.xml"); //Detect the faces and store the locations as rectangle Emgu.CV.Rectangle<double>[][] facesDetected = image.DetectHaarCascade(face); 36 Результат выполнения программы 37 Литература 1. Сравнение алгоритмов выделения лиц http://dic.academic.ru/dic.nsf/ruwiki/686603 2. Вежневец В., Дегтярева А. Обнаружение и локализация лица на изображении http://masters.donntu.edu.ua/2005/kita/kompanets/library/int5.htm 3. Face Detection: Henry Chang and Ulises Robles http://www-csstudents.stanford.edu/~robles/ee368/main.html 4. OpenCV – Википедия. – URL: http://ru.wikipedia.org/wiki/OpenCV 5. Main Page - Emgu CV: OpenCV in .NET (C#, VB, C++ and more). – URL: http://www.emgu.com/wiki/index.php/Main_Page 6. Face Detection: Henry Chang and Ulises Robles. – URL: http://www-csstudents.stanford.edu/~robles/ee368/main.html 7. Лекции МГУ. – URL: http://www.compvision.ru/index.php/%D0%9B%D0%B5%D0%BA%D1%86%D0 %B8%D0%B8_%D0%9C%D0%93%D0%A3 8. www.cse.iitk.ac.in/users/vision/.../OReilly%20Learning%20OpenCV.pdf 9. Welcome to the homepage of Computer Vision and Video Processing SIG , IIT Kanpur. – URL: http://www.cse.iitk.ac.in/users/vision/ 38