Применение объектно-ориентированного программирования в задачах обработки сигналов и изображений с элементами искусственного интеллекта
Покупка
Тематика:
Программирование и алгоритмизация
Издательство:
Поволжский государственный технологический университет
Авторы:
Баев Алексей Александрович, Иванов Константин Олегович, Ипатов Юрий Аркадьевич, Леухин Анатолий Николаевич
Год издания: 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> подключает соответствую- щее пространство имен — список классов, определенных в одно- именном программном модуле. Внимание! Название проекта следует назначать при созда- нии проекта. От правильности выбора зависит корректность работы программы.
Ключевое слово namespace создает для проекта собственное пространство имен с собственным перечнем классов. Здесь using — подключение namespace Ex_0_1 — пространство имен Ex_0_1, все проекты, создаваемые в рамках данного Решения (Solution) будут включены в данное пространство имен. Class Program является стандартным классом для проектов. static void Main(string[] args) служит своего рода точкой входа, где разработчик пишет код, который выполняет необходимые вычисле- ния. Для написания первой программы добавим в метод Main следу- ющий код: Console.WriteLine("Моя первая программа"); Console.ReadKey(); Метод WriteLine принадлежит классу Console из пространства имен System, которое мы подключили в самом начале (using System). Данный метод выводит на экран строку «Моя первая программа». Метод ReadKey() — ожидает нажатия на кнопку, в нашей про- грамме он добавлен для того, чтобы после выполнения предыдущей команды окно вывода не закрывалось. Закомментируйте строку //Console.ReadKey(); и попробуйте запустить программу ещё раз. Модифицируем код: Console.WriteLine("Введите строку"); string str = Console.ReadLine(); Console.WriteLine($"Введенная строка: {str}"); Console.ReadKey(); string str = Console.ReadLine() — строковая переменная str, в которую пользователь вводит информацию с консоли, которую возвращает метод ReadLine(). Чтобы ввести значение переменной str внутрь выводимой на консоль строки, применяются фигурные скобки {}. То есть при
выводе строки на консоль выражение {str} будет заменяться на зна- чение переменной str — введенное значение. Однако, чтобы можно было вводить таким образом значения переменных внутрь строки, перед строкой указывается знак доллара $. Итоговая программа будет выглядеть следующим образом: 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) { Console.WriteLine("Введите строку"); string str = Console.ReadLine(); Console.WriteLine($"Введенная строка: {str}"); Console.ReadKey(); } } } 1.2. КЛАССИФИКАЦИЯ ТИПОВ ДАННЫХ Для хранения данных в программе применяются переменные. Переменная представляет собой именованную область памяти, в ко- торой хранится значение определенного типа. Переменная имеет тип, имя и значение. Тип определяет, какого рода информацию мо- жет хранить переменная. Типы данных в языке C# делятся на встро- енные (стандартные) и определяемые программистом [5]. Перед использованием любую переменную надо определить. Синтаксис определения переменной выглядит следующим образом:
Доступ онлайн
В корзину