Проектирование системы по работе с изображениями, позволяющей находить лицо человека и распознавать эмоцию на нем

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    2,17 Мб
  • Опубликовано:
    2017-06-07
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Проектирование системы по работе с изображениями, позволяющей находить лицо человека и распознавать эмоцию на нем

Определения и сокращения


В настоящей пояснительной записке применяются следующие определения и сокращения:

ОС - операционная система.

ПС - программное средство.

Свертка - перемножение изображения с матрицей.

Матрица свертки - матрица коэффициентов, которая умножается на значения пикселей изображения для получения требуемого результата.

Графические артефакты - нарушения целостности изображения в виде черных или белых пикселей.

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

RGB - цветовая модель описывающая способ кодирования цвета. Цвета в этой модели красный, зеленый, синий.

MVS - Microsoft Visual Studio.

Альфа-канал - дополнительный фон изображения, позволяющий при наложении создать прозрачность.

Введение


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

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

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

Целью данного дипломного проекта является разработка модуля обработки изображения и поиску на нём лиц человека с последующим определением эмоции на них.

Для достижения поставленной цели были определены следующие задачи:

-       сравнение и анализ работы алгоритмов обработки изображений по устранению помех, мешающих определять круглые и овальные объекты на изображении;

-       сравнение и анализ работы алгоритмов по поиску лиц человека;

-       сравнение и анализ работы алгоритмов поиска ключевых точек на лице;

-       сравнение и анализ работы алгоритмов по определению эмоций.

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

1.      Анализ прототипов и формирование требований к проектируемому программному средству

 

1.1    Обзор методов и алгоритмов по устранению помех на изображениях


Далее будут рассмотрены различные методы позволяющие улучшить качество изображения.

.1.1 Медианный фильтр

Медианный фильтр - вид фильтра, широко использующийся в обработке изображений для уменьшения уровня шума. Позволяет убрать из изображения импульсный шум. На рисунке 1.1 показан пример импульсного шума.

Рисунок 1.1 - Изображение с импульсным шумом

программа алгоритм изображение лицо

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

Перед работой алгоритм создает копию изображения, в которой заменяет пиксели на новые. Работает алгоритм с оригинальным изображением.

Скользящее окно представлено в виде матрицы размера N на N где каждая ячейка матрицы представляет собой пиксель на изображении.

Когда скользящее окно переходит к новому пикселю оно берет значения яркостей всех пикселей попавших в окно и заносит их в лист. Затем лист сортируется и элемент, находящийся в центре окна заменяется средним элементом из списка [1].

Для изображений может использоваться окно различных размеров. Чем больше размер окна был выбран, тем больше способность медианного фильтра к устранению ума и размытию изображения. На рисунке 1.2 показан пример работы медианного фильтра.

Рисунок 1.2 - Результат работы медианного фильтра

К достоинствам работы медианного фильтра можно отнести следующие пункты:

-       медианный фильтр не искажает линейные контуры объектов;

-       малые затраты времени на обработку изображения;

-       простая программная реализация алгоритма;

-       показывает хороший результат подавления одиночных импульсных

помех.

К недостаткам работы медианного фильтра можно отнести следующие пункты:

-       плохое подавления гаусового шума;

-       размывает изображении;

-       сглаживает острые края на изображении.

.1.2 Фильтр улучшения резкости

Фильтр улучшения резкости - фильтр, производящий свертку изображения с квадратной матрицей, где элементами матрицы являются числовые коэффициенты, и элемент в центре матрицы имеет наивысшее значение среди остальных элементов [2].

Пример матрицы для улучшения резкости:

М = , (1.1)

где М - матрица размером 3х3.

При свертке изображения с матрицей М значения пикселей имеющих высокую яркость станут выше, тем самым повысив их резкость. Результат работы фильтра резкости показан на рисунке 1.3.

Рисунок 1.3 - Пример использования фильтра резкости

К достоинствам фильтра резкости можно отнести следующие пункты:

-       легкая реализация алгоритма;

-       хорошее выделение границ у объектов.

К недостаткам фильтра резкости можно отнести следующие пункты:

-       понижает качество изображения;

-       генерирует импульсный шум.

.1.3 Гамма-коррекция

Гамма коррекция - нелинейная коррекция изображения. Исправляет недостаточную контрастность изображения. Пример работы фильтра Гамма коррекции показан на рисунке 1.4.

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

, (1.2)

где I - яркость пикселя на экране дисплея;

V - численное значение цвета;

L - показатель гамма коррекции.

К достоинствам Гамма коррекции можно отнести следующие пункты:

-       простота реализации алгоритма;

-       осветление сильно затемненных областей.

Рисунок 1.4 - Гамма коррекция с коэффициентами от 2 до 0.33

Единственный недостаток у фильтра Гамма коррекции в том что высокие или низкие значения L приводят к потере качества изображения.

 

1.2    Обзор методов и алгоритмов по выделению границ у объектов


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

.2.1 Фильтр Робертса

Фильтр Робертса - алгоритм, применение которого позволяет выделить границы у всех объектов на изображении.

Вычисляет сумму квадратов разницы между диагонально смежными пикселями. Получить сумму можно при помощи свертки пикселя с матрицами А и В.

Свертка изображения с матрицами А и В даст изображение обработанное фильтром Робертса.

А = . (1.3)

В = . (1.4)

Позиции в матрице представляют позиции х и у в системе координат от (х, у) до (х+1, у+1).

Каждый пиксель итогового изображения после свертки с матрицей А будет представлен в виде пикселя S.

, (1.5)

где p(x,y) - пиксель с координатами (х, у);

S1 - результирующий пиксель полученный при помощи свертки

изображения с матрицей А.

, (1.6)

где S2 - результирующий пиксель полученный при помощи свертки

изображения с матрицей В.

, (1.7)

где S - новый пиксель изображения.

Пример работы фильтра Робертса показан на рисунке 1.5.

Рисунок 1.5 - Изображение обработанное фильтром Робертса

К достоинствам фильтра Робертса можно отнести следующие пункты:

-       фильтр показывает хорошую скорость обработки изображения;

-       простота реализация алгоритма.

К недостаткам фильтра Робертса можно отнести следующие пункты:

-       при наличии шума на изображении фильтр работает некорректно;

-       иногда линии границ получаются слишком тонкие.

.2.2 Фильтр Превитта

Фильтр Превитта - фильтр, используемый для выделения границ у объектов.

Вычисляет направление границы при помощи свертки изображения с матрицами P1 и P2 [3].

, (1.8)

, (1.9)

где P1, P2 - матрицы размера 3х3.

Матрицы описывают шаблон горизонтальной и вертикальной границы на изображении.

При свертке пикселя с матрицей P1 результатом будет отклик на вертикальную границу.

, (1.10)

где О1 - показатель характеризующий вертикальную границу.

При свертке пикселя с матрицей P2 результатом будет отклик на вертикальную границу.

, (1.11)

где О2 - показатель характеризующий горизонтальную границу.

Пиксель результирующего изображения будет вычисляться по следующей формуле:

, (1.12)

где R - пиксель результирующего изображения.

Рисунок 1.6 - Изображение обработанное фильтром Превитта

К достоинствам фильтра Превитта можно отнести следующие пункты:

-       простота реализации Алгоритма;

-       быстрая скорость работы;

-       более толстые границы по сравнению с фильтром Робертса.

К недостаткам фильтра Превитта можно отнести следующие пункты:

-       работает не для всех изображений;

-       высокая чувствительность по вертикали и горизонтали;

-       потеря данных.

1.3    Обзор методов и алгоритмов по поиску человеческих лиц.


.3.1 Метод гибкого сравнения на графах

Алгоритм метода сводится к эластичному сопоставлению графов, описывающих изображения лиц. Лица представлены в виде графов со взвешенными вершинами и ребрами. На этапе распознавания один из графов эталонный - остается неизменным, в то время как другой деформируется с целью наилучшей подгонки к первому [4].

В подобных системах распознавания графы могут представлять собой как прямоугольную решетку, так и структуру, образованную характерными (антропометрическими) точками лица [5]. На рисунках 1.7 и 1.8 отображены решетка графов и граф построеный по характертным точкам лица.

Рисунок 1.7 - Решетка графов

Рисунок 1.8 - Граф описывающий лицо

В вершинах графа вычисляются значения признаков, чаще всего используют комплексные значения фильтров Габора (см. рисунок 1.9) или их упорядоченных наборов - Габоровских вейвлет которые вычисляются в некоторой локальной области вершины графа локально, путем свертки значений яркости пикселей с фильтрами Габора (см. рисунок 1.10).

Для того что бы описать лицо решетка графов деформируется (см. рисунок 1.11). Деформация происходит путем смещения вершин на некоторое расстояние, при этом разница между значениями признаков должна быть минимальна. Данная операция проделывается для всех вершин, пока не будет достигнуто наименьшее суммарное различие между признаками деформируемого и эталонного графов.

Рисунок 1.9 - Набор фильтров Габор

Рисунок 1.10 - Свертка изображения лица с двумя фильтрами Габора

Ребра графа взвешиваются расстояниями между смежными вершинами. Различие (расстояние, дискриминационная характеристика) между двумя графами вычисляется при помощи некоторой ценовой функции деформации, учитывающей как различие между значениями признаков, вычисленными в вершинах, так и степень деформации ребер графа. Деформация графа происходит путем смещения каждой из его вершин на некоторое расстояние в определённых направлениях относительно ее исходного местоположения и выбора такой ее позиции, при которой разница между значениями признаков (откликов фильтров Габора) в вершине деформируемого графа и соответствующей ей вершине эталонного графа будет минимальной. Данная операция выполняется поочередно для всех вершин графа до тех пор, пока не будет достигнуто наименьшее суммарное различие между признаками деформируемого и эталонного графов. Значение ценовой функции деформации при таком положении деформируемого графа и будет являться мерой различия между входным изображением лица и эталонным графом. Данная «релаксационная» процедура деформации должна выполняться для всех эталонных лиц, заложенных в базу данных системы.

Результат распознавания системы - эталон с наилучшим значением ценовой функции деформации.

Рисунок 1.11 - Деформация решетки графов

В отдельных публикациях указывается 95-97%-ая эффективность распознавания даже при наличии различных эмоциональных выражениях и изменении ракурса лица до 15 градусов. Однако разработчики систем эластичного сравнения на графах ссылаются на высокую вычислительную стоимость данного подхода. Например, для сравнения входного изображения лица с 87 эталонными тратилось приблизительно 25 секунд при работе на параллельной ЭВМ с 23 транспьютерами. В других публикациях по данной тематике время либо не указывается, либо говорится, что оно велико.

К достоинствам метода сравнения на гибких графах можно отнести следующие пункты:

-       высокая эффективность распознавания;

-       распознает лица с наклоном до 15 градусов.

К недостаткам можно перечислить следующие:

-       высокая вычислительная сложность;

-       низкая технологичность при запоминании новых эталонов;

-       линейная зависимость времени работы от размера базы данных лиц.

.3.2 Нейронные сети

В настоящее время существует около десятка разновидности нейронных сетей (НС). Одним из самых широко используемых вариантов являться сеть, построенная на многослойном персептроне, которая позволяет классифицировать поданное на вход изображение в соответствии с предварительной настройкой сети.

Обучаются нейронные сети на наборе обучающих примеров. Суть обучения сводится к настройке весов межнейронных связей в процессе решения оптимизационной задачи методом градиентного спуска. В процессе обучения НС происходит автоматическое извлечение ключевых признаков, определение их важности и построение взаимосвязей между ними. Предполагается, что обученная НС сможет применить опыт, полученный в процессе обучения, на неизвестные образы за счет обобщающих способностей.

Наилучшие результаты в области распознавания лиц (по результатам анализа публикаций) показала Convolutional Neural Network или сверточная нейронная сеть [6-8] которая является логическим развитием идей таких архитектур НС как когнитрона и неокогнитрона. Успех обусловлен возможностью учета двумерной топологии изображения, в отличие от многослойного персептрона.

Отличительными особенностями СНС являются локальные рецепторные поля (обеспечивают локальную двумерную связность нейронов), общие веса (обеспечивают детектирование некоторых черт в любом месте изображения) и иерархическая организация с пространственными сэмплингом (spatial subsampling). Благодаря этим нововведениям СНС обеспечивает частичную устойчивость к изменениям масштаба, смещениям, поворотам, смене ракурса и прочим искажениям.

Лучшие результаты по распознаванию лиц показывает сверточная нейронная сеть.

Особенность СНС в наличии у неё локальных рецепторов поля, общих весов и иерархическая организация. Эти возможности предоставляют нейронной сети устойчивость к изменениям масштаба, смещению, повороту, ракурсу.

К достоинствам СНС можно отнести следующие пункты:

-       Устойчивость нейронной сети к изменениям;

-       Высокий уровень точности.

К недостаткам СНС можно отнести следующие пункты:

-       Добавление новых данных требует переобучения сети;

-       Трудно выбрать архитектуру сети;

-       Математические проблемы.

.3.3 Active Appearance Models

Активные модели внешнего вида (Active Appearance Models, AAM) -это статистические модели изображений, которые путем разного рода деформаций могут быть подогнаны под реальное изображение. Данный тип моделей в двумерном варианте был предложен Тимом Кутсом и Крисом Тейлором в 1998 году [9-10].

Первоначально активные модели внешнего вида применялись для оценки параметров изображений лиц.
Активная модель внешнего вида содержит два типа параметров: параметры, связанные с формой (параметры формы), и параметры, связанные со статистической моделью пикселей изображения или текстурой (параметры внешнего вида).

Перед использованием модель должна быть обучена на множестве заранее размеченных изображений. Разметка изображений производится вручную (см. рисунок 1.12). Каждая метка имеет свой номер и определяет характерную точку, которую должна будет находить модель во время адаптации к новому изображению.

Рисунок 1.12 - Разметка изображения лица из 68 точек, образующих форму AAM

Процедура обучения AAM начинается с нормализации форм на размеченных изображениях с целью компенсации различий в масштабе, наклоне и смещении (см. рисунки 1.13-14). Для этого используется так называемый обобщенный Прокрустов анализ.

Рисунок 1.13 - Координаты точек формы лица до и после нормализации

Из всего множества нормированных точек затем выделяются главные компоненты с использованием метода PCA.

Рисунок 1.14 - Модель формы AAM состоит из триангуляционной решетки s0 и линейной комбинации смещений si относительно s0

Далее из пикселей внутри треугольников, образуемых точками формы, формируется матрица, такая что, каждый ее столбец содержит значения пикселей соответствующей текстуры. Стоит отметить, что используемые для обучения текстуры могут быть как одноканальными (градации серого), так и многоканальными (например, пространство цветов RGB или другое). В случае многоканальных текстур векторы пикселей формируются отдельно по каждому из каналов, а потом выполняется их конкатенация. После нахождения главных компонент матрицы текстур, модель AAM считается обученной (см. рисунок 1.15).

Рисунок 1.15 - Конкретизации AAM

С помощью AAM можно моделировать изображения объектов, подверженных как жесткой, так и нежесткой деформации. ААМ состоит из набора параметров, часть которых представляют форму лица, остальные задают его текстуру. Под деформации обычно понимают геометрическое преобразование в виде композиции переноса, поворота и масштабирования. При решении задачи локализации лица на изображении выполняется поиск параметров (расположение, форма, текстура) ААМ, которые представляют синтезируемое изображение, наиболее близкое к наблюдаемому. По степени близости AAM подгоняемому изображению принимается решение - есть лицо или нет (см. рисунок 1.16).

Рисунок 1.16 - Подгонка модели на конкретное изображение

.3.4 Алгоритм Виола-джонса

Метод Виолы Джонса - алгоритм, позволяющий обнаруживать объекты на изображениях в реальном времени. Его предложили Паул Виола и Майкл Джонс в 2001 году. Хотя алгоритм может распознавать различные классы изображений, основной задачей при его создании было обнаружение лиц [11-12].

Алгоритм находит лица с высокой точностью и низким количеством ложных срабатываний.

Основные принципы, на которых основан метод:

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

-       используются признаки Хаара, с помощью которых происходит поиск нужного объекта (в данном контексте, лица и его черт).

-       используется бустинг (от англ. boost - улучшение, усиление) для выбора наиболее подходящих признаков для искомого объекта на данной части изображения.

-       все признаки поступают на вход классификатора, который даёт результат «верно» либо «ложь».

-       используются каскады признаков для быстрого отбрасывания окон, где не найдено лицо.

Обучение классификаторов идет очень медленно, но результаты поиска лица очень быстры. Виола-Джонс является одним из лучших по соотношению показателей эффективность распознавания/скорость работы. Также этот детектор обладает крайне низкой вероятностью ложного обнаружения лица. Алгоритм даже хорошо работает и распознает черты лица под небольшим углом, примерно до тридцати градусов. При угле наклона больше тридцати градусов процент обнаружений резко падает. И это не позволяет в стандартной реализации детектировать повернутое лицо человека под произвольным углом, что в значительной мере затрудняет или делает невозможным использование алгоритма в современных производственных системах с учетом их растущих потребностей.

Данный метод в общем виде ищет лица и черты лица по общему принципу сканирующего окна:

-       имеется изображение, на котором есть искомые объекты. Оно представлено двумерной матрицей пикселей размером w*h, в которой каждый пиксель имеет значение:

а) от 0 до 255, если это черно белое изображение (занимаемая память равна одному байту).

б) от 0 до 2553, если это цветное изображение (компоненты R, G, B).

-       в результате своей работы, алгоритм должен определить лица и их черты и пометить их.

-       поиск осуществляется в активной области изображения прямоугольными признаками, с помощью которых и описывается найденное лицо и его черты по формуле (1.13):

 (1.13)

где x, y - координаты центра i-го прямоугольника;- ширина;- высота;- угол наклона прямоугольника к вертикальной оси изображения.

Иными словами, применительно к рисункам и фотографиям используется подход на основе сканирующего окна (scanning window): сканируется изображение окном поиска (так называемое, окно сканирования), а затем применяется классификатор к каждому положению. Система обучения и выбора наиболее значимых признаков полностью автоматизирована и не требует вмешательства человека, поэтому данный подход работает быстро.

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

Для того, чтобы производить какие-либо действия с данными, используется интегральное представление изображений в методе Виолы-Джонса. Такое представление используется часто и в других методах, к примеру, в вейвлет-преобразованиях, SURF и многих других разобранных алгоритмах. Интегральное представление позволяет быстро рассчитывать суммарную яркость произвольного прямоугольника на данном изображении, причем какой бы прямоугольник не был, время расчета неизменно.

Интегральное представление изображения - это матрица, совпадающая по размерам с исходным изображением. В каждом элементе ее хранится сумма интенсивностей всех пикселей, находящихся левее и выше данного элемента. Элементы матрицы рассчитываются по следующей формуле:

 (1.14)

где I(i,j) - яркость пикселя исходного изображения.

Каждый элемент матрицы L(x,y) представляет собой сумму пикселей в прямоугольнике от (0,0) до (x,y), т.е. значение каждого пикселя (x,y) равно сумме значений всех пикселов левее и выше данного пикселя (x,y). Расчет матрицы занимает линейное время, пропорциональное числу пикселей в изображении, поэтому интегральное изображение просчитывается за один проход.

Расчет матрицы производится по формуле 1.15:

 (1.15)

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

Пусть в прямоугольнике ABCD есть интересующий нас объект D (см. Рисунок 1.17):

Рисунок 1.17 - Выделенная область D на некоторой области изображения

Из рисунка понятно, что сумму внутри прямоугольника можно выразить через суммы и разности смежных прямоугольников по следующей формуле:

S(D ) = L(В) + L(D) - L(С) - L(А). (1.16)

В стандартном методе Виолы - Джонса используются прямоугольные признаки (см. рисунок 1.18), они называются примитивами Хаара.

Рисунок 1.18 - Признаки Хаара

Вычисляемым значением такого признака будет формула (1.17):

 (1.17)

где X - сумма значений яркостей точек закрываемых светлой частью признака;- сумма значений яркостей точек закрываемых темной частью признака.

Для их вычисления используется понятие интегрального изображения, рассмотренного выше. Признаки Хаара дают точечное значение перепада яркости по оси X и Y соответственно.

Алгоритм сканирования окна с признаками выглядит так:

-       есть исследуемое изображение, выбрано окно сканирования, выбраны используемые признаки;

-       далее окно сканирования начинает последовательно двигаться по изображению с шагом в 1 ячейку окна (допустим, размер самого окна есть 24х24 ячейки);

-       при сканировании изображения в каждом окне вычисляется приблизительно 200 000 вариантов расположения признаков, за счет изменения масштаба признаков и их положения в окне сканирования;

-       сканирование производится последовательно для различных масштабов;

-       масштабируется не само изображение, а сканирующее окно (изменяется размер ячейки);

-       все найденные признаки попадают к классификатору, который решает, является ли найденное изображение лицом.

В контексте алгоритма, имеется множество объектов (изображений), разделённых некоторым образом на классы. Задано конечное множество изображений, для которых известно, к какому классу они относятся (к примеру, это может быть класс «фронтальное положение носа»). Это множество называется обучающей выборкой. Классовая принадлежность остальных объектов не известна. Требуется построить алгоритм, способный классифицировать произвольный объект из исходного множества.

Классифицировать объект - значит, указать номер (или наименование класса), к которому относится данный объект.

Классификация объекта - номер или наименование класса, выдаваемые алгоритмом классификации в результате его применения к данному конкретному объекту.

Классификатор(classifier) - в задачах классификации это аппроксимирующая функция, выносящая решение, к какому именно классу данный объект принадлежит.

Обучающая выборка - конечное число данных.

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

Постановка классификации выглядит следующим образом:
Есть X - множество, в котором хранится описание объектов, Y - конечное множество номеров, принадлежащих классам. Между ними есть зависимость - отображение Y*: X => Y. Обучающая выборка представлена Xm = {(x1,y1), …, (xm,ym)}. Конструируется функция f от вектора признаков X, которая выдает ответ для любого возможного наблюдения X и способна классифицировать объект x∈X. Данное простое правило должно хорошо работать и на новых данных.

Для решения проблемы данного, столь сложного обучения существует технология бустинга.

Бустинг - комплекс методов, способствующих повышению точности аналитических моделей. Эффективная модель, допускающая мало ошибок классификации, называется «сильной». «Слабая» же, напротив, не позволяет надежно разделять классы или давать точные предсказания, делает в работе большое количество ошибок. Поэтому бустинг (от англ. boosting - повышение, усиление, улучшение) означает дословно «усиление» «слабых» моделей - это процедура последовательного построения композиции алгоритмов машинного обучения, когда каждый следующий алгоритм стремится компенсировать недостатки композиции всех предыдущих алгоритмов.

Идея бустинга была предложена Робертом Шапиром (Schapire) в конце 90-х годов когда надо было найти решение вопроса о том, чтобы имея множество плохих (незначительно отличающихся от случайных) алгоритмов обучения, получить один хороший. В основе такой идеи лежит построение цепочки (ансамбля) классификаторов , который называется каскадом, каждый из которых (кроме первого) обучается на ошибках предыдущего. Например, один из первых алгоритмов бустинга Boost1 использовал каскад из 3-х моделей, первая из которых обучалась на всем наборе данных, вторая - на выборке примеров, в половине из которых первая дала правильные ответы, а третья - на примерах, где «ответы» первых двух разошлись. Таким образом, имеет место последовательная обработка примеров каскадом классификаторов, причем так, что задача для каждого последующего становится труднее. Результат определяется путем простого голосования: пример относится к тому классу, который выдан большинством моделей каскада.

Бустинг представляет собой жадный алгоритм построения композиции алгоритмов (greedy algorithm) - это алгоритм, который на каждом шагу делает локально наилучший выбор в надежде, что итоговое решение будет оптимальным. Бустинг над решающими деревьями считается одним из наиболее эффективных методов с точки зрения качества классификации. Во многих экспериментах наблюдалось практически неограниченное уменьшение частоты ошибок на независимой тестовой выборке по мере наращивания композиции. Более того, качество на тестовой выборке часто продолжало улучшаться даже после достижения безошибочного распознавания всей обучающей выборки. Это перевернуло существовавшие долгое время представления о том, что для повышения обобщающей способности необходимо ограничивать сложность алгоритмов. На примере бустинга стало понятно, что хорошим качеством могут обладать сколь угодно сложные композиции, если их правильно настраивать.

К достоинствам алгоритма Виола-Джонса можно отнести следующие пункты:

-       очень быстрая скорость работы;

-       высокая эффективность;

-       низкая вероятность обнаружения ложного лица;

-       поиск лиц с наклоном до 30 градусов.

К недостаткам алгоритма Виола-Джонса можно отнести следующие пункты:

-       медленная скорость обучения классификаторов;

-       невозможен поиск лица при наклоне выше 40 градусов.

1.4    Обзор методов и алгоритмов по поиску ключевых точек на лице


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

Углы определяются за счёт анализа яркости соседних пикселей. Углы бывают разного типа L,Y,T,X и их производные. Каждый детектор реагирует на них по-разному [13].

.4.1 Детектор Харриса

Детектор Харриса - оптимальный детектор L-углов работает по принципу детектора Моравеца но дополнительно рассматривает производные яркости изображения для анализа изменения яркости по нескольким направлениям (см. рисунок 1.19) [14].

К достоинствам детектора Хариса можно отнести следующие пункты:

-       инвариантен к поворотам;

-       инвариантен к изменениям интенсивности.

К недостаткам детектора Хариса можно отнести следующие пункты:

-       чувствительность к шуму;

-       зависимость от масштаба.

.4.2 Детектор Фростнера

Детектор Фростнера - более сложная в вычислительном плане реализация детектора Харриса. Собственные значения вычисляются явно.

Достоинство детектора Фростнера в поиске круговых точек вместе с углами. Недостаток детектора Фростнера в его сложности.

Рисунок 1.19 - Пример работы детектора Хариса

 

1.5    Формирование требований к проектируемому программному средству


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

.5.1 Назначение разработки

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

Конечными пользователями являются пользователи персонального компьютера без специального образования.

1.5.2 Требование к данным

В качестве исходных данных приложение должно принимать изображения размером не более 100МБ и ограниченной в размере до 10000х10000 пикселей.

Приложение должно работать с изображениями следующих форматов:

-       JPEG, JPG;

-       BMP;

-       GIF;

-       PNG.

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

.5.3 Состав выполняемых функций

Основные функции программного средства:

-       предобработка изображения;

-       классификация данных;

-       определение эмоции;

-       поиск человеческих лиц на изображении;

-       поиск ключевых точек на лице;

-       преобразование изображения в программные данные;

-       отображение результатов работы на дисплей;

-       сохранение качества исходного изображения.

.5.4 Требования к технической совместимости

Техническая часть ПК должна включать:

-       не менее 512МБ оперативной памяти;

-       жесткий диск с не менее 55МБ свободного места;

-       видеоадаптер;

-       мышь.

1.5.5 Требования к информационной и программной совместимости

Программа должна работать автономно под управлением ОС Windows версии 7 и выше с установленным .NET Framework версии 4.5 и выше.

2.      Анализ требований к пс и разработка функциональных требований

 

.1      Диаграмма прецедентов ПС


На рисунке 2.1 изображена диаграмма прецедентов разрабатываемого программного средства. Основным и единственным действующим лицом является пользователь.

Так же из диаграммы видно, что функции ПС можно разделить на четыре основные категории:

-       фильтрация или же обработка изображения;

-       поиск лица на изображении;

-       определение ключевых точек на лице;

-       определение эмоции на лице.

Рисунок 2.1 - Диаграмма прецедентов ПС

2.2    Спецификация функциональных требований


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

.2.1  
Предобработка изображения

Спецификация данной функции представлена далее:

-       перед запуском распознавания лица или эмоций пользователь может произвести предобработку изображения на удаление шума и восстановление контрастности изображения, если это необходимо;

-       восстановление контрастности не должно портить границы объектов на изображении;

-       обработка изображения при помощи фильтров не должна создавать графические артефакты;

-       при использовании фильтров больше одного раза программа сообщает об этом в виде сообщения;

-       скорость работы не должна превышать более 0.2 секунды;

-       не допускается генерация исключительных ситуаций;

-       модуль по предобработке изображения должен быть представлен отдельной библиотекой платформы .NET в виде файла с расширением .dll;

-       если контейнер с изображением пустой, отображается сообщение с ошибкой.

2.2.2 Классификация данных

Спецификация данной функции представлена далее:

-       приложение классифицирует принадлежность ключевых точек к классам по их характеристикам;

-       точность классификации должна быть выше 80% для изображений высокого качества (разрешение выше 1000х768) и выше 60% для изображений низкого качества (разрешение ниже 1000х768);

-       классификация происходит по следующим категориям:

1)      рот;

2)      глаза;

)        вне лица.

-       если классификация происходит без найденного лица, отображается сообщение с ошибкой;

-       если контейнер с изображением пустой, отображается сообщение с ошибкой.

-       если ключевые точки не были найдены, отображается сообщение с ошибкой;

-       ключевые точки сохраняются в отдельный класс.

2.2.3 Определение эмоции

Спецификация данной функции представлена далее:

-       классификация происходит по следующим категориям:

1) Печаль;

2) Радость;

3) Нейтрально;

4) Злость.

-       результат эмоции отображается под лицом человека в виде текста с шрифтом Times New Roman и размером 12;

-       при отсутствии результатов поиска эмоции вернуть в качестве результата исходное изображение;

-       модуль по определению эмоций должен быть представлен отдельной библиотекой платформы .NET в виде файла с расширением .dll;

-       класс отвечающий за определение эмоций должен наследоваться от интерфейса IEmotionReсognition;

-       если контейнер с изображением пустой, отображается сообщение с ошибкой.

2.2.4 Поиск человеческих лиц на изображении

Спецификация данной функции представлена далее:

-       лицо человека должно занимать более 15% изображения для того что бы оно было найдено;

-       данные о найденных лицах хранятся в отдельном классе;

-       при первом отсутствии результатов поиска, алгоритм выполняется ещё раз, при этом окно для поиска лиц уменьшается на 30%;

-       при втором отсутствии результатов поиска вернуть пустой результат;

-       алгоритм не должен находить лица, принадлежащие не человеку;

-       пустой результат работы алгоритма приводит к появлению сообщения с ошибкой;

-       если контейнер с изображением пустой, отображается сообщение с ошибкой;

-       результат работы алгоритма отображается на изображении в виде прямоугольника вокруг области лица;

-       результат работы отображается в контейнере для копии основного изображения.

2.2.5 Поиск ключевых точек на лице

Спецификация данной функции представлена далее:

-       данные ключевых точек сохранятся в виде отдельного класса;

-       поиск ключевых точек производится внутри прямоугольной области отмеченной приложением как лицо человека;

-       пустой результат этой функции должен приводить к появлению сообщения с ошибкой;

-       если контейнер с изображением пустой, отображается сообщение с ошибкой;

-       ключевые точки на изображении не отображаются;

-       после выполнения работы алгоритма выводится сообщение о завершении работы.

2.2.6 Преобразование изображение в программные данные

Спецификация данной функции представлена далее:

-       после загрузки изображения приложение преобразует его в матрицу, каждый элемент которой является пикселем изображения в той же координате что и номер элемента матрицы;

-       матрица пикселей хранится в отдельном классе;

-       матрицу можно преобразовать обратно в изображение;

-       при сохранении изображения в виде матрицы пикселей происходит расчет интегрального изображения;

-       оригинальное изображение сохраняется как новое изображение в локальную переменную;

-       оригинальное изображение можно восстановить через локальную копию.

2.2.7 Отображение результатов работы на дисплей

Спецификация данной функции представлена далее

-       результат работы приложения отображается на интерфейсе пользователя рядом с исходным изображением;

-       отображается копия результирующего изображения с разрешением равным разрешению окна для результатов;

-       изображение в окне результата можно сохранить при помощи нажатии правой кнопки мыши и выбора пункта «Сохранить как».

2.2.8 Сохранение качества исходного изображения

Спецификация данной функции представлена далее:

-       результирующее изображение имеет разрешение равное разрешению оригинального изображения;

-       результирующее изображение не содержит графических артефактов после работы алгоритмов обработки;

-       результирующее изображение имеет цветовую палитру такую же как у оригинального изображения;

-       результирующее изображение после успешной работы алгоритма по распознаванию лица имеет некоторую обозначенную прямоугольную область.

3.     
Проектирование программного средства


ПС разработанное в рамках этого дипломного проекта состоит из нескольких основных модулей:

)        Модуль обработки изображения - модуль реализующий алгоритмы и методы по обработке изображений. Позволяет проводить изменение изображения для более точной работы алгоритмов по получению и обработке информации из изображения. К изменению изображения можно отнести следующие способы:

а) Повышение толщины границ объектов на изображении;

б) Изменение изображение с цветного на черно белое;

в) Изменение изображения на его негатив;

г) Свертка изображения с различными фильтрами для удаления артефактов.

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

Метод Apply позволяет проводить изменение изображение в зависимости от реализации фильтра, метод возвращает новое изображение, полученное при модификации входного изображения. Ниже представлен пример исходного кода одного из фильтров и диаграмма классов (см. рисунок 3.1).

public Image Apply(Image img)

{image = new Image(img);m = new Matrix(_matrix);(int i = 1; i < image.Height - 1; i++)

{(int j = 1; j < image.Width - 1; j++)

{pixel = image[i, j];.Blue = Calculate(i, j, m, (x, y) => image[x, y].Blue);.Green = Calculate(i, j, m, (x, y) => image[x, y].Green);.Red = Calculate(i, j, m, (x, y) => image[x, y].Red);[i, j] = pixel;

}

}image; }

2)      Модуль поиска лиц на изображении - содержит методы для поиска человеческих лиц на изображениях лиц человека. В данном дипломном проекте в качестве механизма по обнаружению лиц используется алгоритм Виола-Джонса. Для эффективной работы алгоритма Виола-Джонса требуется работа с интегральным видом исходного изображения, использование признаков Хаара и использование специального классификатора способного определять какая часть тела попала в скользящее окно.

Для хранения изображения используется класс Image который позволяет хранить изображение в виде массива байт и предоставляет различные методы по работе с изображением.

Метод Apply позволяет применить фильтр к изображению.

Метод ComputeIntegralImage позволяет рассчитать интегральный вид изображения.

Метод GetImage преобразует массив байт обратно в изображение.

Метод GetValue возвращает значение интегрального изображения в точке с координатами x и у.

Рисунок 3.1 - Диаграмма классов модуля фильтрации

Пример исходного кода по преобразованию изображения в массив байт.

public Bitmap GetImage()

{bitmap = Pixels.GetRange(0, Width * Height).SelectMany(p => new[] { p.Blue, p.Green, p.Red }).ToArray();bmp = new Bitmap(Width, Height, PixelFormat.Format24bppRgb);data = bmp.LockBits(Rectangle(0, 0, Width, Height),.ReadWrite,.Format24bppRgb);.Copy(bitmap, 0, data.Scan0, bitmap.Length);.UnlockBits(data);bmp;

}

Использование интегрального изображения позволяет обеспечить большую скорость обработки информации нужной для работы признаков Хаара. Интегральное изображение так же используется для определения глаз и рта при помощи признаков Хаара.

Признаки Хаара в основном представлены как прямоугольные области, разбитые на две, три или четыре секции обозначенные черными и белыми цветами. Для удобства расчета значения признака Хаара на некоторой области изображения существует несколько классов для работы с ними:

ThreeHorizontalRectanglesFeature - класс описывающий все признаки Хаара представленные в виде трех секций идущих горизонтально друг за другом. Шаблон этого класса представлен на рисунке 3.2.

Рисунок 3.2 - Шаблон для тройного горизонтального признака Хаара

 - класс описывающий все признаки Хаара представленные в виде трех секций идущих вертикально друг за другом. Шаблон этого класса представлен на рисунке 3.3.

Рисунок 3.3 - Шаблон для тройного вертикального признака Хаара

TwoHorizontalRectanglesFeature - класс описывающий все признаки Хаара представленные в виде двух секций идущих горизонтально друг за другом. Шаблон этого класса представлен на рисунке 3.4.

Рисунок 3.4 - Шаблон для двойного горизонтального признака Хаара

 - класс описывающий все признаки Хаара представленные в виде двух секций идущих вертикально друг за другом. Шаблон этого класса представлен на рисунке ХХХ.

Рисунок 3.5 - Шаблон для двойного вертикального признака Хаара

FourRectanglesFeature - класс описывающий все признаки Хаара представленные в виде четырех секций идущих горизонтально друг за другом. Шаблон этого класса представлен на рисунке 3.6.

Все классы описывающие признаки Хаара наследуют интерфейс IFeature который обеспечивает способность вызвать метод ComputeValue для вычисления значения признака Хаара.

Метод ComputeValue принимает параметры позволяющие задать начальную точку координат исследуемой области, изменить размер признака Хаара и изображение, на котором будет проводиться работа алгоритма. Пример исходного кода алгоритма для класса FourRectanglesFeature представлен ниже.

Рисунок 3.6 - Шаблон для квадратного признака Хаара

public int ComputeValue(Point WinTopLeft, float SizeRatio, Image Image)

{scaledFrame = this.Frame.Scale(SizeRatio);topLeft = scaledFrame.TopLeft().NestedPoint(WinTopLeft);rectsWidth = scaledFrame.Width / 2;rectsHeight = scaledFrame.Height / 2;aCoords = topLeft;bCoords = aCoords.Translate(rectsWidth, 0);cCoords = bCoords.Translate(rectsWidth, 0);dCoords = aCoords.Translate(0, rectsHeight);eCoords = dCoords.Translate(rectsWidth, 0);fCoords = eCoords.Translate(rectsWidth, 0);gCoords = dCoords.Translate(0, rectsHeight);hCoords = gCoords.Translate(rectsWidth, 0);iCoords = hCoords.Translate(rectsWidth, 0);a = Image.GetValue(aCoords);b = Image.GetValue(bCoords);c = Image.GetValue(cCoords);d = Image.GetValue(dCoords);e = Image.GetValue(eCoords);f = Image.GetValue(fCoords);g = Image.GetValue(gCoords);h = Image.GetValue(hCoords);i = Image.GetValue(iCoords);sumR1 = e - (b + d) + a;sumR2 = f - (c + e) + b;sumR3 = h - (e + g) + d;sumR4 = i - (f + h) + e;(int)(sumR1 - sumR2 - sumR3 + sumR4);

}

Метод ComputeValue используется в классификаторе для того что бы выявить является ли объект лицом или нет.

Сильный классификатор считывается из XML файла при помощи вызова метода LoadFromFile. Пример работы метода представлен ниже.static StrongClassifier LoadFromFile(string Path)

{asm = Assembly.GetExecutingAssembly();<string, WeakClassifier> RestoreClassifier = (str) => {[] vals = str.Split(';');alpha = double.Parse(vals[0]);threshold = int.Parse(vals[1]);parity = sbyte.Parse(vals[2]);featureType = asm.GetType(vals[3]);featureX = int.Parse(vals[4]);featureY = int.Parse(vals[5]);featureWidth = int.Parse(vals[6]);featureHeight = int.Parse(vals[7]);featureFrame = new Rectangle(new Point(featureX, featureY),, featureHeight);feature = (IFeature) Activator.CreateInstance(featureType, featureFrame);new WeakClassifier(alpha, threshold, parity, feature);

};classifiers = File.ReadAllLines(Path).Select(RestoreClassifier)

.ToArray();new StrongClassifier(classifiers);

}

Классификатор используется в классе Detector в методе Detect.

Detect - метод производящий поиск лиц на изображении. Возвращает список областей, которые были определены как лицо человека. Пример исходного кода метода Detect представлен ниже.Detector(IntegralImage Image, IntegralImage SquaredImage, StrongClassifier Classifier)

{.Image = Image;.SquaredImage = SquaredImage;.Classifier = Classifier;

}Detector(GreyPixbuf Image, StrongClassifier Classifier)

: this(new IntegralImage(Image), new IntegralImage(Image, (pix) => (long) pix * pix),)

{

}IEnumerable<Window> Detect()

{<Window, bool> check = (win) =>.Classifier.Check(win, this.Image);(var item in Window.ListWindows(this.Image, this.SquaredImage))

{(check(item)) yield return item;

}

}

На рисунке 3.7 изображена диаграмма классов для работы с признаками Хаара.

Алгоритм при помощи которого строятся и обучаются сильные классификаторы называется AdaBoosting.

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

Критерии останова могут использоваться различные, в зависимости от специфики задачи, возможно также совместное применение нескольких критериев:

-       построено заданное количество базовых алгоритмов T;

-       достигнута заданная точность на обучающей выборке;

-       достигнутую точность на контрольной выборке не удаётся улучшить на протяжении последних нескольких шагов при определенном параметре алгоритма.

Развитием данного подхода явилась разработка более совершенного семейства алгоритмов бустинга AdaBoost который может использовать произвольное число классификаторов и производить обучение на одном наборе примеров, поочередно применяя их на различных шагах.

Рисунок 3.7 - Диаграмма классов модуля Features.

Рассматривается задача классификации на два класса, Y = {−1,+1}. К примеру, базовые алгоритмы также возвращают только два ответа −1 и +1, и решающее правило фиксировано: C(b) = sign(b). Искомая алгоритмическая композиция имеет вид, отображенный на формуле 3.1:

. (3.1)

Функционал качества композиции Qt определяется как число ошибок, допускаемых ею на обучающей выборке:

 (3.2)

где Wl = (w1, …, wl) - вектор весов объектов.

Общий алгоритм адаптивного усиления, AdaBoost, выглядит следующим образом: Дано:

1)      Y = {−1,+1};

)        b1(x), . . . , bT (x) возвращают −1 и + 1;

)        Xl - обучающая выборка.

Решение:

.        Инициализация весов объектов:

 (3.3)

.        Расчет формулы 3.4

 = minQ(b;). (3.4)

.       

4.      Расчет формулы 3.5

. (3.5)

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

; (3.6)

.        Нормировка весов объектов:

 (3.7)

После построения некоторого количества базовых алгоритмов (скажем, пары десятков) нужно проанализировать распределение весов объектов. Объекты с наибольшими весами wi, возможно, являются шумовыми выбросами, которые стоит исключить из выборки, после чего начать построение композиции заново.

)        Модуль по поиску ключевых точек на лице - отвечает за поиск объектов и их характеристик и последующее сохранение их в лист специальных объектов, которые подвергнуться процессу распознавания эмоции. Объекты сохраняются в специальный класс который описывает их для того что бы программа могла с ними взаимодействовать. Основными характеристиками объекта являются следующие:

-       место положение объекта по координате У;

-       место положение объекта по координате Х;

-       минимальный размер области, в которую помещается объект;

-       область лица, в которой был найден объект.

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

<height>20</height>

<width>20</width>

<stageParams>

<maxWeakCount>93</maxWeakCount></stageParams>

<featureParams>

<featureParams>

<stageNum>24</stageNum>

<stages>

<_>

<maxWeakCount>6</maxWeakCount>

<stageThreshold>-1.4562760591506958e+00</stageThreshold>

<weakClassifiers>

<_>

<internalNodes>

-1 0 1.2963959574699402e-01</internalNodes>

<leafValues>

-7.7304208278656006e-01 6.8350148200988770e-01</leafValues></_>

<_>

Height - высота области признака Хаара.

Width - ширина области признака Хаара.

MaxWeakCount - количество слабых классификаторов принадлежащих сильному классификатору.

Слабый классификатор - классификатор на основе которого строится сильный классификатор для лучшего отсеивания ненужных объектов.

Сильный классификатор - итоговый классификатор состоящий из N-го количества слабых классификаторов. Используется для определение является ли объект искомым или нет.

StageNum - количество подгрупп слабых классификаторов.

StageThreshold - граница позволяющая минимизировать ошибку для признаков Хаара входящих в группу.

InternalNodes - параметр описывающий данные которые необходимо использовать с определенной областью заданной прямоугольником.

Для определения является ли объект искомым классификаторы хранятся в XML в виде дерева. Первые значения в internalNodes 0 и -1 показывают путь, по которому следует идти при считывании элементов. Сами параметры 0 и -1 обозначаются как node.Left и node.Right. При сохранении всех элементов в массив третий параметр показывает индекс внутри массива при обращении, к которому можно получить этот элемент. Четвертый параметр показывает границу для признака Хаара, она сравнивается с вычисленной разницей между белой и черной областью в признаке.

Для расчета признаков Хаара необходимо получить больше количество областей изображения, которые будут участвовать в работе алгоритма Виола-Джонса. Для этого был разработан алгоритм, позволяющий быстро получить все возможные варианты окон с заданными размерами. Пример алгоритма представлен в виде исходного кода ниже.static IEnumerable<Window> ListWindows(Image Image, Image SquaredImage)

{maxX = Image.Width - Config.WindowWidth;maxY = Image.Height - Config.WindowHeight;(var x = Config.WindowStartX; x <= maxX; x += Config.WindowDX)

{(var y = Config.WindowStartY; y <= maxY; y += Config.WindowDY)

{maxWidth = Image.Width - x;maxHeight = Image.Height - y;width = Config.WindowWidth;height = Config.WindowHeight;ratio = 1f;(width <= maxWidth && height <= maxHeight)

{return new Window(new Point(x, y), ratio, Image, SquaredImage);*= Config.WindowScale;= (int)(Config.WindowWidth * ratio);= (int)(Config.WindowHeight * ratio);

}

}

}

}

Для быстрой конфигурации программы был разработан класс Config хранящий внутри себя все переменные изменение которых изменяет поведение приложения. Класс является статическим что позволяет обращаться к переменным из любой точки программы при этом не создавая их. Это позволяет эффективно разрабатывать модули программы и тестировать приложение на различные входные параметры. В алгоритме по вычислению областей на изображениях при помощи класса Config можно поменять следующие параметры:

-       WindowWidth - начальная ширина скользящего окна;

-       WindowHeight - начальная высота скользящего окна;

-       WindowStartX - Координата Х с которой алгоритм начнет работу;

-       WindowStartY - Координата У с которой алгоритм начнет работу;

-       WindowScale - Параметр отвечающий за скорость расширения или

уменьшения окна. Изменение этого параметра сильно влияет на скорость работы алгоритма;

-       WindowDX - Параметр задающий скорость, с которой будет двигаться скользящее окно по координате Х;

-       WindowDY - Параметр задающий скорость, с которой будет двигаться скользящее окно по координате У.

Найденные области глаз и губ на лице обрабатываются детектором Харисса для выделение на них граничных точек, которые и будут являться ключевыми параметрами для определения эмоции.

) Модуль по определению эмоций

После работы модуля по определению ключевых точек, начинает работу модуль по определению эмоций. Ключевые точки, которые были распознаны в области губ являются более важными точками, чем точки, которые были найдены в области глаз, поэтому данные об эмоциях полученные на глазах будут лишь дополнять данные по эмоциями полученные на губах. Ключевые точки найденные в области губ можно представить как два ряда точек идущих друг за другом с различными положением по вертикали. Ряды разделяются линией по крайней левой и крайней правой точкой. Распознавание эмоций напрямую зависит от степени кривизны линии построенной на этих точках. Если на изображении изображена «Радость» то ключевые точки могут быть представлены как на рисунке 3.8.

Рисунок 3.8 - Ключевые точки на губах

Детектор углов не определяет точки внутри области губ, так как перед работой модуля по определению ключевых точек он проходит этап бинаризации и изображение преобразуется в вид, показанный на рисунке 3.9.

Рисунок 3.9 - Область губ для распознавания точек

Далее ключевые точки поступают на вход простейшей нейронной сети, которая определяет, какая эмоция представлена на наборе ключевых точек. Те же самые действия производятся для левого и правого глаза. По окончанию работы нейронной сети если губы показывают эмоцию «Нейтрально» то происходит коррекция эмоции путем выбора эмоции которую показали глаза.

Краткая схема алгоритма представлена на рисунке 3.10.

Рисунок 3.10 - Схема алгоритма распознавания эмоций

4.      Обоснование технических приёмов программирования


4.1    Обоснование выбора среды разработки


Средой разработки программного средства по расспознованию эмоций на изображениях лиц человека была выбрана Microsoft Visual Studio 2016.

MVS 2016 - среда разработки для проектирования, создания и тестирования решений следующего поколения на основе Microsoft Windows, веб-приложений и веб-служб. За счет улучшенной поддержки Windows Vista, системы Microsoft Office 2015, мобильных устройств и Интернета Visual Studio 2016 помогает индивидуальным разработчикам и крупным компаниям быстро создавать и внедрять комплексные, основанные на использовании сети, полнофункциональные и конкурентоспособные программные решения с передовыми пользовательскими интерфейсами.Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшего рефакторинга кода. Встроенный отладчик может работать как отладчик уровня исходного кода, так и отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных

Для повышения производительности приложения MVS 2016 предоставляет инструменты анализа программного кода, включая метрики кода, которые помогают выявлять неэффективные или другие проблемные участки кода. Интегрированная система сборки проекта включает поддержку многопоточности как для сборки, так и для отладки программного средства.

MVS 2016 предоставляет пользователю расширение Nuget Packet Manager которое позволяет устанавливать, обновлять и удалять библиотеки, сборки, компоненты. Данное расширение облегчает работу программисту по поиску и установке новых библиотек требуемых для разработки ПС.

4.2    Обоснование выбора языка программирования


Языком программирования программного средства по расспознованию эмоций на лице человека был выбран C# 6.0.# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Но, несмотря на то, что целый ряд конструктивных синтаксических механизмов и особенностей реализации был унаследован от C++, Visual Basic и Java, возможности языка С# не ограничиваются суммой возможностей его исторических предшественников. На данном этапе ограничимся перечислением основных возможностей, которыми характеризуется язык программирования C#.

К числу принципиально важных решений, которые реализованы корпорацией Microsoft в языке программирования C#, можно отнести следующие:

-       компонентно-ориентированный подход к программированию;

-       свойства как средство инкапсуляции данных (характерно также в целом для ООП);

-       обработка событий (имеются расширения, в том числе в части обработки исключений, в частности, оператор try);

-       унифицированная система типизации (соответствует идеологии Microsoft .NET в целом);

-       делегаты (delegate - развитие указателя на функцию в языках C и C++);

-       индексаторы (indexer - операторы индекса для обращения к элементам класса-контейнера);

-       перегруженные операторы (развитие ООП);

-       оператор foreach (обработка всех элементов классов-коллекций, аналог Visual Basic);

-       механизмы для преобразования типов;

-       атрибуты (средство оперирования метаданными в COM-модели);

-       прямоугольные массивы (набор элементов с доступом по номеру индекса и одинаковым количеством столбцов и строк).

Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML. Стоит отметить, что язык программирования C# реализует передовые механизмы обеспечения безопасности кода.

Кроме того, язык программирования C# призван практически реализовать компонентно-ориентированный подход к программированию, который способствует меньшей машинно-архитектурной зависимости результирующего программного кода, большей гибкости, переносимости и легкости повторного использования (фрагментов) программ.

Принципиально важным отличием от предшественников является изначальная ориентация на безопасность кода (что особенно заметно в сравнении с языками C и C++).

Унифицированная, максимально близкая по масштабу и гибкости к Common Type System, принятой в Microsoft .NET, система типизации является важным преимуществом языка C#.

Расширенная поддержка событийно-ориентированного программирования выгодно отличает язык программирования C# от целого ряда предшественников.

Язык программирования C# является «родным» для создания приложений в среде Microsoft .NET, поскольку наиболее тесно и эффективно интегрирован с ней.

Объединение лучших идей современных языков программирования (Java, C++, Visual Basic и др.) делает язык C# не просто суммой их достоинств, а языком программирования нового поколения.

С# в 2017 году является одним из популярных языков программирование из за своей простоты и мощности работы. Этот язык постоянно обновляется и становится удобнее для программистов из за своих новых возможностей.

На языке C# написано множество библиотек и расширений, которые позволяют быстро решать математические задачи. Программное средство, реализуемое в данном проекте включает много операций по работе с матрицами различного размера, подключаемая библиотека System.Drawing реализует работу с различными компонентами необходимыми для работы с изображениями, включая работу с матрицами.

Встроенные библиотеки C# предоставляют возможности по преобразованию исходного изображения в одномерный массив байтов, где каждые 4 байта хранят в себе информацию о красном, зеленом, синем цвете пикселя, а так же информацию об альфа канале.

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

5. 
Тестирование ПС


Установка и тестирование программного средства производились на персональном компьютере с установленной операционной системой Windows 7.

В таблице 5.1 отражен набор тестов, подтверждающий факт того, что приложение работает и выполняет свои основные функции. Данные тесты позволяют выявить критические дефекты основных функций ПС и принять решение о реализованности заявленной функциональности.

Таблица 5.1 - Тестирование обработки изображения

№ Тест-кейса

Тестируемая функциональность

Последовательность операций

Ожидаемый результат

Полученный результат

1

Скорость работы алгоритма предобработки изображения.

1. Запустить программу. 2. Загрузить изображение. 3. Нажать на кнопку «Распознать эмоцию»

Получение результата заняло не более 3 секунд.

Тест успешно пройден.

2

Обработка исключительных ситуаций во время работы алгоритма обработки изображения.

1. Запустить программу. 2. Оставить окно для изображения пустым. 3. Нажать на кнопку «Распознать эмоцию»

Приложение продолжает оставаться в запущенном состоянии. Вывод ошибки о отсутствии изображения на экран.

Тест успешно пройден.

3

Обработка изображения

1. Запустить программу. 2. Загрузить изображение с плохим качеством. 3. Нажать на кнопку «Распознать эмоцию»

Границы объектов на изображении после обработки не деформированы.

Тест успешно пройден


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

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

Таблица 5.2 - Тестирование поиска ключевых точек на лице

№ Тест-кейса

Тестируемая функциональность

Последовательность операций

Ожидаемый результат

Полученный результат

1

Поиск ключевых точек осуществляется внутри области лица.

1. Запустить программу. 2. Загрузить изображение. 3. Нажать на кнопку «Распознать эмоцию» 4. Посмотреть результаты найденных ключевых точек.

Все ключевые точки находятся внутри области лица

Тест успешно пройден.

2

Данные о ключевых точках сохранятся в отдельный класс.

1. Запустить программу. 2. Загрузить изображение. 3. Нажать на кнопку «Распознать эмоцию» 4. Посмотреть результаты найденных ключевых точек.

Класс описывающий характеристики ключевых точек не является пустым и отображает корректную информации.

Тест успешно пройден.

3

Фильтрация ключевых точек на принадлежность к области глаз, рта, щек, бровей, носа

1. Запустить программу. 2. Загрузить изображение. 3. Нажать на кнопку «Распознать эмоцию» 4. Посмотреть результаты найденных ключевых точек.

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

Тест успешно пройден

4

Обработка пустого результата работы алгоритма по поиску ключевых точек.

1. Запустить программу. 2. Загрузить изображение, не содержащее лицо человека. 3. Нажать на кнопку «Распознать эмоцию»

Вывод сообщения «Не найдено ключевых точек на изображении»

Тест успешно пройден.


Основные, выявленные в процессе тестирования поиска ключевых точек дефекты были устранены:

Обработка пустого результата работы алгоритма - добавлена обработка исключения приводившего к аварийному завершению ПС.

Сохранение данных в отдельный класс - улучшена работа алгоритма по сохранению данных о ключевой точке к классу.

Таблица 5.3 - Тестирование поиска человеческого лица

№ Тест-кейса

Тестируемая функциональность

Последовательность операций

Ожидаемый результат

Полученный результат

1

Отображение найденного лица на изображении

1. Запустить программу. 2. Загрузить изображение. 3. Нажать на кнопку «Выделение лица»

Лицо на изображение выделено цветным прямоугольником.

Тест успешно пройден.

2

Данные о лице сохраняются в отдельный класс.

1. Запустить программу. 2. Загрузить изображение. 3. Нажать на кнопку «Выделение лица». 4. Посмотреть данные о найденном лице.

Класс описывающий лицо не является пустым и отображает корректную информации.

Тест успешно пройден.

3

Обработка пустого результата работы алгоритма

1. Запустить программу. 2. Загрузить изображение не содержащее человеческих лиц. 3. Нажать на кнопку «Выделение лица»

Вывод сообщения «Не найдено человеческих лиц на изображении»

Тест успешно пройден


Основные, выявленные в процессе тестирования поиска человеческих лиц дефекты были устранены:

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

Таблица 5.4 - Тестирование расспознования эмоции

№ Тест-кейса

Тестируемая функциональность

Последовательность операций

Ожидаемый результат

Полученный результат

1

Отображение результатов классификации эмоции.

1. Запустить программу. 2. Загрузить изображение. 3. Нажать на кнопку «Расспознование эмоции»

Вывод результата о эмоции на человеческом лице.

Тест успешно пройден.

2

Обработка пустого результата работы алгоритма.

1. Запустить программу. 2. Загрузить изображение. 3. Нажать на кнопку «Расспознование эмоции»

Результирующее изображение не подверглось изменениям.

Тест успешно пройден.

3

Классификация эмоций.

1. Запустить программу. 2. Загрузить изображение с проявленной эмоцией «Радость». 3. Нажать на кнопку «Расспозн ование эмоции»

Результат работы алгоритма является «Радость».

Тест успешно пройден


6.     
Методика использования разработанного программного средства

При запуске программы появляется стартовое окно с пользовательским интерфейсом. Окно программы представлено на рисунке 6.1:

Рисунок 6.1 - Стартовое окно программы

Окно находящееся сверху слева является контейнером для оригинального изображения, загрузка изображения в этот контейнер производится путем нажатия на кнопку «Открыть изображение». Результат открытого изображения представлен на рисунке 6.2.

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

Нажатие на кнопку «Открыть изображение» открывает окно для выбора загружаемого изображения.

Нажатие на кнопку «Гистограмма цветов» откроет гистограмму цветов изображения в новом окне. На гистограмме можно включать и выключать отображение определенных цветов. Пример гистограммы представлен на рисунке 6.3.

Рисунок 6.2 - Окно с открытым изображением

Рисунок 6.3 - Гистограмма цвета изображения

Кнопка «Распознать эмоцию» запускает процесс распознавания эмоции на изображении. Пример работы распознавания представлен на рисунке 6.4.

Если окно с изображением пустое, то при попытке работы с приложением отобразится сообщение об ошибке (см. рисунок 6.5).

Рисунок 6.4 - Результат работы распознавания

Рисунок 6.5 - Сообщение о том, что контейнер с изображением пустой

Если лицо не было найдено, отобразится сообщение (см. рисунок 6.6).

При попытке встроить данные в контейнер, формат которых не является изображением, отобразится сообщение об ошибке (см. рисунок 6.7).

Кнопки, расположенные рядом с надписью «Фильтры» применяют фильтр на изображение. Результат работы фильтра будет отображен в контейнере расположенном сверху справа в окне приложения.

Кнопка «Сброс фильтров» производит отмену всех изменений произведенных с изображением.

Для того что бы сохранить изображение достаточно навести курсор мыши на изображение и нажать на правую кнопку мыши, затем выбрать пункт «Сохранить как» и выбрать путь куда следует сохранить изображение.

Рисунок 6.6 - Сообщение о том, что пароль пуст

Рисунок 6.7 - Сообщение о некорректном формате данных

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


7.1    Краткая характеристика разрабатываемого ПО

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

Программное средство разрабатывается по индивидуальному заказу для сторонней организации, которая затем будет предоставлять его конечным пользователям. Разработка ведется в компании EPAM Systems, которая является резидентом Парка высоких технологий Республики Беларусь.

.2      Расчет затрат на разработку ПО

7.2.1 Расчет затрат на основную заработную плату разработчиков

Для реализации программного средства по поиску человеческих эмоций на изображениях было принято решение выбрать команду разработчиков в составе двух инженеров-программистов. Это объясняется тем, что конечный продукт должен состоять из двух частей: интерфейса, непосредственно с которым будут работать пользователи, и совокупности модулей для построения и обучения математической модели, на основе которой будет выполняться классификация эмоций. Следует отдать разработку пользовательского интерфейса веб-программисту, а вторую часть отдать на выполнение специалисту в области машинного обучения. Команда с таким составом позволит закончить проект вовремя с учетом рисков, связанных с разработкой, и выполнить его качественнее благодаря специализации разработчиков. Сроки реализации программного средства составляют один месяц.

Затраты на основную заработную плату рассчитываются по формуле (7.1):

 (7.1)

где  - количество исполнителей, занятых в разработке ПС;

 - часовая тарифная ставка i-го исполнителя, руб.;

.

Таблица 7.1 - Расчет затрат на основную заработную плату команды разработчиков

Участник команды

Разряд

Месячный оклад, руб.

Днев ной оклад, руб.

Трудоемкость работ, чел./дн.

Основная заработная плата, руб.

1

Инженер-программист

12

2,84

624,8

29,61

10

296,1

2

Инженер-программист

13

3,04

668,8

31,69

25

792,25

Премия (50 %)

1088,35

Итого затраты на основную заработную плату разработчиков

1632,52


В качестве размера месячной тарифной ставки 1-го разряда для расчетов заработной платы выбирается значение, принятое в организации, которая занимается разработкой проекта, и равное 220 руб.

Среднемесячное количество рабочих дней при пятидневной рабочей неделе в 2017 году составляет 21,1 дней.

В таблице 7.1 сведены данные о команде разработчиков, их окладе и назначенном объеме работ для каждого.

.2.2 Расчет затрат на дополнительную заработную плату

Затраты на дополнительную заработную плату команды разработчиков включает выплаты, предусмотренные законодательством о труде, и определяется по формуле (7.2):

, (7.2)


где Зо - затраты на основную заработную плату с учетом премии (руб.);

Нд - норматив дополнительной заработной платы (10-20%).

Примем Нд=15% и получим:

.2.3 Расчет отчислений на социальные нужды

Обязательные отчисления на социальные нужды включают в себя выплаты в фонд социальной защиты населения и обязательное страхование и определяются в соответствии с действующими законодательными актами по формуле (7.3):

, (7.3)

где Нсоц - норматив отчислений на социальные нужды (согласно действующему законодательству), Нсоц = 35%.

.2.4 Расчет прочих затрат

Прочие затраты включают затраты, связанные с разработкой конкретного программного обеспечения напрямую, а также связанные с функционированием организации-разработчика в целом. Расчет прочих затрат выполняется в процентах от затрат на основную заработную плату команды разработчиков с учетом премии по формуле (7.4):

, (7.4)


где Нпз - норматив прочих затрат (100-150%).

.2.5 Расчет общих затрат на разработку и себестоимости ПО

Полная сумма затрат на разработку программного обеспечения находится путем суммирования всех рассчитанных статей затрат по формуле (7.5):

.

Для разрабатываемого ПС затраты на разработку составят:

руб.

Предполагается, что компания-разработчик также будет заниматься сопровождением программного средства. В связи с этим рассчитываются расходы на эти услуги, которые принимаются в размере Нс=30% от основных затрат на разработку:


Себестоимость программного средства будет определяться как сумма затрат на разработку и сопровождение:

 руб.

Расчет затрат на разработку и сопровождение программного средства сведен в таблицу 7.2.

Таблица 7.2 - Затраты на разработку и сопровождение ПО

Статья затрат

Сумма, руб.

Основная заработная плата команды разработчиков

1632,52

Дополнительная заработная плата команды разработчиков

Отчисления на социальные нужды

Прочие затраты

Общая сумма затрат на разработку

Расходы на сопровождение

Себестоимость программного средства

5841,53


Рассчитанное значение полной себестоимости разрабатываемого программного средства, которая составила 5841,53 руб., будет использоваться в дальнейшем для определения цены ПС.

.3      Расчет экономического эффекта у разработчика

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

.3.1 Экономический эффект у разработчика

Экономический эффект для организации-разработчика представляет собой прибыль, полученную от разработки программного продукта по индивидуальному заказу для сторонней организации.

Цену программного средства будем определять, исходя из затрат на разработку и реализацию ПО.

Исходя из опыта реализации программных средств с функциональными требованиями, реализуемыми за близкий к рассчитанному срок, был установлен уровень рентабельности программного средства (30%).

Расчёт прибыли от реализации ПО заказчику вычисляется по формуле (7.6):

  , (7.6)

 

где Сп - себестоимость программного обеспечения, руб.;

Ур - запланированный норматив рентабельности, %.

Выбрав Ур=30%, рассчитаем ожидаемую прибыль:

Так как компания EPAM Systems является резидентом Парка высоких технологий, она освобождается от уплаты налога на добавленную стоимость и налога на прибыль. Поэтому рассчитанное значение П будет представлять собой чистую прибыль разработчика. Отпускная цена конечного программного продукта будет определяться как сумма себестоимости и прибыли:


Таким образом, при продаже конечного программного продукта заказчику по цене  руб. разработчик получит экономическую выгоду в размере  руб.

.4      Расчет экономического эффекта у пользователя

На рынке ПО разработка приложения подобного рода в среднем оценивается в 9000 руб. Поручив разработку компании EPAM Systems и приобретая продукт по рассчитанной выше цене, заказчик в среднем может получить выгоду от разработки в выбранной организации в размере:

руб.

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

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

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

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

7.5    Вывод по технико-экономическому обоснованию

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

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

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

Заключение


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

В процессе написания программы была использована технология WinForms, применен объектно-ориентированный подход и исследованы основные инструменты платформы .NET и языка программирования C#.

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

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

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

Список использованных источников


[1]     Bmstu [Электронный ресурс]: Медианная фильтрация. - Режим доступа: http://ru.bmstu.wiki/Медианная_фильтрация. - Дата доступа: 15.03.2017.

[2]     Vscode [Электронный ресурс]: Фильтрация изображений. - Режим доступа: http://vscode.ru/prog-lessons/filtratsiya-izobrazheniy-na-c-sharp.html. - Дата доступа: 15.03.2017.

[3]     Гонсалес Р.С. Цифровая обработка изображений / Р.С. Гонсалес Р.И. Вудс. - Москва: Техносфера, 2012. - 1104 с.

[4]     Habrahabr [Электронный ресурс]: Анализ подходов к распознаванию лиц. - Режим доступа: https://habrahabr.ru/company/synesis/blog/238129. - Дата доступа: 15.03.2017.

[5]     Wiskott L. Face Recognition by Elastic Bunch Graph Matching / L. Wiskott, J. Fellous, N. Kruger // CRC Press. - 1999. - Chapter 11. - P. 355-396.

[6]     Lawrence S. Face Recognition A Convolutional Neural Network Approach / L. Stiven, G. Lee, T. Chung // IEEE Transactions on Acoustics. - 1997. - Volume 8.1. - P. 98-113.

[7]     Khalajzadeh H. Face Recognition using Convolutional Neural Network and Simple Logistic Classifier / K. Hurieh, M. Mohammad, T. Mohammad //Springer - Chapter. - 2013. - Vol 223. - P. 197-207.

[8]     R. Collins Face Image Analysis With Convolutional Neural Networks

/ C. Robert. - Penn State University. - 2007. - 32p.

[9]     J. Edwards. Face Recognition Using Active Appearance Models / E. Jhon, C. Fenri, N. Kruger // Computer Vision. - 2006. - Vol 1407. - P. 581-596.

[10]   D. Martinis. AAM for Facial Expresion / M. Dias, P. Alexandre, N. Kruger // University of Coimbra. - 2008. - p. 255.

[11]   P. Viola Rapid Object Detection using a Boosted Cascade of Simple Features / V. Paul, J. Michael // IEEE Conf. on Computer Vision and Pattern Recognition. - 2001. - p.9.

[12]   P. Viola Robust real-time face detection / V. Paul J. Michael. // Jones International Journal of Computer Vision. - 2004. - Vol. 57, no. 2. - pp.137-154

[13]   Tinne Tuytelaars, Krystian Mikolajczyk. Local Invariant Feature Detectors: A Survey, 2008.

[14]   CsePsu [Электронный ресурс]: Computer Vision. - Режим доступа: http://www.cse.psu.edu/~rtc12/CSE486. - Дата доступа: 15.03.2017.

Похожие работы на - Проектирование системы по работе с изображениями, позволяющей находить лицо человека и распознавать эмоцию на нем

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!