Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Применение объектно-ориентированного программирования в задачах обработки сигналов и изображений с элементами искусственного интеллекта

Покупка
Артикул: 800914.01.99
Доступ онлайн
500 ₽
В корзину
Учебное пособие содержит пять теоретических разделов по основам объектно-ориентированного подхода в прикладных задачах обработки сигналов и изображений. Каждый раздел включает практические задания для самостоятельной работы и контрольные вопросы. Для студентов специальности 11.05.01 «Радиоэлектронные системы и комплексы», направлений подготовки 11.04.01 «Радиотехника», 12.03.04, 12.04.04 «Биотехнические системы и технологии», 09.03.02, 09.04.02 «Информационные системы и технологии», 15.03.01, 15.04.01«Машиностроение».
Применение объектно-ориентированного программирования в задачах обработки сигналов и изображений с элементами искусственного интеллекта : учебное пособие / А. А. Баев, К. О. Иванов, Ю. А. Ипатов, А. Н. Леухин ; Министерство науки и высшего образования Российской Федерации, ФГБОУ ВО «Поволжский государственный технологический университет». - Йошкар-Ола : Поволжский государственный технологический университет, 2022. - 206 с. - ISBN 978-5-8158-2275-7. - Текст : электронный. - URL: https://znanium.com/catalog/product/1972681 (дата обращения: 27.07.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
ПРИМЕНЕНИЕ 

ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ

В ЗАДАЧАХ ОБРАБОТКИ СИГНАЛОВ И ИЗОБРАЖЕНИЙ

С ЭЛЕМЕНТАМИ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА

Учебное пособие

Йошкар-Ола

ПГТУ
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].

Перед использованием любую переменную надо определить. 

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

Доступ онлайн
500 ₽
В корзину