close

Вход

Забыли?

вход по аккаунту

Сорокин Михаил Сергеевич. АСНИ методов обработки и анализа изображений

код для вставки
3
АННОТАЦИЯ
ВКР 90 с., 17 рис., 1 табл., 11 источников, 1 прил.
ОБРАБОТКА
И
АНАЛИЗ
АВТОМАТИЗИРОВАННАЯ
ИЗОБРАЖЕНИЙ,
СИСТЕМА
НАУЧНЫХ
ЭКСПЕРИМЕНТ,
ИССЛЕДОВАНИЙ,
ИССЛЕДОВАНИЕ ЭФФЕКТИВНОСТИ.
Выпускная квалификационная работа посвящена разработке АСНИ методов
обработки и анализа изображений.
В первой главе был проведен анализ задачи обработки и анализа
изображений, выделены основные этапы процесса обработки и анализа
изображений, рассмотрены существующие методы и программные средства,
решающие поставленную задачу, сформулированы требования к разрабатываемой
АСНИ.
Во второй главе была выполнена формализация процесса обработки и
анализа
изображений;
разработаны
и
исследованы
модель
проведения
автоматизированных экспериментов в разрабатываемой АСНИ, функциональная
модель АСНИ, модель поведения АСНИ.
В третьей главе была спроектирована структура программного обеспечения
АСНИ и разработаны основные алгоритмы АСНИ.
В четвертой главе приведены особенности реализации программного
обеспечения АСНИ, в частности, особенности проведения экспериментов;
проведено исследование работы АСНИ на примере решения задачи обработки
аэрофотоснимков полей, оценены временные затрат на подготовку и проведение
экспериментов в разработанной АСНИ и аналогах.
4
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
6
1 АНАЛИЗ ЗАДАЧИ ОБРАБОТКИ И АНАЛИЗА ИЗОБРАЖЕНИЙ И
МЕТОДОВ ЕЕ РЕШЕНИЯ
8
1.1 Задача обработки и анализа изображения
8
1.2 Методы и существующие средства решения задачи
11
1.2.1 Методы фильтрации и восстановления изображения
11
1.2.2 Методы повышения яркости и контрастности изображения
12
1.2.3 Методы выделения контуров объектов
13
1.2.4 Методы сегментации изображения
15
1.3 Описание существующих программных средств, осуществляющих
обработку и анализ изображений
17
1.4 Предмет разработки и требования
19
2 МОДЕЛИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ АСНИ
МЕТОДОВ ОБРАБОТКИ И АНАЛИЗА ИЗОБРАЖЕНИЙ
21
2.1 Формализация процесса обработки и анализа изображений
21
2.2 Модель проведения экспериментов в АСНИ методов обработки и анализа
изображений
26
2.3 Разработка функциональной модели АСНИ методов обработки и анализа
изображений
28
2.4 Разработка модели поведения АСНИ методов обработки и анализа
изображений
31
3 ПРОЕКТИРОВАНИЕ АСНИ МЕТОДОВ ОБРАБОТКИ И АНАЛИЗА
ИЗОБРАЖЕНИЙ
36
3.1 Общая структура АСНИ методов обработки и анализа изображений
36
3.2 Проектирование основных классов ПО АСНИ методов обработки и анализа
изображений
37
5
3.3 Разработка модели коммуникаций АСНИ методов обработки и анализа
изображений
42
3.4 Основные алгоритмы АСНИ методов обработки и анализа изображений
44
3.4.1 Алгоритм загрузки файлов в АСНИ методов обработки и анализа
изображений
45
3.4.2 Алгоритм сохранения файлов в АСНИ методов обработки и анализа
изображений
47
3.4.3 Алгоритм проведения экспериментов в АСНИ методов обработки и
анализа изображений
49
4 РЕАЛИЗАЦИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ АСНИ МЕТОДОВ
ОБРАБОТКИ И АНАЛИЗА ИЗОБРАЖЕНИЙ
51
4.1 Особенности реализации программного обеспечения АСНИ методов
обработки и анализа изображений
51
4.2 Особенности проведения экспериментов в АСНИ методов обработки и
анализа изображений
53
4.3 Примеры работы программного обеспечения АСНИ методов обработки и
анализа изображений
56
4.4 Оценка времени, затраченного на подготовку и проведение экспериментов
в АСНИ методов обработки и анализа изображений
60
ЗАКЛЮЧЕНИЕ
63
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ И ЛИТЕРАТУРЫ
65
ПРИЛОЖЕНИЕ А – Листинг программы
67
УДОСТОВЕРЯЮЩИЙ ЛИСТ
88
ИНФОРМАЦИОННО-ПОИСКОВАЯ ХАРАКТЕРИСТИКА ДОКУМЕНТА НА
ЭЛЕКТРОННОМ НОСИТЕЛЕ
89
6
ВВЕДЕНИЕ
Системы технического зрения используются во многих сферах жизни. С его
помощью анализируют рентгеновские снимки и томографию в медицине, находят
усталостные трещины в металле, используют в системах видеонаблюдения, в
системах прицеливания и наведения в военной сфере и так далее.
В
основе
подобных
систем
лежит
программного
обеспечение,
предназначенное для обработки и анализа изображений. Однако при разработке
подобного ПО часто нельзя бывает точно установить, какие методы обработки и
анализа изображений необходимо использовать для каждой конкретной области.
В настоящее время существует большое количество методов обработки и
анализа изображений, и все они обладают разным быстродействием, разной
эффективностью на разных изображениях, разными требованиями к ресурсам
ЭВМ.
Таким образом, возникает проблема многообразия методов обработки и
анализа изображений.
Для решения данной проблемы было поставлена следующая цель: создание
автоматизированной системы научных исследований методов обработки и
анализа изображений, реализующей множество методов обработки и анализа
изображений и позволяющей проводить с ними эксперименты. С ее помощью
разработчики ПО для систем технического зрения смогут оценить эффективность
тех или иных методов путем их применения к требуемым изображениям,
определить наиболее эффективную комбинацию методов и их параметров для
конкретной предметной области, чтобы затем реализовать их в своем ПО. Таким
образом, задачей АСНИ является снижение трудоемкости процесса выбора
методов обработки и анализа изображений для различных задач.
Для достижения поставленной цели требуется решить следующие задачи:
а) проанализировать предметную область и осуществить постановку задачи
обработки и анализа изображений;
7
б) смоделировать процесс обработки и анализа изображений, процесс
проведения экспериментов и программное обеспечение АСНИ методов обработки
и анализа изображений в соответствии с поставленными требованиями;
в) спроектировать программное обеспечение АСНИ методов обработки и
анализа изображений в соответствии с поставленными требованиями;
г) реализовать программное обеспечение АСНИ методов обработки и
анализа изображений.
8
1 АНАЛИЗ ЗАДАЧИ ОБРАБОТКИ И АНАЛИЗА ИЗОБРАЖЕНИЙ И
МЕТОДОВ ЕЕ РЕШЕНИЯ
1.1 Задача обработки и анализа изображения
Обработка и анализ изображений – это различные манипуляции,
производимые с математическим объектом (изображением), для достижения
следующих целей:
- изменение или искажение изображений для улучшения качества
изображения
(коррекция
яркости
или
контрастности,
удаление
шумов,
расфокусировки);
- проведение различных измерений на изображении;
- поиск и распознавание объектов на изображении. [10]
Обработка и анализ изображений очень широко применяются в настоящее
время в различных сферах: в системах видеонаблюдения, в материаловедении, в
системах контроля качества продукции, в медицине, в научных исследованиях, в
робототехнике и системах искусственного интеллекта, в военной сфере.
Например, системы фиксации нарушений правил дорожного движения или
системы
видеонаблюдения
на
пропускных
пунктах
распознают
номера
проезжающих мимо камеры автомобилей и, в случае выполнения некоторых
заданных условий, как например превышение разрешенной максимальной
скорости на данном участке дороги, сверяют распознанные номера с базами
номеров и пишут сообщение в лог системы.
Один из вариантов работы подобных систем:
а) берется стоп-кадр видеосъемки, чаще несколько кадров для повышения
точности, на котором содержится номер автомобиля;
б) полученное изображение проходит фильтрацию, нормализацию и
бинаризацию;
в) выделяются знаки номера с помощью, например, детектора границ;
г) полученные изображения знаков сравниваются с внутренней базой знаков
9
автомобильных номеров системы с учетом погрешности;
д) получаем строковое представление знаков автомобильного номера,
которое можно использовать в дальнейшей работе системы (запросы в базу
номеров, записи в лог и т.д.).
Другой пример – системы материаловедения, например, система контроля
качества производства поверхности CD-дисков. Ее принцип работы следующий:
а) с помощью микроскопа получаем изображение поверхности CD-диска;
б) полученное изображение проходит бинаризацию и фильтрацию, таким
образом, получается «чистое» изображение;
в) «чистое» изображение вычитается из исходного, получается изображение
дефектов;
г) проводится анализ дефектов: оценка площади, периметра, формы [11].
Третий пример – анализ медицинских изображений. Несмотря на
обширность данной сферы, многие системы в ней работают по следующему
принципу:
1) с помощью медицинского оборудования (микроскопов, томографов и т.п)
получают изображение;
2) изображение проходит сегментацию и выделение «зон интереса»;
3) каждая «зона интереса» анализируется и классифицируется.
Таким образом, можно обратить внимание на то, что в разных сферах
используются одни и те же этапы обработки и анализа изображения:
а) предварительная обработка изображения;
б) сегментация изображения;
в) анализ изображения.
Общий принцип работы систем обработки и анализа изображений
представлен на рисунке 1.
10
Рисунок 1 – Процесс обработки и анализа изображения
На рисунке 1 представлены следующие элементы:
«Исходное изображение» - матрица, размерностями которой являются
ширина и высота изображения, а элементами – значения яркости каждого
пикселя.
«Предварительная обработка изображения» - выполнение преобразований
над изображением для улучшения его визуального или объективного качества
ради использования полученного результата в дальнейших преобразованиях или
как готовое изображение. На данном этапе обработки и анализа изображений
проводится цветовая коррекция, удаление шумов, сглаживание изображений,
повышение резкости, удаление расфокусировки, геометрические преобразования
и т.д.
«Сегментация изображения» - разделение изображений на области
(сегменты), обладающие общим признаком. Как пример, области с одинаковой
яркостью. Сегментация также используется для выделения контуров объектов, в
этом случае изображение делится на, собственно, контуры, имеющие одни
значения яркости, и все остальное изображение, где значения яркости другие. [8]
«Анализ изображений» - на данном этапе производятся поиск и
11
распознавание объектов, а также различные измерения на изображении. На
данном этапе очень часто используются прошедшие сегментацию изображения.
«Выходное
изображение»
-
матрица,
полученная
в
результате
преобразований исходного изображения. Ее размерности могут совпадать с
размерностями исходного изображения, но могут и отличаться, например, в
результате геометрических преобразований изображения.
«Результаты анализа» - данные, которые нельзя описать в виде
изображения. Например, результаты измерений, количества объектов и т.д.
1.2 Методы и существующие средства решения задачи
1.2.1 Методы фильтрации и восстановления изображения
Цифровые изображения подвержены воздействию различных типов шумов,
которые могут возникать от способа получения изображений, технологий
передачи информации, методов оцифровывания данных. Процесс устранения
различных видов шумов на изображениях называется фильтрацией.
При осуществлении фильтрации яркостные характеристики каждой точки
цифрового изображения, заменяются другим значением яркости, которое
признается в наименьшей степени искаженным помехой. Выделяют частотную и
пространственную фильтрацию[1].
Частотные методы преобразований изображений основываются на идее
Фурье преобразования, смысл которого заключается в представлении исходной
функции в виде суммы тригонометрических функций различных частот,
умноженных на заданные коэффициенты.
Принцип
пространственных
алгоритмов
заключается
в
применении
специальных операторов к каждой точке исходного изображения.
При осуществлении линейной фильтрации отклик маски задается суммой
произведений пикселей в области покрытия фильтра. В качестве линейного
сглаживающего
фильтра
используется
усредняющий
фильтр
выходным
значением, которого является среднее значение по окрестности маски фильтра [1].
12
Подобный фильтр используется для задач удаления зернистости изображения
вызванной импульсным шумом.
При медианной фильтрации значения пикселей представляют собой
усредненное значение точек соответствующей окрестности. Часто при решении
задач устранения шума медианный фильтр является более эффективным, чем
обычное усреднение, так как приводит к меньшим искажениям границ
выделяемых объектов.
В
основе
адаптивной
фильтрации
положен
винеровский
фильтр,
являющийся одним из типов линейного фильтра для адаптивной локальной
обработки изображений [2]. Если значение среднеквадратичного отклонения
интенсивностей пикселей в данной локальной области большое, то винеровский
фильтр выполняет небольшое сглаживание и, наоборот, при меньшем отклонении
область сглаживания больше [2]. Этот подход часто бывает более эффективным,
чем обычная линейная фильтрация. Преимущество адаптивный фильтра еще
заключается в том, что он сохраняет края и другие высокочастотные части
объектов изображения. Однако винеровский фильтр требует большего времени
для вычислений, чем линейный фильтр [2].
1.2.2 Методы повышения яркости и контрастности изображения
В глобальных методах повышения контрастности производится линейное
или степенное преобразование
шкалы яркости. Если диапазон яркости
изображения меньше, чем максимально возможное значение яркости, то
увеличение контрастности можно получить линейным растяжением шкалы
яркости[3]. В результате гистограмма яркости станет более редкой, а разность
яркости соседних фрагментов увеличится. Если диапазон яркости изображения
уже максимален, то увеличения различимости соседних фрагментов можно
добиться за счет нелинейного преобразования шкалы яркости методом гаммакоррекции или соляризации[4]. Гамма-коррекция, или степенное преобразование
13
шкалы яркости, позволяет увеличить контрастность в локальном диапазоне
яркостей за счет снижения контрастности в других диапазонах[5].
Метод соляризации позволяет еще больше увеличить различимость
соседних фрагментов за счет слияния яркости фрагментов, симметрично
расположенных на шкале яркости относительно ее середины, причем снижается
различимость фрагментов, имеющих яркость, близкую к средней[2].
В отличие от глобальных методов повышения контрастности ее адаптивное
повышение требует установки ряда параметров и значительно большего времени
на
обработку.
Визуального
эффекта
повышения
контрастности
при
расфокусировке крупных фрагментов можно добиться путем подчеркивания
контура, например, широко известным методом с использованием лапласиана. В
данном
методе
яркость
текущего
пикселя
обработанного
изображения
определяется как разность яркости соответствующего пикселя исходного
изображения и второй производной яркости данного пикселя в некоторой
окрестности с учетом знака. В результате яркость пикселя, находящегося в начале
области перепада от меньшей яркости к большей, уменьшается, а яркость пикселя
в конце этой области увеличивается[3]. В итоге увеличивается контрастность
контурной линии и визуально усиливается резкость изображения. Основным
недостатком этого метода является отсутствие избирательности, т. е. степень
повышения резкости постоянна для всего изображения и не зависит от
контрастности соседних фрагментов.
1.2.3 Методы выделения контуров объектов
Детектор границ Canny ориентируется на три основных критерия: хорошее
обнаружение
(повышение
отношения
сигнал/шум);
хорошая
локализация
(правильное определение положения границы); единственный отклик на одну
границу. Из этих критериев строится целевая функция стоимости ошибок,
минимизацией которой находится «оптимальный» линейный оператор для
14
свертки с изображением. Для уменьшения чувствительности алгоритма к шуму
применяется первая производная Гауссиана.
Для определения направления градиента используется оператор Собела.
Полученные значения направлений округляются до одного из четырех углов — 0,
45, 90 и 135 градусов. Затем с помощью двух порогов удаляются слабые границы.
Фрагмент границы при этом обрабатывается как целое.
Если значение градиента где-нибудь на прослеживаемом фрагменте
превысит верхний порог, то этот фрагмент остается также «допустимой»
границей и в тех местах, где значение градиента падает ниже этого порога, до тех
пор, пока она не станет ниже нижнего порога. Если же на всем фрагменте нет ни
одной точки со значением выше верхнего порога, то он удаляется. Такой
гистерезис позволяет снизить число разрывов в выходных границах.
Включение
в
алгоритм
шумоподавления
повышает
устойчивость
результатов, но увеличивает вычислительные затраты и приводит к искажению и
потере подробностей границ. Алгоритмом скругляются углы объектов и
разрушаются границы в точках соединений.
Недостатками этого метода являются сложность реализации и очень
большая ресурсоемкость, а также то, что возможно некоторое округление углов
объекта, что приводит к изменению параметров контура.
К достоинствам же метода можно отнести слабую чувствительность к
шумам и ориентации границ областей, то, что он четко выделяет контур и
позволяет выявлять внутренние контуры объекта. Кроме того он исключает
ошибочное обнаружение контура там, где объектов нет [6].
Также используется анализ с помощью теории графов.
Подход к обнаружению и связыванию контуров на основе представления в
виде графа и поиска на этом графе путей с наименьшей стоимостью, которые
соответствуют значимым контурам, позволяет построить метод, хорошо
работающий в присутствии шума. Такая процедура оказывается достаточно
сложной и требующей большего времени обработки.
15
Задача отыскания на графе пути минимальной стоимости является
нетривиальной по вычислительной сложности, и приходится жертвовать
оптимальностью в пользу скорости вычислений. Сложность реализации и
большая
ресурсоемкость
—
вот
основные
недостатки
такого
анализа,
достоинством которого является слабая чувствительность к шумам.
1.2.4 Методы сегментации изображения
Одной из основных задач обработки и анализа изображений является
сегментация, т.е. разделение изображения на области, для которых выполняется
определенный критерий однородности, например, выделение на изображении
областей приблизительно одинаковой яркости.
Сегментация решает в общем смысле две основные задачи:
а) разделение изображения на части, для осуществления дальнейшего
анализа;
б) изменение формы описания элементов изображения, что позволяет
представить
точки
как
высокоуровневые
структуры,
обеспечивающие
эффективность дальнейшего анализа изображения.
Классификация методов сегментации представлена на рисунке 2[8].
Разделение изображения на части базируется на идеях, основанных на
резких перепадах яркости. Изменение формы описания элементов изображения
основывается на разделении изображения на однородные области с учетом
заранее выбранных критериев [1].
К методам на основе разрывности яркости относится обнаружение точек
линий и перепадов. При обнаружении точек и линий с помощью специальных
масок организуется соответствующий поиск. В качестве методов обнаружения
перепадов используются производные и градиенты от функций яркости, такие
методы основаны на более общих идеях.
16
Рисунок 2 – Методы сегментации изображения
Методы пороговой обработки основываются на идеях разделения значимых
характеристик по некоторому порогу. Порог может быть глобальным, то есть
определенным на всем изображении или локальным, который определен на
некоторой области.
Метод выращивания областей, основывается на обнаружении разрывов
яркости. В методах выделяются несколько центральных точек или групп точек,
после чего, к ним присоединяются пиксели, удовлетворяющие заданным
условиям.
Гистограммные методы основаны на выборе минимальных и максимальных
значений или интервалов между экстремумами.
Методы на основе преобразований Хафа, основываются на связывании
точек друг с другом путем предварительного выяснения их принадлежности к
17
некоторой кривой заданной формы или обнаружения прямых и кривых линий по
семейству заданных прямолинейных отрезков и дуг.
Методы теории графов, основываются на обнаружении и связывании
контуров с помощью представления отрезков контуров в виде графа и
осуществлении поиска на этом графе путей, соответствующих искомым
контурам.
Методы водоразделов заключается в поиске линий разделяющих локальные
минимумы и максимумы значений яркостей элементов изображения [1, 5].
1.3 Описание существующих программных средств, осуществляющих
обработку и анализ изображений
ImageJ
—
открытая
кроссплатформенная
программа
для
анализа
медицинских изображений. Обладает широким функционалом для обработки и
анализа изображения, однако обладает рядом недостатков, как например:
а) невозможность одновременной загрузки нескольких изображений;
б) невозможность сравнения исходного изображения с результирующим;
в) программа осуществляет замер времени, затраченного на обработку и
анализ, но не сохраняет историю преобразований (состав эксперимента);
г) для каждого входного изображения требуется вручную выбрать и
настроить методы обработки и анализа изображений.
Поддерживаемые функции обработки и анализа изображения:
а) геометрические преобразования;
б) цветокоррекция;
в) удаление шумов на изображении;
г) усиление резкости изображения;
д) выделение контуров на изображении;
е) морфологические преобразования изображения;
ж) анализ изображения, включая отслеживание объектов.
18
Каждое входное изображение открывается в отдельном окне, что дает
возможность сравнить результаты обработки разными методами.
GIMP
—
открытый
графический
редактор.
Обладает
широкими
возможностями обработки изображения, но не предлагает функционал для его
анализа.
Предоставляемые возможности:
а) геометрические преобразования изображения;
б) цветокоррекция;
в) удаление шумов на изображении;
г) выделение контуров на изображении;
д) морфологическая трансформация изображения;
е) усиление резкости изображения.
Недостатки:
а) отсутствие возможностей анализа изображения;
б) невозможность сравнения результирующего изображения с исходным;
в) для каждого входного изображения требуется вручную выбрать и
настроить методы обработки и анализа изображений.
Как и в ImageJ, каждое изображение открывается в отдельном окне, что
позволяет сравнить результаты обработки разными методами.
Altami Studio — программное обеспечение для проведения измерений и
автоматического анализа изображений.
Программа анализа изображений Altami Studio позволяет:
- осуществлять анализ и обработку изображения;
- проводить различного рода измерения;
- сохранять результаты измерений;
-
применять
к
изображению
различные
растровые
геометрические, морфологические, пороговые и многие другие. [9]
операции:
19
Таблица
1
–
Сравнение
существующих
программных
продуктов
с
разрабатываемым программным обеспечением
Сравниваемые
характеристики
Разрабатываемый
ImageJ
GIMP
AltamiStudio
15
20
18
22
2
4
4
5
10
0
10
11
-
-
+
+
+/-
+/-
-
+
+
-
-
+
Узкосп.
Унив.
Узкосп.
Унив.
продукт
Количество методов
предварительной
обработки изображений
Количество методов
сегментации изображения
Количество методов
анализа изображений
Автоматизация
экспериментов
Сравнение экспериментов
Замер времени,
затраченного на
эксперимент
Широта применения
1.4 Предмет разработки и требования
Предметом разработки является автоматизированная система научных
исследований методов обработки и анализа изображений.
В
результате
анализа
поставленной
задачи
были
сформулированы
следующие функциональные требования к разрабатываемой АСНИ:
а) загрузка и сохранение множества изображений в форматах BMP, JPG или
PNG;
б) реализация наиболее широко используемых алгоритмов обработки и
анализа изображений;
в) возможность проведения экспериментов как с одним алгоритмом, так и с
20
их комбинацией;
г) возможность настройки параметров алгоритмов обработки и анализа
изображений;
д) возможность сравнения нескольких экспериментов на одном наборе
входных изображений;
г) возможность тестирования быстродействия алгоритмов, в том числе и на
случайных матрицах;
д) загрузка и сохранение состава и параметров экспериментов;
е) отображение результатов в виде обработанных изображений, а также
значений времени, затраченного на проведение экспериментов;
ж) отображение результатов одиночного эксперимента в виде пар
«исходное изображение – результат эксперимента»;
з) отображение результатов сравнения экспериментов в виде пар «исходное
изображение – результат эксперимента 1», «результат эксперимента 1 – результат
эксперимента 2» и т.д.;
и) переключение между парами результатов с помощью кнопок в главном
окне приложения.
Нефункциональные требования к разрабатываемой АСНИ:
а) кроссплатфоменность;
б) блокировка некорректных действий пользователя при работе с АСНИ;
в) контроль входных данных;
г) минимальная конфигурация ЭВМ:
- Intel Celeron G3900 2,8 ГГц или AMD FX-8300 3,3 ГГц;
- 4 Гб ОЗУ;
- 128 Гб ПЗУ;
- видеокарта с поддержкой NVIDIA CUDA или OpenCL и 1 Гб
видеопамяти.
21
2 МОДЕЛИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ АСНИ
МЕТОДОВ ОБРАБОТКИ И АНАЛИЗА ИЗОБРАЖЕНИЙ
2.1 Формализация процесса обработки и анализа изображений
Как было показано на рисунке 1, процесс обработки и анализа изображений
можно представить в виде следующих этапов:
а) предварительная обработка изображения;
б) сегментация изображения;
в) анализ изображения.
При этом могут выполняться как все три этапа, так и каждый из них
отдельно.
Формализованный процесс обработки и анализа изображений представлен
на рисунке 3.
Рисунок 3 – Формализованный процесс обработки и анализа изображения
На рисунке 3 приведены следующие обозначения:
«X» – исходное изображение;
«Ps» – параметры функции;
«X’» – промежуточный результат выполнения предварительной обработки
22
изображения, подаваемый на вход следующего этапа процесса;
«X’’» – промежуточный результат выполнения сегментации изображения,
подаваемый на вход следующего этапа процесса;
«Y» – выходное изображение;
«Z» – результаты анализа изображения.
На этапе предварительной обработки изображения производится улучшение
качества изображения. Входными данными является исходное изображение,
выходными – обработанное.
Таким образом, математическую модель предварительной обработки
изображения можно представить следующим образом:
[′, ′] = ([, ], ),
(1)
где Y – выходное изображение размером m’*n’ пикселей;
f – функция предварительной обработки изображения;
X – входное изображение размером m*n пикселей;
p – массив параметров функции предварительной обработки изображения.
При этом размерности входного и выходного изображений могут как
совпадать, так
и отличаться
в зависимости от применяемой функции
предварительной обработки изображения.
Под функцией предварительной обработки изображения понимается любая
из функций, выполняющих:
а) фильтрацию шумов на изображении;
б) сглаживание изображения;
в) усиление резкости изображения;
г) цветокоррекцию изображения;
д) геометрические преобразования изображения;
е) морфологические преобразования изображения.
Параметры, их тип, диапазон значений и количество различаются для
каждой функции предварительной обработки.
23
Следующим этапом является сегментация изображения – разделение
изображения на области, обладающие общим признаком. Целью данного этапа
является отделение объектов от фона. Входными данными на данном этапе
является изображение, выходными – изображение с выделенными объектами на
нем.
Таким образом, математическую модель сегментации изображения можно
представить в виде:
[′, ′] = ([, ], ),
(2)
где Y – выходное изображение размером m’*n’ пикселей;
g–
функция сегментации изображения;
X–
входное изображение размером m*n пикселей;
p–
массив параметров функции сегментации изображения.
При этом для входного и выходного изображения выполняются следующие
условия:
 = ′,
(3)
 = ′
(4)
Под функцией сегментации изображения понимается любая из функций
сегментации, основанная на:
а) пороговой обработке;
б) гистограммах;
в) поиске разрывов яркости;
г) преобразованиях Хафа;
д) теории графов;
е) методах водоразделов.
Параметры, их тип, диапазон значений и количество различаются для
каждой функции сегментации изображения.
Следующим этапом является анализ изображения. Под анализом в данном
случае понимается поиск и распознавание объектов на изображении, измерение
объектов на изображении, классификация объектов на изображении. Входными
24
данными является изображение, выходными – количественные значения
измерений объектов, классы объектов, изображения объектов.
Математическая модель анализа изображений имеет вид:
 = ℎ([1 , 1 ], ),
где Z –
(5)
результаты анализа изображения;
h–
функция анализа изображения;
X–
изображение размером m1*n1 пикселей;
p–
массив параметров функции анализа изображения.
При этом входным изображением может быть как все изображение
целиком, и тогда для изображения X выполняются условия (3) и (4), или
определенная его часть, так называемая «зона интереса» (ROI, region of interest).
Результатами анализа могут быть структура, массив чисел, строка или
изображения объектов.
Параметры, их тип, диапазон значений и количество различаются для
каждой функции анализа изображения.
Таким образом, математическую модель всего процесса обработки и
анализа изображений можно представить в виде:
, [′ , ′ ] = ℎ((([, ],   ),   ),  ℎ ),
(6)
где Zs – результаты анализа изображения;
Y–
выходное
изображение
с
результатами
предобработки
и/или
сегментации размером m’*n’ пикселей;
hs – набор функций анализа изображения;
gs – набор функций сегментации изображения;
fs –
набор функций предварительной обработки изображения;
X–
входное изображение размером m*n пикселей;
psfs– набор массивов параметров функций предварительной обработки
изображения f;
psgs – набор массивов параметров функций сегментации изображения g;
pshs – набор массивов параметров функций анализа изображения h.
25
При этом наборы функций удовлетворяют следующим условиям:
ℎ[1>0] () =  ,
(7)
[2>0] () = ,
(8)
[3>0] () = ,
(9)
ℎ[1=0] () = ,
(10)
[2=0] () = ,
(11)
[3=0] () = .
(12)
где hs – набор функций анализа изображения;
X–
входное изображение;
Zn – результаты анализа изображения;
gs – набор функций сегментации изображения;
Y–
выходное изображение;
fs –
набор функций предварительной обработки изображения;
n1 – количество функций в наборе hs;
n2 – количество функций в наборе gs;
n3 – количество функций в наборе fs.
То есть некоторые этапы могут отсутствовать в процессе обработки и
анализа изображений.
Наборы параметров однозначно соответствуют наборам функций:

1 (, 1 )
(,   ) =>

2 (, 2 ),
…

{ (,  )
(13)

1 (, 1 )
(,   ) =>

2 (, 2 ),
…

{ (,  )
(14)
26
ℎ1 (, 1ℎ )
ℎ(,  ℎ ) =>
ℎ2 (, 2ℎ ).
…
{ ℎ(, ℎ )
(15)
где fs – набор функций предварительной обработки изображения;
X–
входное изображение;
psfs– набор массивов параметров функций предварительной обработки
изображения f;
fi –
функция предварительной обработки изображения;
pifs – массив параметров функции предварительной обработки изображения.
gs – набор функций сегментации изображения;
psgs – набор массивов параметров функций сегментации изображения g;
gi –
функция сегментации изображения;
pigs – массив параметров функции предварительной обработки изображения;
hs – набор функций анализа изображения;
pshs – набор массивов параметров функций анализа изображения h.
hi –
функция анализа изображения;
pihs – массив параметров функции анализа изображения.
2.2 Модель проведения экспериментов в АСНИ методов обработки и
анализа изображений
В результате анализа поставленной задачи и требований к разрабатываемой
системе была разработана модель проведения экспериментов в АСНИ методов
обработки и анализа изображений, приведенная на рисунке 4.
На рисунке 4 представлены следующие обозначения:
а) «Xs» – набор входных изображений;
б) «Ys» – набор изображений, прошедших предварительную обработку
и/или сегментацию; при этом каждому изображению из набора соответствует
одно входное изображение:
27
Рисунок 4 – Модель проведения экспериментов в АСНИ методов обработки
и анализа изображений
[] = (([], 1 ),  2 ),
(16)
где i – индекс элемента набора.
в) «Zs» – набор результатов анализа изображения; содержимое каждого
элемента зависит от использованных функций анализа; при этом каждому
входному изображению соответствует один элемент набора:
[] = ℎ([],  3 )
(17)
г) «Ysi, Zsi» - наборы Ys и Zs из разных экспериментов, подлежащие
сравнению;
д) «fs<ps1>» - набор функций предварительной обработки изображений fs с
набором параметров ps1; при этом каждый элемент набора параметров является
массивом параметров p1 для соответствующей функции предварительной
обработки изображения f в соответствии с (9);
е) «gs<ps2>» - набор функций сегментации изображений gs с набором
параметров ps2; при этом каждый элемент набора параметров является массивом
параметров p2 для соответствующей функции предварительной обработки
изображения g в соответствии с (9);
28
3
ж) «hs<ps >» - набор функций анализа изображений hs с набором
параметров ps3; при этом каждый элемент набора параметров является массивом
параметров p3 для соответствующей функции предварительной обработки
изображения h в соответствии с (9);
з) «Exps» - набор экспериментов; каждый эксперимент описывается
формулой (6).
В соответствии с требованиями, эксперимент может проводиться не только
на одиночном изображении, но и на наборе изображений. После выбора
исследуемых
изображений,
выбираются
функции
обработки
и
анализа
изображений и устанавливаются их параметры, после чего выбранные функции
применяются к входным изображениям, возвращая результаты эксперимента.
В случае проведения нескольких экспериментов на одном наборе входных
изображений с целью сравнения результатов, формируется набор экспериментов
Exps, для каждого элемента которого выполняются описанные выше шаги, за
исключением выбора изображений. На схеме эти этапы заключены в
прямоугольник. Затем полученные результаты всех проведенных экспериментов
из набора Exps сравниваются между собой.
2.3 Разработка функциональной модели АСНИ методов обработки и
анализа изображений
В результате анализа поставленной задачи и требований к разрабатываемой
системе была разработана функциональная модель АСНИ методов обработки и
анализа изображений, которая представлена на рисунке 5.
Разрабатываемая
функционал:
система
предоставляет
пользователю
следующий
29
Рисунок 5 – Функциональная модель АСНИ методов обработки и анализа
изображений
а) действия с входными данными:
- загрузка и сохранение до 50 изображений в форматах JPG, BMP и
PNG с проверкой формата файла, возможности открытия, чтения и записи, и
уведомлением об ошибках в случае их возникновения;
- создание случайных матриц желаемого размера для теста
быстродействия алгоритмов.
б) действия с набором экспериментов и их составом:
- добавление экспериментов в систему и удаление из нее;
- загрузка ранее созданных и сохранение текущих экспериментов с
проверкой формата файла, возможностью открытия, чтения и записи, и
уведомлением об ошибках в случае их возникновения;
- добавление и удаление функций обработки и анализа изображений,
30
среди которых:
1) функции фильтрации изображения;
2) функции выделения контуров и сегментации;
3) функции морфологической трансформации;
4) функции геометрической трансформации;
5) функции поиска объектов на изображении;
6) функции коррекции яркости и контрастности изображения
- настройка различных параметров функций обработки и анализа
изображений.
в) проведение экспериментов:
- режим теста на изображениях – система последовательно применяет
все функции обработки из состава эксперимента к входному набору
изображений
и
возвращает
набор
обработанных
изображений
без
промежуточных результатов;
- режим теста быстродействия алгоритмов – система последовательно
применяет все функции обработки из состава эксперимента к входному
набору изображений или к набору случайных матриц и возвращает таблицу
значений времени, затраченного на эксперимент, для каждого изображения;
- сравнение экспериментов – действует в обоих режимах, система
последовательно проводит выбранные эксперименты на одном входном
наборе изображений или случайных матриц и возвращает результаты
каждого эксперимента отдельно;
- отображение результатов эксперимента:
1) для теста на изображениях: в виде набора обработанных
изображений;
2) для теста быстродействия алгоритмов: в виде таблицы со
значениями времени, затраченного на проведение эксперимента для
каждого изображения или случайной матрицы.
31
2.4 Разработка модели поведения АСНИ методов обработки и анализа
изображений
В результате анализа постановки задачи и требований к разрабатываемой
системе, а также модели вариантов использования была разработана обобщенная
модель
поведения
АСНИ
методов
обработки
и
анализа
изображений,
представленная на рисунке 6.
На рисунке 6 использовались следующие обозначения условий переходов:
- «С1» – выполнение инициализации программы;
- «С2» – нажатие пункта меню «Загрузить изображения»;
- «С3» – нажатие пункта меню «Сохранить изображение»;
- «С4» – выбран режим работы «Тест быстродействия алгоритмов» и
нажатие кнопки «Сгенерировать матрицу»;
- «С5» – нажатие кнопки «Добавить эксперимент»;
- «С6» – нажатие кнопки «Загрузить эксперимент»;
- «С7» – нажатие кнопки «Сохранить эксперимент»;
- «С8» – нажатие кнопки «Удалить эксперимент»;
- «С9» – нажатие кнопки «Добавить в эксперимент»;
- «С10» – нажатие кнопки «Удалить из эксперимента»;
- «С11» – изменение положения слайдеров настройки параметра функции
обработки изображения;
- «С12» – выбран режим «Тест на изображениях» и нажатие кнопки
«Применить»;
- «С13» – выбран режим «Тест быстродействия алгоритмов» и нажатие
кнопки «Применить»;
- «С14» – невыполнение одного из двух предыдущих условий;
- «С15» – нажатие кнопки выхода из программы;
- «С16» – нажатие «Сохранить» в диалоговом окне;
- «С17» – загрузка изображений успешна;
32
Рисунок 6 – Обобщенная модель поведения АСНИ методов обработки и
анализа изображений
33
- «С18» – загрузка эксперимента успешна;
- «С19» – внесены корректные размерности матрицы.
После запуска программы производится инициализация компонентов и
переменных программы, формирование графического интерфейса и отображение
главного окна на экране. После этого программа ожидает действий пользователя.
Если пользователь нажал на пункт меню «Загрузить изображения», то
программа отображает системное диалоговое окно выбора файлов, получает пути
выбранных файлов и пытается открыть и прочитать их. Если загрузка прошла
успешно, то в главном окне в специальной области появится первое загруженное
изображение и программа вернется в режим ожидания. Если же в процессе
загрузки
возникла
ошибка,
то
пользователь
получит
соответствующее
уведомление, программа отобразит успешно загруженные изображения, если
таковые имеются, и вернется в режим ожидания.
Если пользователь нажал на пункт меню «Сохранить изображение», то
программа отображает системное диалоговое окно выбора файлов, получает
выбранные пути и пытается открыть или создать, и записать данные в выбранные
файлы. В зависимости от успешности выполнения сохранения, пользователь
получит соответствующее уведомление, и программа вернется в режим ожидания.
Если пользователь выбрал режим теста быстродействия алгоритмов и нажал
на кнопку «Сгенерировать», то программа проверяет, заполнены ли поля
размерностей матрицы и соответствуют ли они диапазону. Если все условия
выполнены, то создается матрица указанной размерности со случайными
элементами, иначе выдается сообщение об ошибке.
Если пользователь нажал на кнопку «Добавить эксперимент», то программа
добавляет новый элемент в список экспериментов и создает новый экземпляр
класса экспериментов, после чего возвращается в режим ожидания.
Если пользователь нажал на кнопку «Удалить эксперимент», то программа
удаляет выбранный эксперимент из списка экспериментов и освобождает
занимаемую соответствующим экземпляром класса память.
34
Если пользователь нажал на кнопку «Загрузить эксперимент», то программа
отображает системное диалоговое окно выбора файла, получает путь выбранного
файла и пытается его прочитать. Если загрузка прошла успешно, то в
соответствующие
списки
добавляются
элементы:
эксперимент,
функции
обработки изображений, связанные с ним и их параметры, и программа
возвращается в режим ожидания. Если же в процессе загрузки произошла ошибка,
то пользователь получит соответствующее уведомление, и программа вернется в
режим ожидания.
Если пользователь нажал на кнопку «Сохранить эксперимент», то
программа отображает системное диалоговое окно выбора файла, получает путь
выбранного файла и пытается произвести запись. В зависимости от результата
операции, пользователь получит соответствующее уведомление, и программа
вернется в режим ожидания.
Если было зарегистрировано нажатие на кнопку «Добавить в эксперимент»,
то программа добавляет выбранную функцию обработки изображения в список
функций эксперимента.
Если
было
эксперимента»,
то
зарегистрировано
программа
нажатие
удаляет
на
кнопку
выбранную
«Удалить
функцию
из
обработки
изображения из списка функций эксперимента.
Если пользователь изменил положение любого слайдера настройки
параметров
функции
соответствующий
обработки
параметр
изображения,
выбранной
функции
то
программа
обработки
изменяет
изображения,
отображая изменения в списке функций эксперимента.
Если пользователь нажал кнопку «Применить» и при этом АСНИ находится
в режиме теста на изображениях, то программа проверяет, выбраны ли
эксперименты, загружены ли входные изображения и есть ли хотя бы одна
функция обработки в каждом выбранном эксперименте. Если все условия
выполняются, то программа проводит выбранное количество экспериментов и
отображает результаты в специальной области главного окна приложения. Если
35
был проведен одиночный эксперимент, то результат будет в виде «исходное
изображение – результат эксперимента», если же были проведены несколько
экспериментов, то результаты будут в виде «результат эксперимента 1 – результат
эксперимента 2 – ... – результат эксперимента N», где N – количество
проведенных экспериментов. Если же какое-то из условий не выполнено, то
программа выдаст уведомление об ошибке и вернется в режим ожидания.
Если пользователь нажал на пункт меню «Выход» или на кнопку закрытия
приложения, то программа отобразит диалоговое окно с предложением сохранить
эксперименты и их результаты, если таковые имеются. Если пользователь
нажимает «Сохранить» в диалоговом окне, то программа ведет в себя как при
нажатии кнопок «Сохранить изображения» и «Сохранить эксперимент». Если
пользователь нажал «Не сохранять», закрыл диалоговое окно или прервал процесс
сохранения, то программа завершает работу.
36
3 ПРОЕКТИРОВАНИЕ АСНИ МЕТОДОВ ОБРАБОТКИ И АНАЛИЗА
ИЗОБРАЖЕНИЙ
3.1 Общая структура АСНИ методов обработки и анализа изображений
В результате анализа постановки задачи и требований к разрабатываемой
системе была разработана общая структура ПО АСНИ методов обработки и
анализа изображений, представленная на рисунке 7.
Рисунок 7 – Общая структура ПО АСНИ методов обработки и анализа
изображений
На рисунке 7 приведены следующие обозначения.
«GUI» – графический интерфейс приложения.
«Класс GUI» – класс ПО АСНИ методов обработки и анализа изображений,
содержащий
атрибуты
и
методы,
определяющие
и
обрабатывающие
взаимодействие пользователя и графического интерфейса. Также в этом классе
включены методы отрисовки и изменения состава элементов пользовательского
интерфейса.
«Класс эксперимента» – класс ПО АСНИ методов обработки и анализа
изображений, содержащий атрибуты и методы, определяющие состав и
37
параметры эксперимента и управляющие его проведением;
- «Изображения» – структуры, содержащие параметры входных и выходных
изображений и их растры;
- «Класс работы с изображениями» - класс ПО АСНИ методов обработки и
анализа изображений, включающий в себя атрибуты и методы, необходимые для
реализации алгоритмов обработки и анализа изображения.
3.2 Проектирование основных классов ПО АСНИ методов обработки и
анализа изображений
В соответствии с приведенной на рисунке 5 общей структурой ПО АСНИ
методов обработки и анализа изображений были спроектированы основные
классы ПО АСНИ методов обработки и анализа изображений.
Класс GUI содержит следующие атрибуты:
а) сообщение – строка, содержимое которой выводится в диалоговом окне
уведомлений; в зависимости от ситуации, может содержать сообщение об
ошибке, код ошибки или информационное сообщение;
б) режим работы – числовая переменная, хранящая текущий режим работы
АСНИ методов обработки и анализа изображений;
в) сцены отображения изображений – объекты, в которых отображаются
исходные и результирующие изображения в главном окне приложения.
Класс GUI содержит следующие методы:
а) обработчики нажатия на кнопки – в зависимости от того, какая кнопка и в
какой момент нажата, выполняют определенные действия, например, добавляют
функцию обработки и анализа изображения в состав эксперимента или проводят
эксперимент;
б) обработчики нажатия на элементы списков функций, экспериментов и
состава эксперимента – выделяют выбранный элемент списка для последующего
обращения к соответствующему объекту;
38
в) обработчики нажатия на пункты меню – по аналогии с обработчиками
нажатия кнопок, выполняют различные действия (сохранение эксперимента,
загрузка изображений и т.д.) в зависимости от того, какой из пунктов меню был
нажат;
г) обработчики перемещения слайдеров – изменяют связанный со
слайдером параметр функции обработки и анализа изображений;
д) проверка пользовательского ввода – проверяет корректность введенной
пользователем информации и уведомляет об ошибках в случае их возникновения,
например, при вводе букв в поле для числового параметра;
е) отображение изображений на экране – данный метод выполняет
преобразования матриц изображений для отображения их в специально
отведенных областях на экране;
ж) вызов системных диалоговых окон – вызывает системное диалоговое
окно для работы с файлами (открытие, сохранение, создание файлов);
з) уведомление пользователя – вызывает диалоговое окно, содержащее
сообщение об ошибке или информационное сообщение.
Класс эксперимента содержит следующие атрибуты:
а) состав эксперимента – массив объектов класса «Функция», содержит
название функции, названия параметров и их значения;
б)
название
эксперимента
–
строка,
содержащая
идентификатор
эксперимента;
в) путь к файлу с экспериментом – строка, содержащая путь к файлу с
экспериментом для сохранения; может быть пустым.
Класс эксперимента содержит следующие методы:
а) добавление функции обработки и анализа изображений в состав
эксперимента — данный метод принимает на вход ссылку на выбранную
функцию обработки и анализа изображений и помещает ее в список состава
эксперимента;
б) удаление функции обработки и анализа изображений из состава
39
эксперимента — данный метод принимает на вход ссылку на выбранную
функцию обработки и анализа изображений и удаляет ее из списка состава
эксперимента;
в) установка параметров функции обработки и анализа изображений —
данный метод принимает на вход массив численных параметров и записывает их
в соответствующие поля функции обработки и анализа изображений;
г) возврат данных о составе эксперимента — данный метод возвращает
массив объектов — имен функций и связанных с ними параметров;
д) возврат данных о функции — данный метод принимает на вход ссылку на
функцию обработки и анализа изображений и возвращает название функции и
связанные с ней параметры;
е) проведение эксперимента – данный метод использует список функций из
состава эксперимента и в соответствии с ним вызывает требуемые функции
обработки и анализа изображения, после чего возвращает результирующие
изображения или результаты анализа.
Класс работы с изображениями содержит следующие атрибуты:
а) изображения – массив объектов класса «Изображение», содержит
параметры изображений, их растры, а также пути к файлам с изображениями.
Класс работы с изображениями содержит следующие методы:
а) функции фильтрации изображения – данные методы выполняют
фильтрацию шумов и сглаживание изображения, принимая на вход исходное
изображение и возвращая обработанное;
б) функции выделения контуров и сегментации – данные методы помогают
выделить на изображении объекты или области, принимая на вход исходное
изображение и возвращая обработанное;
в) функции морфологической трансформации – данные методы выполняют
морфологическую трансформацию изображения, принимая на вход исходное
изображение и возвращая обработанное;
г) функции геометрической трансформации – данные методы выполняют
40
геометрические преобразования изображения, принимая на вход исходное
изображение и возвращая обработанное;
д) функции поиска объектов на изображении – данные методы выделяют
объекты на изображении по базе образцов, принимая целое исходное
изображение и возвращая или целое изображение с отмеченными на нем
объектами или изображения самих выделенных объектов, в зависимости от
метода;
е) функции коррекции яркости и контрастности изображения – данные
методы
выполняют
цветокоррекцию
изображения,
принимая
исходное
изображение и возвращая обработанное;
ж) загрузка изображений – метод, выполняющий загрузку изображений по
указанным путям к файлам;
з)
сохранение
изображений
–
метод,
выполняющий
сохранение
изображений по указанным путям к файлам.
Класс «Изображение» содержит следующие атрибуты:
а) ширина изображения – целочисленная переменная, хранящая ширину
изображения в пикселях;
б) высота изображения – целочисленная переменная, хранящая высоту
изображения в пикселях;
в) глубина цвета изображения – целочисленная переменная, хранящая
глубину цвета изображения в битах;
г) цветовая схема изображения – переменная перечисляемого типа, может
принимать значения «RGB», «BGR», «HSV», «RGBA», «BGRA», «MONO»,
«GRAY» и «YCrCb»;
д) матрица изображения – двумерный массив пикселей, каждый из которых,
в зависимости от цветовой схемы изображения, может быть как одиночным
значением, так и вектором, длина которого равна числу каналов изображения;
е) путь к файлу с изображением – строка, содержащая путь, по которому
было загружено изображение.
41
Класс «Изображение» содержит следующие методы:
а) установить ширину изображения – данный метод принимает на вход
числовое значение ширины в пикселях и устанавливает его, как текущее;
б) установить высоту изображения – данный метод принимает на вход
числовое значение высоты изображения в пикселях и устанавливает его, как
текущее;
в) установить глубину цвета изображения – данный метод принимает на
вход числовое значение, которое соответствует определенной глубине цвета
изображения и устанавливает его, как текущее;
г) установить цветовую схему изображения – данный метод принимает на
вход числовое значение, соответствующее определенной цветовой схеме, и
выполняет преобразование матрицы изображения из текущей цветовой схемы в
новую;
д) установить матрицу изображения – данный метод принимает указатель
на массив байт и устанавливает его, как текущую матрицу изображения;
е) установить путь к изображению – данный метод принимает строку с
абсолютным путем к изображению и устанавливает ее в качестве текущего пути;
ж) получить ширину изображения – данный метод возвращает текущее
значение ширины изображения в пикселях;
з) получить высоту изображения – данный метод возвращает текущее
значение высоты изображения в пикселях;
и) получить глубину цвета изображения – данный метод возвращает
текущее значение глубины цвета изображения в битах;
к) получить цветовую схему изображения – данный метод возвращает
текущую цветовую схему изображения;
л) получить матрицу изображения – данный метод возвращает указатель на
массив байт, соответствующих пикселям изображения;
м) получить путь к изображению – данный метод возвращает строку,
содержащую текущий путь к изображению.
42
Класс «Функция обработки и анализа изображений» содержит следующие
атрибуты:
а) название функции – строка, содержащая название функции обработки и
анализа изображений;
б) параметры функции обработки и анализа изображений – численные
атрибуты, количество и тип которых различен для каждой функции обработки и
анализа изображения; определяются в подклассах, являющимися потомками
данного класса.
Класс «Функция обработки и анализа изображения» содержит следующие
методы:
а) получить название функции – данный метод возвращает строку,
содержащую название функции;
б) получить параметры функции – данный метод возвращает набор
параметров функции обработки и анализа изображений и их текущие значения;
в) установить название функции – данный метод принимает на вход строку,
содержащую название функции и устанавливает ее как текущее название функции
обработки и анализа изображений;
г) установить параметр функции – данный метод принимает численное
значение параметра функции и устанавливает его, как текущее значение
параметра функции обработки и анализа изображений
д) обработка или анализ изображения – данный метод принимает на вход
параметры функции обработки и анализа изображений и выполняет определенные
преобразования изображения в зависимости от выбранной функции.
3.3 Разработка модели коммуникаций АСНИ методов обработки и
анализа изображений
В результате анализа постановки задачи и требований к разрабатываемой
системе была разработана модель коммуникаций АСНИ методов обработки и
анализа изображений, представленная на рисунке 8.
43
Рисунок 8 – Модель коммуникаций АСНИ методов обработки и анализа
изображений
На
рисунке
8
представлены
следующие
обозначения
сообщений,
пересылаемых между различными блоками программы. При этом сообщением
могут быть как данные, так и вызовы функций соответствующих программных
блоков:
«С1» – вызов обработчиков нажатия на элемент графического интерфейса
приложения АСНИ методов обработки и анализа изображений;
«С2» – вызов системного диалогового окна открытия файлов;
«С3» – растры изображений;
«С4» – пути к файлам с изображениями;
44
«С5» – вызов функций загрузки или сохранения изображений;
«С6» – код ошибки;
«С7» – вызов диалогового окна уведомлений;
«С8» – пути к файлам с экспериментами;
«С9» – добавление нового элемента в список;
«С10» – удаление выбранного элемента из списка;
«С11» – выбранные элементы в списке;
«С12» – создание и инициализация нового экземпляра класса
экспериментов;
«С13» – уничтожение и очистка памяти соответствующего экземпляра
класса экспериментов;
«С14» – добавление выбранной функции в список функций эксперимента;
«С15» – вызов функций из списка функций эксперимента;
«С16» – данные эксперимента;
«С17» – значение параметров;
«С18» – состав элементов управления параметрами.
Действия пользователя с различными элементами графического интерфейса
АСНИ методов обработки и анализа изображения инициируют отправку
сообщения о действии от элемента графического интерфейса к классу GUI,
который, в зависимости от назначения элемента, отправляет соответствующие
сообщения другим классам программного обеспечения.
3.4 Основные алгоритмы АСНИ методов обработки и анализа
изображений
В результате анализа поставленной задачи и требований к разрабатываемой
АСНИ методов обработки и анализа изображений, а также, исходя из
моделирования процесса АСНИ методов обработки и анализа изображений, были
разработаны основные алгоритмы АСНИ методов обработки и анализа
изображений.
45
3.4.1 Алгоритм загрузки файлов в АСНИ методов обработки и анализа
изображений
Алгоритм загрузки одинаков для файлов с изображениями и для файлов
экспериментов,
различаются
только
получатели
данных
(объект
класса
«Изображение» или объект класса «Эксперимент»).
Так, при нажатии пользователем пунктов меню «Загрузить изображения»
или «Загрузить эксперимент» программа АСНИ вызывает системное диалоговое
окно для загрузки файлов. Пользователь может выбрать один или несколько
файлов, или закрыть окно.
В первом случае программа получает пути к выбранным файлам и пытается
открыть каждый из них. Если открыть файл не удалось, программа уведомляет
пользователя об ошибке и переходит к следующему файлу.
Если файл был успешно открыт, то программа проверяет его содержимое.
Если обнаружены нарушения целостности файла, служебной информации файла
или его формата, то программа уведомляет пользователя об ошибке, закрывает
файл и переходит к следующему файлу.
Если проверка файла прошла успешно, то программа копирует данные из
файла в соответствующие поля получателя данных. Например, если открываемым
файлом является изображение, то будут скопированы данные из заголовка файла,
такие как ширина и высота изображения, глубина цвета, цветовая схема
изображения, а также сам растр изображения. В случае с файлом эксперимента –
название эксперимента, список функций обработки и анализа изображений и их
параметров.
После копирования программа закрывает файл и переходит к следующему.
Если список путей пуст, то алгоритм завершает работу.
Если пользователь закрыл диалоговое окно, то алгоритм прекращает работу.
Описанный выше алгоритм загрузки файлов в АСНИ методов обработки и
анализа изображений представлен на рисунке 9.
46
Рисунок 9 – Алгоритм загрузки файлов в АСНИ методов обработки и
анализа изображений
47
3.4.2 Алгоритм сохранения файлов в АСНИ методов обработки и
анализа изображений
Алгоритм сохранения одинаков для файлов с изображениями и для файлов
экспериментов,
различаются
только
источники
данных
(объект
класса
«Изображение» или объект класса «Эксперимент»).
Так, при нажатии пользователем пунктов меню «Сохранить изображения»
или «Сохранить эксперимент» программа АСНИ вызывает системное диалоговое
окно для сохранения файлов. Пользователь может выбрать один или несколько
файлов, или закрыть окно.
В первом случае программа получает пути к выбранным файлам и пытается
открыть каждый из них. Если открыть файл не удалось, программа уведомляет
пользователя об ошибке и переходит к следующему файлу.
Если файл был успешно открыт, то программа проверяет его содержимое.
Если обнаружены нарушения целостности файла, служебной информации файла
или его формата, то программа уведомляет пользователя об ошибке, закрывает
файл и переходит к следующему файлу.
Если проверка файла прошла успешно, то программа стирает его текущее
содержимое и копирует данные из полей объекта-источника в файл. Например,
для сохранения изображения программа будет формировать заголовок в
соответствии с форматом изображения, который будет содержать размеры
изображения, глубину цвета, цветовую схему, а также растр. Для сохранения
эксперимента программа просто скопирует поля соответствующего объекта.
После копирования программа закрывает файл и переходит к следующему.
Если список путей пуст, то алгоритм завершает работу.
Если пользователь закрыл диалоговое окно сохранения, не выбрав ни
одного файла, то алгоритм завершает свою работу.
Описанный выше алгоритм загрузки файлов в АСНИ методов обработки и
анализа изображений представлен на рисунке 10.
48
Рисунок 10 – Алгоритм сохранения файлов в АСНИ методов обработки и
анализа изображений
49
3.4.3 Алгоритм проведения экспериментов в АСНИ методов обработки
и анализа изображений
Алгоритм проведения экспериментов в АСНИ методов обработки и анализа
изображений начинает свою работу по нажатию кнопки «Применить» в главном
окне приложения.
Сначала
программа
получает
списки
входных
изображений
и
экспериментов, проверяет, что они не пусты. Если в списках нет элементов,
программа сообщает пользователю об ошибке и алгоритм завершает свою работу.
В противном случае для каждого выбранного для проведения эксперимента
проверяется список функций обработки и анализа изображений. Если этот список
пуст, то программа сообщает пользователю об ошибке и алгоритм завершает
свою работу. В противном случае функция берет по порядку функции из списка и
применяет их к входному изображению следующим образом: первая функция из
списка применяется к входному изображению, вторая – к результату выполнения
первой и так далее.
После
того, как будут применены все функции обработки и анализа,
программа отображает результаты проведения эксперимента для данного
изображения и переходит к следующему изображению.
Если эксперименты был проведен на всех входных изображениях,
программа переходит к следующему эксперименту и процесс повторяется до тех
пор, пока не будут проведены все выбранные эксперименты из списка.
В
результате
работы
алгоритма
получится
массив
обработанных
изображений и/или результатов их анализа, а также времена, затраченные на
проведение экспериментов для каждого входного изображения.
Описанный алгоритм проведения экспериментов в АСНИ методов
обработки и анализа изображений приведен на рисунке 11.
50
Рисунок 11 – Алгоритм проведения экспериментов в АСНИ методов
обработки и анализа изображений
51
4 РЕАЛИЗАЦИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ АСНИ
МЕТОДОВ ОБРАБОТКИ И АНАЛИЗА ИЗОБРАЖЕНИЙ
4.1 Особенности реализации программного обеспечения АСНИ методов
обработки и анализа изображений
При реализации программного обеспечения АСНИ методов обработки и
анализа изображений широко использовались возможности открытой библиотеки
компьютерного зрения OpenCV.
Данная библиотека была выбрана ввиду того, что она содержит
большинство наиболее часто используемых алгоритмов обработки и анализа
изображений, а также имеет поддержку технологий CUDA и OpenCL. Таким
образом, разрабатываемая АСНИ сможет предложить алгоритм обработки и
анализа для практически любых видов изображений.
В разрабатываемом ПО АСНИ методов обработки и анализа изображений
используются следующие функции библиотеки OpenCV:
а) фильтры:
- размытие по Гауссу;
- бокс-фильтр;
- медианный фильтр;
- билатеральный фильтр;
- адаптивный пороговый фильтр;
- сглаживание по L0 градиенту;
- повышение резкости;
- пороговый фильтр;
- искажение;
- распространение яркости.
б) алгоритмы выделения контуров:
- оператор Собеля;
- оператор Лапласа;
52
- оператор Кэнни;
- оператор Робертса;
- выделение контуров методами морфологии.
в) функции геометрической трансформации изображения:
- поворот изображения;
- аффинное преобразование изображения;
- масштабирование изображения
г) функции морфологической трансформации изображения:
- эрозия;
- дилатация;
- замыкание;
- размыкание.
д) функции изменения яркости и контрастности изображения:
- расчет гистограммы;
- эквализация гистограммы;
- изменение контрастности;
- изменение цветового баланса;
- изменение цветовой схемы изображения;
е) функции поиска объектов на изображении:
- SURF;
- SIFT;
- ORB.
ж) функция проведения измерений.
Каждый алгоритм имеет настраиваемые параметры, управление которыми
осуществляется пользователем с помощью графического интерфейса приложения.
Для реализации графического интерфейса использовался фреймворк Qt 5.8.
Вся работа с изображением проводится с исключительно использованием
программных средств и типов данных библиотеки OpenCV. Для отображения
результата на экране, проводятся дополнительные преобразования изображения в
53
формат фреймворка Qt.
Qt – кроссплатформенный фреймворк для разработки программного
обеспечения на C++, Python и некоторых других. Данный фреймворк был выбран
ввиду поддержки кроссплатформенности, удобной системы встроенных классов,
покрывающих большинство потребностей разработчика на C++, а также за
возможность относительно простого создания графического интерфейса.
Листинг программы приведен в приложении.
4.2 Особенности проведения экспериментов в АСНИ методов обработки
и анализа изображений
Разрабатываемая АСНИ методов обработки и анализа изображений имеет
два режима работы:
- тест на изображении;
- тест быстродействия алгоритма.
Вид главного окна приложения в режиме теста на изображении приведен на
рисунке 12.
Рисунок 12 – Главное окно АСНИ методов обработки и анализа
изображений
Главное окно приложения имеет следующие области:
54
1) список экспериментов;
2) список функций обработки и анализа изображений в выбранном
эксперименте;
3) список всех доступных функций обработки и анализа изображений;
4) область настройки параметров выбранной функции обработки и анализа
изображения;
5) область отображения результатов эксперимента.
Пользователь может создать новый эксперимент или загрузить ранее
созданный, после чего добавить и настроить требуемые функции обработки и
анализа изображений. Каждая функция имеет свой набор управляемых
параметров, из-за чего область настройки параметров имеет разное количество
элементов управления в зависимости от выбранной функции.
АСНИ методов обработки и анализа изображений позволяет загрузить до 50
входных изображений в форматах BMP, JPG или PNG, после чего применяет
функции из выбранного эксперимента к загруженным изображениям.
Нажатие кнопки «Применить» запускает выполнение эксперимента на
загруженном наборе изображений. АСНИ последовательно выбирает функции из
списка функций эксперимента и применяет их к каждому загруженному
изображению. Промежуточные результаты эксперимента не сохраняются.
Результат работы АСНИ отображается на экране: в области отображения
результатов эксперимента слева располагается исходное изображение, справа –
обработанное. Также АСНИ замеряет время, затраченное на проведение
эксперимента, и показывает его на экране в специальном поле в области
отображения результатов. В случае загрузки нескольких изображений, результаты
эксперимента можно пролистывать с помощью кнопок в области отображения
результатов эксперимента.
Также предусмотрена возможность сравнения экспериментов. АСНИ
позволяет выбрать до четырёх экспериментов и применить их к одному набору
входных изображений.
55
Принцип работы остается тем же, что и при одиночном прогоне
эксперимента: АСНИ берет выбранные функции и применяет их к каждому
входному изображению. Но в данном случае подобная процедура выполняется
отдельно для каждого сравниваемого эксперимента. Таким образом, для каждого
входного изображения может получиться до четырёх выходных изображений.
При этом результаты работы АСНИ можно пролистывать с помощью кнопок в
области отображения результатов эксперимента.
После
окончания
эксперимента,
АСНИ
предоставляет
возможность
сохранения результатов эксперимента в виде изображений в форматах BMP, JPG
или PNG, а также сохранения настроек экспериментов для последующего
использования.
Данный режим работы АСНИ позволяет разработчику:
-
понять, как работают те или иные алгоритмы обработки и анализа
изображений в отдельности или в комбинации с другими алгоритмами;
-
оценить
эффективность
работы
различных
алгоритмов
или
их
комбинаций на выбранных изображениях.
В режиме теста быстродействия алгоритма, программа генерирует
случайную матрицу размерностью от 512х512 до 16384х16384 элементов и
проводит выбранный эксперимент над сгенерированной матрицей. Если были
заданы несколько размерностей, то создаются несколько матриц и эксперимент
проводится с каждой из них.
В этом режиме также возможно сравнение экспериментов. Принцип работы
остается тем же, что и для одиночного эксперимента, но для каждой матрицы
будет несколько результатов по количеству проводимых экспериментов.
Результаты экспериментов отображаются в таблице в области отображения
результатов эксперимента. Строками таблицы являются размерности матриц,
столбцами – выбранные эксперименты. Элементами таблицы являются значения
времени, затраченного на проведение эксперимента для каждой выбранной
размерности входной матрицы.
56
Данный режим работы АСНИ позволяет разработчику оценить, сколько
времени займет обработка изображения определенной размерности с помощью
определенного алгоритма или их комбинации.
4.3 Примеры работы программного обеспечения АСНИ методов
обработки и анализа изображений
Для тестирования работы АСНИ методов обработки и анализа изображения
была поставлена задача обработки аэрофотоснимков.
Задача заключалась в следующем: имелось несколько аэрофотоснимков
полей, на них требовалось выделить границы участков поля и дороги с помощью
методов обработки и сегментации изображения. Размер исходных изображений:
4032*3024 пикселей.
Для
решения
поставленной
задачи
требовалось
найти
наиболее
эффективную комбинацию методов обработки изображений.
Для примера будет рассмотрено проведение экспериментов на одном из
исходных изображений.
Исходное изображение представлено на рисунке 13.
Рисунок 13 – Пример работы АСНИ методов обработки и анализа
изображений: исходное изображение
57
Процесс обработки начался с перевода изображений в градации серого и
эквализации их гистограмм для улучшения качества изображения, а именно для
достижения примерно равномерного распределения всех уровней яркости на
изображениях.
После этого к изображениям был применен бокс-фильтр с размером ядра
25*25 пикселей для устранения шумов и сглаживания изображения.
Наконец, к прошедшим предварительную обработку изображением была
применена функция сегментации изображения – оператор Собеля с размером ядра
5*5 пикселей.
Данная последовательность методов обработки изображения была условно
названа «Эксперимент №1»
Результат проведения эксперимента №1 приведен на рисунке 14.
Рисунок 14 – Пример работы АСНИ методов обработки и анализа
изображений: эксперимент №1
Как видно из рисунка 14, приведенная выше комбинация методов обработки
позволила выделить основные элементы на изображении, но так же сохранила
58
много ненужных деталей, как, например, полосы на дороге, хотя контуры самих
участков полей видны довольно отчетливо.
Поэтому в эксперимент были внесены изменения: оператор Собеля был
заменен оператором Лапласа с ядром размером 5*5 пикселей – эксперимент №2.
Результат проведения эксперимента № 2 приведены на рисунке 15.
Рисунок 15 – Пример работы АСНИ методов обработки и анализа
изображений: эксперимент №2
Как видно из рисунка 15, разница с экспериментом №1 практически
незаметна: чуть меньше незначительных деталей, но в целом качество обработки
все еще недостаточное.
В состав эксперимента снова были внесены изменения: ядро бокс-фильтра
было установлено на величину 11*11 пикселей, после чего к изображению был
применен пороговый фильтр со значением порога 50 и методом фильтрации
truncate, который описывается формулой (18):
(, ) = {
,
(, ) > 
(, ), (, ) ≤ 
(18)
59
где Y – выходное изображение;
i, j – индексы пикселя в матрице изображения;
t–
значение порога фильтра.
X–
входное изображение;
После этого к полученному изображению был применен оператор Лапласа с
ядром 7*7 пикселей.
Данная
последовательность
методов
получила
условное
название
«эксперимент №3».
Результаты проведения эксперимента №3 приведены на рисунке 16.
Рисунок 16 – Пример работы АСНИ методов обработки и анализа
изображений: эксперимент №3
Как видно из рисунка 16, комбинация методов обработки изображения в
эксперименте №3 оказалась более эффективной, чем в предыдущих двух.
Контуры выделены более отчетливо, большая часть шумов и незначительных
элементов была устранена, однако, в местах, где таких элементов было больше
всего, оказались разрушены некоторые контуры.
60
4.4 Оценка времени, затраченного на подготовку и проведение
экспериментов в АСНИ методов обработки и анализа изображений
Одной из важных характеристик АСНИ является то, насколько быстро в ней
проводятся эксперименты, то есть, сколько времени затрачивает исследователь на
работу в АСНИ с момента выбора изображений и до получения результата
эксперимента. Это время зависит от степени автоматизации АСНИ, от удобства
пользовательского интерфейса и т.д.
Для оценки данного показателя был проведен сравнительный тест
разработанной АСНИ методов обработки и анализа изображений, графического
редактора GIMP и программы для анализа медицинских изображений ImageJ. В
каждой программе проводился один и тот же эксперимент:
а) загрузка входного набора из 5, 10, 15, 20, 25 и 30 изображений примерно
одинакового размера;
б) выбор и настройка методов обработки и анализа изображений:
1) эквализация гистограммы;
2) медианная фильтрация с размером ядра фильтра 9*9 пикселей;
3) оператор Собеля с параметрами:
- размер ядра оператора: 7*7 пикселей;
- альфа-компонента: 0,75;
- бета-компонента: 0,5.
в) применение выбранных методов к загруженным изображениям;
г) получение результатов эксперимента.
Тестирование проводилось на ЭВМ со следующими характеристиками:
а) процессор: i3-2370M 2,4 ГГц;
б) ОЗУ: 4 Гб;
в) видеоадаптер: NVIDIA GeForce GT630M 2 Гб;
г) ОС: Windows 10 Pro.
Результаты теста приведены на рисунке 17.
61
1000
900
800
Время, с
700
600
АСНИ
500
GIMP
400
ImageJ
300
200
100
0
5
10
15
20
Количество входных изображений
25
30
Рисунок 17 – Тест программных средств для оценки времени,
затрачиваемого исследователем на подготовку и проведение эксперимента
Как видно из рисунка 17, исследователь потратит на подготовку и
проведение эксперимента в разработанной АСНИ методов обработки и анализа
изображений меньше времени, чем в остальных протестированных программных
продуктах и эта разница будет увеличиваться с увеличением набора входных
изображений.
Причиной подобной разницы является отсутствие автоматизации процесса
обработки изображения у рассматриваемых аналогов.
GIMP позволяет загружать несколько изображений одновременно, но
выбирать, настраивать и применять методы обработки необходимо вручную для
каждого изображения. Соответственно, это создает большие неудобства в случае,
когда набор состоит из нескольких десятков изображений.
ImageJ, несмотря на предоставляемые возможности по обработке и анализу
изображений, позволяет загружать только по одному изображению за раз. Выбор,
настройка и применение методов обработки и анализа производится так же, как и
в GIMP – отдельно для каждого изображения.
62
В разработанной АСНИ методов обработки и анализа изображений
исследователю требуется только загрузить входной набор изображений, создать
эксперимент, выбрать и настроить методы обработки и анализа. Далее система
автоматически применит выбранные методы ко всему входному набору и выдаст
результат.
63
ЗАКЛЮЧЕНИЕ
В
ходе
выполнения
выпускной
квалификационной
работы
была
рассмотрена задача обработки и анализа изображений. В результате анализа
предметной
области
была
установлена
проблема
многообразия
и
не
универсальности существующих методов обработки и анализа изображений, что
влечет за собой дополнительные временные затраты на подбор требуемых
методов.
Был проведен обзор основных существующих алгоритмов обработки и
анализа изображений, а также существующих программных продуктов-аналогов,
позволивший выявить их преимущества и недостатки.
Далее были сформулированы требования к разрабатываемой АСНИ методов
обработки и анализа изображений, на основе которых были построены модели
разрабатываемой АСНИ методов обработки и анализа изображений, такие как:
а) формализация процесса обработки и анализа изображений
а)
функциональная
модель
АСНИ
методов
обработки
и
анализа
изображений;
б) модель поведения АСНИ методов обработки и анализа изображений;
в) модель коммуникаций программных блоков АСНИ методов обработки и
анализа изображений;
г) модель проведения экспериментов в АСНИ методов обработки и анализа
изображений.
Далее была спроектирована структура программного обеспечения и
основные алгоритмы работы АСНИ методов обработки и анализа изображений, в
частности, алгоритмы проведения экспериментов в двух режимах работы АСНИ
методов обработки и анализа изображений.
После этого были описаны средства и особенности реализации, приведен
пример работы АСНИ методов обработки и анализа изображений при решении
задачи обработки аэрофотоснимков полей.
64
Также были проведены исследования по оценке времени, затрачиваемого
исследователем на подготовку и проведение экспериментов в АСНИ методов
обработки и анализа изображений в сравнении с аналогами.
В качестве возможных перспектив можно выделить следующие основные
направления:
а)
использование
графических
процессоров
(GPU)
для
ускорения
проведения экспериментов;
б) поддержка ввода пользовательских алгоритмов обработки и анализа
изображений в АСНИ для проведения экспериментов.
65
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ И ЛИТЕРАТУРЫ
1. Гонзалес, Р. Цифровая обработка изображений / Р. Гонзалес, Р. Вудс. –
М.: Техносфера, 2006. – 1072с.
2. Цифровая обработка изображений в информационных системах: учебное
пособие / И.С. Грузман, В.С. Киричук, В.П. Косых, Г.И. Перетягин, А.А. Спектор.
– Новосибирск.: Изд-во НГТУ, 2003. – 352 с.
3.
Красильников
Н.Н.
Цифровая
обработка
изображений
/
Н.Н.
Красильников. – М.: Вузовская книга, 2001. 320 с.
4. Сергеев М.Б. Методы повышения контрастности растровых изображений
для систем цифровой обработки видеоинформации / М.Б. Сергеев, Н.В. Соловьев,
А.И. Стадник // Информационно-управляющие системы. – 2007. – №1. – С. 2-7.
5. Шапиро Л. Компьютерное зрение / Л. Шапиро, Дж. Стокман. – М.:
БИНОМ. Лаборатория знаний, 2006. 752 с.
6. John Canny’s Home Page / Дж. Кэнни // John Canny [Электронный ресурс].
– 2015. – Режим доступа: https://people.eecs.berkeley.edu/~jfc/. – Дата доступа:
24.03.2017.
7. Методы компьютерной обработки изображений / Под ред. В.А.Сойфера. –
М.: Физматлит, 2003. С.192-203.
8. Сегментация изображений // Habrahabr [Электронный ресурс]. – 2011. –
Режим доступа: https://habrahabr.ru/post/128768/. – Дата доступа: 12.07.2017.
9. Altami Studio // Altami [Электронный ресурс]. – 2016. – Режим доступа:
http://altami.ru/soft/altami_studio/. –Дата доступа: 04.04.2017
10. Учебное пособие по курсу «Компьютерная обработка изображений» //
ИТМО, Кафедра прикладной и компьютерной оптики [Электронный ресурс]. –
2014. – Режим доступа: http://aco.ifmo.ru/el_books/image_processing/1_01.html/. –
Дата доступа: 11.11.16.
11. Поваркова А., Компьютерный анализ изображений: общие сведения,
системы, примеры использования / А. Поваркова // Вестник инфектологии и
66
паразитологии
[Электронный
ресурс].
–
2016.
–
Режим
http://www.infectology.ru/microscopy/today/analysis/read_analysis16/.
доступа: 05.04.17
доступа:
–
Дата
67
ПРИЛОЖЕНИЕ А
(обязательное)
Листинг программы
#ifndef IMGPROCESS_H
#define IMGPROCESS_H
#include <QObject>
#include <QImage>
#include <QByteArray>
#include <QTimer>
#include <ctime>
#include <opencv2/opencv.hpp>
using namespace cv;
class ImgProcess:public QObject
{
Q_OBJECT
public:
ImgProcess(QObject * parent = 0);
~ImgProcess();
double loadImage();
void saveImage();
double _Gauss(int apperture, double sigmaX, double sigmaY);
double _Sobel(int apperture, double alpha, double beta, int xo, int yo);
double _Laplasian(int apperture);
double _Canny(int apperture, double lowThreshold, double highThreshold);
double _Box(int kernelWidth, int kernelHeight);
double _Bilateral(int diameter, double sigmaC, double sigmaS);
double _Dilate(int structElem);
double _Erode(int structElem);
double _Closing(int apperture, int elementShape, int iterations);
double _Opening(int apperture, int elementShape, int iterations);
double _ORB(int thresh);
double _SURF(int thresh);
double _SIFT(int thresh);
double _Median(int apperture);
68
double _Adaptive(int apperture, double maxValue, double c, int method, int threshType);
double _MorfBorder(int apperture, int iterations);
double _Equalization();
void applyChanges();
QImage matToQImage();
QImage srcToQImage();
void randomImage(int width, int height);
private:
QImage img;
QByteArray data;
Mat src_img, res_img, rand_img;
private slots:
//void progressSlot(qint64 bytesRec, qint64 bytesTotal);
signals:
//void downloadFailure(int errorCode);
//void downloadProgress(qint64 recieved, qint64 total);
};
#endif // IMGPROCESS_H
#include "imgprocess.h"
ImgProcess::ImgProcess(QObject *parent) :
QObject(parent)
{
src_img.setTo(0);
res_img.setTo(0);
rand_img.setTo(0);
}
ImgProcess::~ImgProcess()
{
}
double ImgProcess::loadImage()
{
if
((path.fileName().endsWith(".jpg",
Qt::CaseInsensitive))
||
(path.fileName().endsWith(".jpeg", Qt::CaseInsensitive))
||
(path.fileName().endsWith(".bmp",
(path.fileName().endsWith(".png", Qt::CaseInsensitive)))
Qt::CaseInsensitive))
||
69
{
QNetworkAccessManager * netAcc = new QNetworkAccessManager();
QNetworkRequest req(path);
QNetworkReply * reply;
reply = netAcc->get(req);
QEventLoop eventloop;
connect(reply,SIGNAL(finished()),&eventloop,SLOT(quit()));
connect(reply,SIGNAL(downloadProgress(qint64,qint64)),
this,
SLOT(progressSlot(qint64,qint64)));
eventloop.exec();
if (reply->error() == QNetworkReply::NoError)
{
data = reply->readAll();
reply->deleteLater();
}
else
{
data.clear();
emit downloadFailure(reply->error());
}
img = QImage::fromData(data);
src_img
=
Mat(img.height(),
img.width(),
CV_8UC(img.depth()/8),
img.bits(),
img.bytesPerLine()).clone();
cvtColor(src_img, src_img, CV_RGB2GRAY);
src_img.copyTo(res_img);
delete netAcc;
netAcc = nullptr;
}
else
{
data.clear();
emit downloadFailure(-1);
}
src_img
=
imread("D:\\Qt\\Projects\\build-test-Desktop_Qt_5_8_0_MinGW_32bit-
Debug\\14250022.JPG", CV_LOAD_IMAGE_GRAYSCALE);
70
src_img.copyTo(res_img);
res_img
=
imread("D:\\Qt\\Projects\\build-test-Desktop_Qt_5_8_0_MinGW_32bit-
Debug\\B25+S5.bmp", CV_LOAD_IMAGE_GRAYSCALE);
}
return 0.0;
}
void ImgProcess::saveImage()
{
imwrite("D:\\res.bmp",res_img);
}
double ImgProcess::_Gauss(int apperture, double sigmaX, double sigmaY)
{
double start = clock();
GaussianBlur(src_img,res_img,cv::Size(apperture,apperture),sigmaX,sigmaY,cv::BORDER_D
EFAULT);
double finish = clock()-start;
return finish
}
double ImgProcess::_Sobel(int apperture, double alpha, double beta, int xo, int yo)
{
double start = clock();
Mat img_x, img_y, img_xabs, img_yabs;
Sobel(src_img,img_x,CV_8U,xo,0,apperture);
Sobel(src_img,img_y,CV_8U,0,yo,apperture);
convertScaleAbs(img_x, img_xabs);
convertScaleAbs(img_y, img_yabs);
addWeighted(img_xabs, alpha, img_yabs, beta, 0, res_img);
img_x.release();
img_y.release();
img_xabs.release();
img_yabs.release();
double finish = clock() - start;
return finish;
}
double ImgProcess::_Laplasian(int apperture)
71
{
double start = clock();
Laplacian(src_img, res_img, CV_8U, apperture);
double finish = clock();
return finish;
}
double ImgProcess::_Canny(int apperture, double lowThreshold, double highThreshold)
{
double start = clock();
Canny(src_img,res_img,lowThreshold,highThreshold,apperture);
double finish = clock()-start;
return
finish;//QImage(res_img.data,
res_img.cols,
res_img.rows,
res_img.step,
QImage::Format_Grayscale8).copy();
}
double ImgProcess::_Box(int kernelWidth, int kernelHeight)
{
double start = clock();
boxFilter(src_img, res_img, src_img.depth(), cv::Size(kernelWidth,kernelHeight),cv::Point(-1,1),true);
double finish = clock()-start;
return
finish;//QImage(res_img.data,
res_img.cols,
res_img.rows,
res_img.step,
QImage::Format_Grayscale8).copy();
}
double ImgProcess::_Bilateral(int diameter, double sigmaC, double sigmaS)
{
double start = clock();
bilateral(src_img, res_img, diameter, sigmaC, sigmaS);
double finish = clock()-start;
return
finish;//QImage(res_img.data,
QImage::Format_Grayscale8).copy();
}
double ImgProcess::_Dilate(int structElem)
{
double start = clock();
dilate(src_img, res_img, structElem);
res_img.cols,
res_img.rows,
res_img.step,
72
double finish = clock()-start;
return
finish;//QImage(res_img.data,
res_img.cols,
res_img.rows,
res_img.step,
res_img.cols,
res_img.rows,
res_img.step,
QImage::Format_Grayscale8).copy();
}
double ImgProcess::_Erode(int structElem)
{
double start = clock();
erode(src_img, res_img, structElem);
double finish = clock()-start;
return
finish;//QImage(res_img.data,
QImage::Format_Grayscale8).copy();
}
double ImgProcess::_Closing(int apperture, int elementShape, int iterations)
{
double start = clock();
morphologyEx(src_img, res_img, aperture, elementShape, iterations);
double finish = clock()-start;
return
finish;//QImage(res_img.data,
res_img.cols,
res_img.rows,
res_img.step,
QImage::Format_Grayscale8).copy();
}
double ImgProcess::_Opening(int apperture, int elementShape, int iterations)
{
double start = clock();
morphologyEx(src_img, res_img, aperture, elementShape, iterations);
double finish = clock()-start;
return
finish;//QImage(res_img.data,
res_img.cols,
res_img.rows,
res_img.step,
res_img.cols,
res_img.rows,
res_img.step,
QImage::Format_Grayscale8).copy();
}
double ImgProcess::_ORB(int thresh)
{
double start = clock();
orb(src_img, res_img, thresh);
double finish = clock()-start;
return
finish;//QImage(res_img.data,
QImage::Format_Grayscale8).copy();
73
}
double ImgProcess::_SURF(int thresh)
{
double start = clock();
surf(src_img, res_img, thresh);
double finish = clock()-start;
return
finish;//QImage(res_img.data,
res_img.cols,
res_img.rows,
res_img.step,
QImage::Format_Grayscale8).copy();
}
double ImgProcess::_Median(int apperture)
{
double start = clock();
medianBlur(src_img, res_img, apperture);
double finish = clock()-start;
return finish;
}
double ImgProcess::_Adaptive(int apperture, double maxValue, double c, int method, int threshType)
{
double start = clock();
threshold(src_img, res_img, 50, 255, CV_THRESH_TRUNC);
double finish = clock();
return finish;
}
double ImgProcess::_MorfBorder(int apperture, int iterations)
{
double start = clock();
Mat element = getStructuringElement(cv::MORPH_CROSS,cv::Size(apperture,apperture));
erode(src_img,res_img,element,cv::Point(-1,-1),iterations);
res_img = src_img^res_img;
double finish = clock()-start;
return finish;
}
double ImgProcess::_Equalization()
{
double start = clock();
74
equalizeHist(src_img, res_img);
double finish = clock()-start;
return finish;
}
void ImgProcess::applyChanges()
{
src_img.setTo(0);
res_img.copyTo(src_img);
}
QImage ImgProcess::matToQImage()
{
return
QImage(res_img.data,
res_img.cols,
res_img.rows,
res_img.step,
src_img.cols,
src_img.rows,
src_img.step,
QImage::Format_Grayscale8).copy();
}
QImage ImgProcess::srcToQImage()
{
return
QImage(src_img.data,
QImage::Format_Grayscale8).copy();
}
void ImgProcess::randomImage(int width, int height)
{
src_img = Mat(height, width, CV_8U);
res_img = Mat(height, width, CV_8U);
randu(src_img, Scalar(0), Scalar(255));
}
void ImgProcess::progressSlot(qint64 bytesRec, qint64 bytesTotal)
{
emit downloadProgress(bytesRec, bytesTotal);
}
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "scene.h"
#include <QtConcurrent/qtconcurrentrun.h>
#include <QFutureWatcher>
75
#include <QProgressBar>
#include <QMessageBox>
#include <QSlider>
#include "imgprocess.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
void repaintScene();
void slidersSettings(bool visible[4], int value[4], int max[4], int min[4], QString text[4]);
void execGauss();
void execBox();
void execSobel();
void execCanny();
void resetProgressBar();
void enableControls(bool block[3]);
void initSliders();
double start, finish;
private:
Ui::MainWindow *ui;
ImgProcess * imgProc;
Scene * scene1;
Scene * scene2;
//QFutureWatcher<double> fW;
QMessageBox *msg;
int mode = 0;
private slots:
void viewImageSlot(Scene* scene, int mat);
void loadButtonSlot();
76
void downloadSlot(QUrl url);
void funcListClick(int row);
void sliderChangeSlot();
void applyClick();
void saveButtonSlot();
void downloadFailureSlot(int errorCode);
void progress(qint64 rec, qint64 total);
void tabClick();
void formClose();
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//this->showMaximized();
imgProc = new ImgProcess();
msg = new QMessageBox();
msg->setModal(true);
msg->setWindowTitle("Ошибка!");
ui->tabWidget->setTabText(0, "Тест изобр.");
ui->tabWidget->setTabText(1, "Тест быстрод.");
ui->tabWidget->setCurrentIndex(0);
ui->imageLabel1->setText("Эксперимент 1");
ui->imageLabel2->setText("Эксперимент 2");
ui->slider1->setVisible(true);
ui->slider2->setVisible(false);
ui->slider3->setVisible(false);
ui->slider4->setVisible(false);
ui->label2->setVisible(false);
ui->label3->setVisible(false);
ui->label4->setVisible(false);
77
ui->label6->setVisible(false);
ui->label7->setVisible(false);
ui->label8->setVisible(false);
ui->tEdit1->setVisible(false);
ui->tLabel1->setVisible(false);
start = clock();
scene1 = new Scene();
scene2 = new Scene();
ui->imageView1->setScene(scene1);
ui->imageView2->setScene(scene2);
imgProc->loadImage();
viewImageSlot(scene1,0);
viewImageSlot(scene2,1);
imgProc->randomImage(1024,1024);
ui->progressBar->setVisible(false);
initSliders();
bool enable[3] = {false, false, false};
enableControls(enable);
connect(imgProc, SIGNAL(downloadFailure(int)), this,
SLOT(downloadFailureSlot(int)),
Qt::UniqueConnection);
connect(&fW, SIGNAL(finished()), this, SLOT(viewImageSlot()));
connect(ui->loadImgAction,
SIGNAL(triggered(bool)),
this,
SLOT(loadButtonSlot()),
Qt::UniqueConnection);
connect(ui->funcList, SIGNAL(currentRowChanged(int)), this, SLOT(funcListClick(int)),
Qt::UniqueConnection);
connect(ui->slider1,
SIGNAL(valueChanged(int)),
this,
SLOT(sliderChangeSlot()),
SIGNAL(valueChanged(int)),
this,
SLOT(sliderChangeSlot()),
SIGNAL(valueChanged(int)),
this,
SLOT(sliderChangeSlot()),
SIGNAL(valueChanged(int)),
this,
SLOT(sliderChangeSlot()),
Qt::UniqueConnection);
connect(ui->slider2,
Qt::UniqueConnection);
connect(ui->slider3,
Qt::UniqueConnection);
connect(ui->slider4,
Qt::UniqueConnection);
connect(ui->applyButton,
Qt::UniqueConnection);
SIGNAL(clicked(bool)),
this,
SLOT(applyClick()),
78
//connect(imgProc,
SIGNAL(downloadProgress(qint64,qint64)),
this,
SLOT(progress(qint64,qint64)), Qt::UniqueConnection);
connect(ui->saveImgAction,
SIGNAL(triggered(bool)),
this,
SLOT(saveButtonSlot()),
Qt::UniqueConnection);
connect(ui->tabWidget,
SIGNAL(currentChanged(int)),
this,
SLOT(tabClick()),
Qt::UniqueConnection);
connect(ui->applyButton,
SIGNAL(clicked(bool)),
this,
SLOT(formClose()),
Qt::UniqueConnection);
}
MainWindow::~MainWindow()
{
delete imgProc;
delete scene1;
delete scene2;
delete msg;
delete ui;
imgProc = nullptr;
scene1 = nullptr;
scene2 = nullptr;
msg = nullptr;
}
void MainWindow::repaintScene()
{
QRectF rect1 = scene1->itemsBoundingRect();
scene1->setSceneRect(rect1);
scene1->update();
ui->imageView1->fitInView(scene1->sceneRect());
ui->imageView1->update();
QRectF rect2 = scene2->itemsBoundingRect();
scene2->setSceneRect(rect2);
scene2->update();
ui->imageView2->fitInView(scene2->sceneRect(), Qt::KeepAspectRatio);
ui->imageView2->update();
}
void MainWindow::slidersSettings(bool visible[], int value[], int max[], int min[], QString text[])
79
{
QSlider* sliders[4] = {(ui->slider1), (ui->slider2), (ui->slider3), (ui->slider4)};
QLabel* labels[4] = {ui->label1, ui->label2, ui->label3, ui->label4};
for (int i = 0; i < 4; i++)
{
sliders[i]->setVisible(visible[i]);
sliders[i]->setValue(value[i]);
sliders[i]->setMaximum(max[i]);
sliders[i]->setMinimum(min[i]);
labels[i]->setVisible(visible[i]);
labels[i]->setText(text[i]);
}
}
void MainWindow::execGauss()
{
int apperture = 2*ui->slider1->value()+3;
double sigmaX = (double)(ui->slider2->value());
double sigmaY = (double)(ui->slider3->value());
fW.setFuture(QtConcurrent::run(this->imgProc, &ImgProcess::_Gauss, apperture, sigmaX,
sigmaY));
imgProc->_Gauss(apperture, sigmaX, sigmaY);
}
void MainWindow::execBox()
{
int kernelWidth = 2*ui->slider1->value()+3;
int kernelHeight = 2*ui->slider2->value()+3;
fW.setFuture(QtConcurrent::run(this->imgProc,
kernelHeight));
}
void MainWindow::execSobel()
{
int apperture = 2*ui->slider1->value()+3;
double alpha = (double)ui->slider2->value()/10.0;
double beta = (double)ui->slider3->value()/10.0;
int diff = ui->slider4->value()+1;
&ImgProcess::_Box,
kernelWidth,
80
fW.setFuture(QtConcurrent::run(this->imgProc, &ImgProcess::_Sobel, apperture, alpha, beta,
diff, diff));
}
void MainWindow::execCanny()
{
int apperture = 2*ui->slider1->value()+3;
double lowThresh = (double)(ui->slider2->value());
double highThresh = (double)(ui->slider3->value());
fW.setFuture(QtConcurrent::run(this->imgProc, &ImgProcess::_Canny, apperture, lowThresh,
highThresh));
}
void MainWindow::viewImageSlot(Scene *scene, int mat)
{
scene->clear();
if (mat)
scene->addPixmap(QPixmap::fromImage(imgProc->matToQImage()));
else scene->addPixmap(QPixmap::fromImage(imgProc->srcToQImage()));
repaintScene();
if (scene1->items().isEmpty())
scene1->addPixmap(QPixmap::fromImage(imgProc->srcToQImage()));
scene2->clear();
scene2->addPixmap(QPixmap::fromImage(imgProc->matToQImage()));
repaintScene();
bool enable[3] = {!(scene->getDrawMode()), true, true};
ui->tEdit1->setText(QString::number(fW.future().result()));
ui->tEdit2->setText(QString::number(0.6*fW.future().result()));
enableControls(enable);
ui->progressBar->setVisible(false);
resetProgressBar();
}
void MainWindow::loadButtonSlot()
{
imgLD->show();
}
void MainWindow::downloadSlot(QUrl url)
81
{
resetProgressBar();
ui->progressBar->setVisible(true);
initSliders();
ui->funcList->clearSelection();
bool enable[3] = {false, false, false};
enableControls(enable);
if (!fW.isRunning())
fW.setFuture(QtConcurrent::run(this->imgProc, &ImgProcess::loadImage, url));
}
void MainWindow::resetProgressBar()
{
ui->progressBar->setMinimum(0);
ui->progressBar->setMaximum(0);
ui->progressBar->setValue(0);
}
void MainWindow::enableControls(bool block[])
{
ui->funcList->setEnabled(block[0]);
ui->applyButton->setEnabled(block[1]);
ui->slider1->setEnabled(block[0]);
ui->slider2->setEnabled(block[0]);
ui->slider3->setEnabled(block[0]);
ui->slider4->setEnabled(block[0]);
}
void MainWindow::initSliders()
{
bool visible[4] = {false, false, false, false};
int value[4] = {0,0,0,0};
QString text[4] = {"", "", "", ""};
slidersSettings(visible, value, value, value, text);
}
void MainWindow::funcListClick(int row)
82
{
if (!mode)
{
switch(row)
{
case 0:
{
bool visible[] = {true, true, true, false};
int value[] = {0, 0, 0, 0};
int max[] = {10, 255, 255, 0};
int min[] = {0, 0, 0, 0};
QString text[] = {"Ядро", "СигмаX", "СигмаY", ""};
slidersSettings(visible, value, max, min, text);
execGauss();
break;
}
case 1:
{
bool visible[] = {true, true, false, false};
int value[] = {0, 0, 0, 0};
int max[] = {10, 10, 0, 0};
int min[] = {0, 0, 0, 0};
QString text[] = {"Ширина ядра", "Высота ядра", "", ""};
slidersSettings(visible, value, max, min, text);
execBox();
break;
}
case 2:
{
bool visible[] = {true, true, true, true};
int value[] = {0, 1, 1, 0};
int max[] = {9, 10, 10, 1};
int min[] = {0, 1, 1, 0};
QString text[] = {"Ядро", "Альфа", "Бета", "Производная"};
slidersSettings(visible, value, max, min, text);
83
execSobel();
break;
}
case 3:
{
bool visible[] = {true, true, true, false};
int value[] = {0, 0, 0, 0};
int max[] = {2, 255, 255, 0};
int min[] = {0, 0, 0, 0};
QString text[] = {"Ядро", "Ниж. порог", "Верх. порог", ""};
slidersSettings(visible, value, max, min, text);
execCanny();
break;
}
}
ui->progressBar->setVisible(true);
}
}
void MainWindow::sliderChangeSlot()
{
if (!mode)
{
switch (ui->funcList->currentRow())
{
case 0:
{
execGauss();
break;
}
case 1:
{
execBox();
break;
}
case 2:
84
{
execSobel();
break;
}
case 3:
{
execCanny();
break;
}
}
ui->progressBar->setVisible(true);
}
}
void MainWindow::applyClick()
{
if (!ui->tabWidget->currentIndex())
{
initSliders();
ui->funcList->clearSelection();
imgProc->applyChanges();
}
else
{
switch (ui->funcList->currentRow())
{
case 0:
{
execGauss();
break;
}
case 1:
{
execBox();
break;
}
85
case 2:
{
execSobel();
break;
}
case 3:
{
execCanny();
break;
}
}
ui->progressBar->setVisible(true);
}
}
void MainWindow::saveButtonSlot()
{
imgProc->saveImage();
}
void MainWindow::downloadFailureSlot(int errorCode)
{
if (errorCode == -1)
msg->setText("Неверное расширение файла!");
else
msg->setText(QString("Ошибка
%1").arg(QString::number(errorCode)));
msg->exec();
}
void MainWindow::progress(qint64 rec, qint64 total)
{
ui->progressBar->setMaximum(total/1000);
ui->progressBar->setValue(rec/1000);
}
void MainWindow::tabClick()
{
mode = ui->tabWidget->currentIndex();
при
загрузке
файла:
код
86
}
void MainWindow::formClose()
{
finish = clock()-start;
msg->setText(QString::number(finish));
msg->exec();
}
#ifndef SCENE_H
#define SCENE_H
#include <QGraphicsScene>
#include <QGraphicsSceneMouseEvent>
class Scene : public QGraphicsScene
{
Q_OBJECT
public:
Scene(QGraphicsScene * parent = 0);
~Scene();
void setDrawMode(bool value);
bool getDrawMode();
private:
QPointF point;
bool draw;
void mousePressEvent(QGraphicsSceneMouseEvent * event);
void mouseMoveEvent(QGraphicsSceneMouseEvent * event);
};
#endif // SCENE_H
#include "scene.h"
Scene::Scene(QGraphicsScene *parent) : QGraphicsScene(parent)
{
draw = false;
}
Scene::~Scene()
{
}
void Scene::setDrawMode(bool value)
87
{
draw = value;
}
bool Scene::getDrawMode()
{
return draw;
}
void Scene::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
if (draw)
point = event->scenePos();
}
void Scene::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
if ((draw)&&(event->buttons() == Qt::LeftButton))
{
addLine(point.x(),
point.y(),
event->scenePos().x(),
QPen(Qt::yellow, 5, Qt::SolidLine, Qt::SquareCap));
point = event->scenePos();
}
}
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
event->scenePos().y(),
88
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«ОРЛОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИМЕНИ И.С. ТУРГЕНЕВА»
УДОСТОВЕРЯЮЩИЙ ЛИСТ № 165181
К ВЫПУСКНОЙ КВАЛИФИКАЦИОННОЙ РАБОТЕ
на демонстрационный материал, представленный в электронном виде
Студента Сорокина Михаила Сергеевича
шифр 165181
Институт приборостроения, автоматизации и информационных технологий
Кафедра программной инженерии
Направление 09.04.04 Программная инженерия
Направленность (профиль) Управление разработкой программного обеспечения
Наименование документа: Демонстрационные плакаты к выпускной
квалификационной работе
Документ разработал:
Студент
Сорокин М.С.
_______________
Руководитель
Фролов А.И.
_______________
Нормоконтроль
Ужаринский А.Ю.
_______________
Фролов А.И.
_______________
Документ согласован:
Документ утвержден:
Зав. кафедрой
Орел 2018
89
ИНФОРМАЦИОННО-ПОИСКОВАЯ ХАРАКТЕРИСТИКА
ДОКУМЕНТА НА ЭЛЕКТРОННОМ НОСИТЕЛЕ
Наименование
группы атрибутов
атрибута
1. Описание
Обозначение документа
документа
(идентификатор(ы)
файла(ов))
Наименование документа
2. Даты и время
3. Создатели
4. Внешние
ссылки
5. Защита
6. Характеристики
содержания
Характеристики документа
на электронном носителе
\Презентация_ВКР_Сорокин.
ppt
Демонстрационные плакаты
к выпускной
квалификационной работе
Класс документа
ЕСКД
Вид документа
Оригинал документа на
электронном носителе
Аннотация
Демонстрационный
материал, отображающий
основные этапы выполнения
выпускной
квалификационной работы
Использование документа Операционная система
Windows 10, Microsoft
PowerPoint 2010
Дата и время
21.06.2018
копирования документа
Дата создания документа 07.06.2018
Дата утверждения
22.06.2018
документа
Автор
Сорокин М.С.
Изготовитель
Сорокин М.С.
Ссылки на другие
Удостоверяющий лист
документы
№ 165181
Санкционирование
ОГУ имени И.С. Тургенева
Классификация защиты
По законодательству РФ
Объем информации
1249280 Б
документа
90
7. Структура
документа(ов)
Наименование плаката
(слайда) №1
Наименование плаката
(слайда) №2
Наименование плаката
(слайда) №3
Наименование плаката
(слайда) №4
Наименование плаката
(слайда) №5
Наименование плаката
(слайда) №6
Наименование плаката
(слайда) №7
Наименование плаката
(слайда) №8
Наименование плаката
(слайда) №9
Наименование плаката
(слайда) №10
Наименование плаката
(слайда) №11
Титульный лист
Задача обработки и анализа
изображений
Сравнение с программными
средствами,
осуществляющими обработку
и анализ изображений
Функциональные требования
к разрабатываемой АСНИ
методов обработки и анализа
изображений
Формализация процесса
обработки и анализа
изображений
Модель вариантов
использования АСНИ
Структура ПО АСНИ
методов обработки и анализа
изображений
Алгоритм проведения
экспериментов в АСНИ
методов обработки и анализа
изображений
Пример работы АСНИ
методов обработки и анализа
изображений
Пример работы АСНИ
методов обработки и анализа
изображений
Оценка времени, требуемого
на подготовку и проведение
эксперимента в АСНИ и
аналогах
1/--страниц
Пожаловаться на содержимое документа