Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
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 (дата обращения: 29.03.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 ₽
В корзину