Применение объектно-ориентированного программирования в задачах обработки сигналов и изображений с элементами искусственного интеллекта
Покупка
Тематика:
Программирование и алгоритмизация
Издательство:
Поволжский государственный технологический университет
Авторы:
Баев Алексей Александрович, Иванов Константин Олегович, Ипатов Юрий Аркадьевич, Леухин Анатолий Николаевич
Год издания: 2022
Кол-во страниц: 206
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-8158-2275-7
Артикул: 800914.01.99
Учебное пособие содержит пять теоретических разделов по основам объектно-ориентированного подхода в прикладных задачах обработки сигналов и изображений. Каждый раздел включает практические задания для самостоятельной работы и контрольные вопросы. Для студентов специальности 11.05.01 «Радиоэлектронные системы и комплексы», направлений подготовки 11.04.01 «Радиотехника», 12.03.04, 12.04.04 «Биотехнические системы и технологии», 09.03.02, 09.04.02 «Информационные системы и технологии», 15.03.01, 15.04.01«Машиностроение».
Тематика:
ББК:
УДК:
- 004: Информационные технологии. Вычислительная техника...
- 621: Общее машиностроение. Ядерная техника. Электротехника. Технология машиностроения в целом
ОКСО:
- ВО - Бакалавриат
- 09.03.02: Информационные системы и технологии
- 12.03.04: Биотехнические системы и технологии
- 15.03.01: Машиностроение
- ВО - Магистратура
- 09.04.02: Информационные системы и технологии
- 11.04.01: Радиотехника
- 12.04.04: Биотехнические системы и технологии
- 15.04.01: Машиностроение
- ВО - Специалитет
- 11.05.01: Радиоэлектронные системы и комплексы
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
ПРИМЕНЕНИЕ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ В ЗАДАЧАХ ОБРАБОТКИ СИГНАЛОВ И ИЗОБРАЖЕНИЙ С ЭЛЕМЕНТАМИ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА Учебное пособие Йошкар-Ола ПГТУ 2022
УДК 621.391.6:621.396.96(07) ББК 32.95я73 П 62 Р е ц е нз е н ты : А. В. Рыбаков, генеральный директор ООО «Омега-Софт»; Н. В. Парсаев, канд. техн. наук, доцент кафедры прикладной математики и информатики Марийского государственного университета Печатается по решению редакционно-издательского совета ПГТУ Применение объектно-ориентированного программирова П 62 ния в задачах обработки сигналов и изображений с элементами искусственного интеллекта : учебное пособие / А. А. Баев, К. О. Иванов, Ю. А. Ипатов, А. Н. Леухин ; Министерство науки и высшего образования Российской Федерации, ФГБОУ ВО «Поволжский государственный технологический университет». — Йошкар-Ола : Поволжский государственный технологический университет, 2022. — 206 с. ISBN 978-5-8158-2275-7 Учебное пособие содержит пять теоретических разделов по основам объектно ориентированного подхода в прикладных задачах обработки сигналов и изображений. Каждый раздел включает практические задания для самостоятельной работы и контрольные вопросы. Для студентов специальности 11.05.01 «Радиоэлектронные системы и ком плексы», направлений подготовки 11.04.01 «Радиотехника», 12.03.04, 12.04.04 «Биотехнические системы и технологии», 09.03.02, 09.04.02 «Информационные системы и технологии», 15.03.01, 15.04.01«Машиностроение». УДК 621.391.6:621.396.96(07) ББК 32.95я73 А. А. Баев, К. О. Иванов, Ю. А. Ипатов, А. Н. Леухин, 2022 © ФГБОУ ВО «Поволжский государственный ISBN 978-5-8158-2275-7 технологический университет», 2022
ОГЛАВЛЕНИЕ СПИСОК СОКРАЩЕНИЙ..................................................................................................5 ВВЕДЕНИЕ.....................................................................................................................6 1. Консольные приложения ....................................................................................9 1.1. Создание консольного приложения ...........................................................9 1.2. Классификация типов данных ..................................................................12 1.3. Ввод данных, преобразования типов и операторы ................................16 1.4. Поразрядные операции, выбор и исключения........................................22 Задания для самостоятельной работы..................................................................32 Контрольные вопросы..............................................................................................37 2. Основы объектно-ориентированного программирования в С#.................38 2.1. Понятие класса, работа с комплексными числами .................................38 2.2. Unit-тестирование кода на C#...................................................................42 2.3. Создание библиотеки классов ..................................................................45 2.4. Комплексные сигналы...............................................................................55 2.5. Создание оконного приложения...............................................................62 Задания для самостоятельной работы..................................................................71 Контрольные вопросы..............................................................................................72 3. Ввод-вывод данных. Генерация и визуализация данных...........................74 3.1. Подготовка оконного приложения для генератора случайных чисел.......................................................................................................74 3.2. Создание генератора случайных чисел....................................................75 3.3. Генерация сигналов и визуализация данных...........................................85 3.4. Цифровая обработка сигналов..................................................................97 3.4.1. Автокорреляционная функция.....................................................101 3.4.2. Генератор М-последовательности...............................................102 3.4.3. Согласованная фильтрация сигналов..........................................105 3.4.4. Модуляция сигналов ....................................................................108 3.5. Обработка звуковых файлов...................................................................117 3.5.1. Визуализация процесса вычислений...........................................127 3.6. Вычисление спектра через оконное преобразование Фурье................131 Задания для самостоятельной работы................................................................141 Контрольные вопросы............................................................................................145
4. Обработка изображений ..................................................................................146 4.1. Загрузка и сохранение изображений......................................................146 4.2. Спектр изображений и фильтрация в частотной области ...................153 4.3. Фильтрация изображений в частотной области....................................158 4.4. Фильтрация изображений в пространственной области .....................164 4.4.1. Пространственная фильтрация....................................................164 4.4.2. Линейная пространственная фильтрация ...................................166 4.4.3. Поиск фрагмента на изображении...............................................168 4.4.4. Теорема свёртки............................................................................172 Задания для самостоятельной работы................................................................175 Контрольные вопросы............................................................................................177 5. Использование нейронных сетей для сегментации изображений............178 5.1. Последовательные нейронные сети .......................................................178 5.2. Обучение нейронной сети с помощью алгоритма обратного распространения ошибки.....................................................................179 5.3. Сверточные нейронные сети...................................................................181 5.4. Сверточная нейронная сеть U-Net для сегментации изображений......185 5.5. Реализация нейронной сети U-Net для сегментации медицинских изображений ....................................................................................188 5.6. Реализация нейронной сети U-Net на Python ........................................190 Задания для самостоятельной работы................................................................200 Контрольные вопросы............................................................................................201 ЗАКЛЮЧЕНИЕ ............................................................................................................203 СПИСОК ЛИТЕРАТУРЫ ...............................................................................................204
СПИСОК СОКРАЩЕНИЙ АКФ — автокорреляционная функция АМ — амплитудная модуляция АЧМ — амплитудно-частотная модуляция БПФ — быстрое преобразование Фурье ВКФ — взаимокорреляционая функция ДПФ — дискретное преобразование Фурье ИИ — искусственный интеллект ПЛИС — программируемая логическая интегральная схем СКО — среднеквадратическое отклонение ЦОС — цифровая обработка сигналов ЧМ — частотная модуляция ФМ — фазовая модуляция ЯП — язык программирования QAM (Quadra-ture Amplitude Modulation) — квадратурная ам плитудно-фазовая модуляция QPSM (Quadrature Phase Shift Keying) — квадратурная фазовая манипуляция DVB (Digital Video Broadcast) — цифровое телевизионное веща ние
ВВЕДЕНИЕ Цифровая обработка сигналов (ЦОС) и изображений являeтся динамично развивающейся областью вычислительной техники [1]. В теории информации и связи под сигналом понимается материальный носитель информации, используемый для передачи сообщений, однако в исследованиях сигнал чаще всего представляется функцией времени, параметры которой могут нести нужную информацию. В современной вычислительной технике сигналы представляют ся в виде последовательности значений (измеренных величин), взятых через некоторые промежутки времени [2]. Такие сигналы называют дискретными. Частным случаем сигналов являются цифровые изображения, представляющие собой двумерные массивы чисел. Каждый элемент этих массивов соответствует одному элементу изображения. Системы цифровой обработки сигналов и изображений исполь зуются при обработке данных дистанционного зондирования земли, медико-биологических исследованиях, решении задач навигации аэрокосмических и морских объектов, связи, радиофизики, распознавании речи и лиц [2]. При этом подавляющее большинство современных систем цифровой обработки сигналов и изображений используют технологии искусственного интеллекта, включающие машинное и глубокое обучение. Материал данного учебного пособия строится на последова тельном изучении базовых принципов объектно-ориентированного программирования, алгоритмов предварительной обработки сигналов и изображений с использованием современных вычислительных средств и языков программирования, изучении инструментов классификации данных, что позволит студентам в будущем реализовывать системы обработки изображений и сигналов с элементами искусственного интеллекта на различных аппаратных платформах. Большинство материалов предлагаемого вниманию читателей издания базируется на научных исследованиях, проводимых на кафедре радиотехнических и медико-биологических систем (РТиМБС) Поволжского государственного технологического университета. На кафедре действует научная школа с более чем тридцатилетним
стажем работы в области разработки систем распознавания изображений и сигналов для различных приложений. За этот срок были разработаны уникальные методы распознавания изображений объектов в зашумленных сценах по форме их контуров, а также методы выделения и прослеживания контуров изображений объектов, методы распознавания трехмерных объектов на базе технологии обработки гиперкомплексных сигналов [3]. Издание содержит пять разделов, охватывающих широкий круг вопросов, связанных с разработкой программного обеспечения с элементами искусственного интеллекта для цифровой обработки изображений и сигналов. Начиная с первой лабораторной работы обучающиеся знакомятся с методологией объектно-ориентированного программирования. Разработка приложений выполняется на языке программирования (ЯП) C#. Он является мощным инструментом для разработки desktop- и web-приложений, при этом сочетает в себе простоту использования за счет автоматического управления памятью и эффективного синтаксиса, вобравшим лучшие техники программирования на таких языках, как C++, Java и Delphi. Благодаря этому, в настоящее время язык программирования C# оказывается наиболее популярным средством разработки приложений под управлением операционной системы Windows. Он поддерживает основные средства объектно-ориентированного программирования и является предпочтительным в начале изучения объектно-ориентированного подхода при проектировании приложений. Перед началом работы с данным учебным пособием рекоменду ется пройти бесплатный курс от Microsoft по основам программирования на C#, расположенный по адресу: https://docs.microsoft.com/ ru-ru/dotnet/csharp/. Первый раздел книги посвящен получению базовых навыков программирования на языке С# и знакомству с его синтаксисом. Во втором разделе читатели познакомятся с базовыми концепциями объектно-ориентированного программирования, методами тестирования кода, а также с рабочим процессом создания desktop-приложений. В третьем разделе пособия подробно описываются основные алгоритмы, используемые в цифровой обработке сигналов: дискретное преобразование Фурье, согласованная фильтрация, модуляция, генерация М-последовательности. Даются примеры реализации указанных алгоритмов на языке программирования C#. Четвёртый
раздел пособия посвящен изучению алгоритмов цифровой обработки изображений и включает в себя такие подразделы, как двумерное дискретное преобразование Фурье, анализ изображений в частотной и пространственной области, фильтрация изображений. Пятый раздел содержит информацию о методах глубокого обучения. В нем подробно рассматриваются современные архитектуры нейронных сетей и их приложения при классификации и сегментации данных. Выполнение практических заданий позволит закрепить и углу бить полученные на лекционных занятиях теоретические знания. Помочь в усвоении теоретических сведений, систематизации изученного материала и успешном выполнении практических заданий призваны достаточно подробные контрольные вопросы по каждой теме и список рекомендуемой литературы, где можно получить дополнительную информацию. Авторы выражают благодарность профессору кафедры РТиМБС, д-ру техн. наук, проректору по развитию университетского комплекса ПГТУ А. А. Роженцову, профессору кафедры РТиМБС, д-ру техн. наук Р. Г. Хафизову, доценту кафедры РТиМБС, канд. техн. наук Д. Г. Хафизову за ценные замечания, которые были учтены при подготовке рукописи к печати. Критерии оценки знаний Для получения оценки «удовлетворительно» необходимо вы полнить практическую часть работы, знать и уметь объяснить назначение переменных, классов и функций программы. Для получения оценки «хорошо» необходимо выполнить зада ние своего варианта, осуществить модульное тестирование кода, а также дополнительное задание преподавателя. Для получения оценки «отлично» необходимо выполнить до полнительное усложненное задание преподавателя, уметь свободно использовать справочные материалы. Исходный код должен содержать исчерпывающие комментарии, иметь строгую стилизацию, имена функций и переменных должны полностью отражать выполняемую задачу.
1. КОНСОЛЬНЫЕ ПРИЛОЖЕНИЯ 1.1. СОЗДАНИЕ КОНСОЛЬНОГО ПРИЛОЖЕНИЯ Консольное приложение — это компьютерное приложение без графического интерфейса пользователя (GUI), предназначенное для работы исключительно с командами клавиатуры. Одним из способов реализации консольных приложений является использование платформы .NET («дот нет»), разработанной компанией Microsoft. Она включает в себя множество средств разработки, таких как средства поддержки баз данных, электронной почты и др. [4]. Важным преимуществом использования данной платформы яв ляется полная совместимость разрабатываемых программ с различными версиями операционной системы Windows, а также возможность создания кросс-платформенных приложений, которые будут работать одинаково на компьютерах с другими операционными системами, такими как Linux и OS X. C# (Си-Шарп) — это один из языков программирования плат формы .NET. Он входит в Visual Studio – Visual Studio.NET. Кроме C#, в Visual Studio.NET входят Visual Basic.NET и Visual C++. Создадим консольное приложение. Так, для этого выполним «File» -> «New Project». Рис. 1.1. Создание нового проекта «New Project»
В указанном на рисунке 1.1 окне выбираем Windows Desktop (1), Console App (2), в поле Name (3) должно однозначно описывать назначение проекта, в нашем случае — это пример 1 раздела 1; для названия пути к проекту (4) и именования проектов принято использовать английский язык. Таким образом, первый проект назовём Ex_0_1. Для запуска проекта на трансляцию и выполнение служит кноп ка , расположенная на панели инструментов («Debug»-«Start Debugging»). Также это можно сделать с помощью клавиши F5. После создания консольного приложения среда автоматически создает заготовку программы с текстом: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ex_0_1 { class Program { static void Main(string[] args) { } } } Ключевое слово using <Namespace> подключает соответствую щее пространство имен — список классов, определенных в одноименном программном модуле. Внимание! Название проекта следует назначать при созда нии проекта. От правильности выбора зависит корректность работы программы.