Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Записка_моя.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.69 Mб
Скачать

51

Содержание

ВВЕДЕНИЕ 4

1 ОПИСАНИЕ ПРОБЛЕМНОЙ ОБЛАСТИ 5

1.1 Бинаризация изображения 5

2 ПОСТАНОВКА ЗАДАЧИ 11

12

3 ОПИСАНИЕ ИСПОЛЬЗУЕМЫХ АЛГОРИТМОВ И ПОДХОДОВ 14

3.2 Алгоритм поворота изображения 16

3.5 Формирование информативных признаков для распознавания 20

4 ПРОГРАММНАЯ РЕАЛИЗАЦИЯ 25

4.1 Схема программного обеспечения 25

4.2 Описание разработанных классов, функций, методов 25

4.3 Тестовый пример и руководство пользователя 27

ЗАКЛЮЧЕНИЕ 33

ПРИЛОЖЕНИЕ 35

UML диаграмма классов 35

Листинг программы 35

Введение

Для того, чтобы воспроизвести на фортепиано или на любом другом музыкальном инструменте мелодию, необходимо разбираться в записях партитуры, т. е. знать наименования нот, а также уметь определять длину их звучания.

Партиту́ра (итал. partitura, букв. — разделение, распределение) в музыке — нотная запись многоголосного музыкального произведения, предназначенного для исполнения.

В наши дни существуют программы способные распознать ноты и воспроизвести их, но количество таких приложений невелико. Основной задачей в данном курсовом проекте являлось распознавание нот на музыкальной партитуре, воспроизведение распознанных нот и определение длины их звучания.

Для решения поставленной задачи, было реализовано несколько этапов работы с изображением. Первым этапом являлась предварительная подготовка изображения, с целью улучшить качество данного изображения. Он включал в себя: поворот, бинаризация изображения, сегментирование, масштабирование. Вторым этапом являлось формирование информативных признаков для распознавания. И завершающим этапом является непосредственно само распознавания.

1 Описание проблемной области

В данном курсовом проекте необходимо реализовать распознавание нот, длины их звучание, а также воспроизведение распознанных нот. На вход приложения подается сканированное изображения нотного стана. Как правило, распознавание состоит из нескольких этапов. Первым этапам является предварительная обработка изображения, которая улучшает входное изображения для дальнейших этапов распознавания. Данный этап может включать в себя следующие методы:

  • Поворот изображения

  • Перевод изображение в полутоновое

  • Бинаризация

  • Фильтрация

  • Сегментация

  • Выделение контуров

  • Утоньшение

  • Масштабирование

Вторым этапом является формирование признаков для распознаваемых объектов на изображении и далее, непосредственно, само распознавание.

В рамках данного курсового проекта было принято использовать следующие методы предварительной обработки изображения: поворот изображения, бинаризация, сегментация, масштабирование, выделение контуров. Так же для определения длины звучания ноты будет использоваться персептронная нейросеть.

Ниже описаны существующие виды методов предварительной обработки.

1.1 Бинаризация изображения

Бинаризацией называется процесс преобразования полутонового изображения в изображение, яркость пикселей которого может иметь только два значения – 0 или 1. Такое изображение называется бинарным. В зависимости от вида изображения применяются различные способы бинаризации.

Методы бинаризации:

  • Бинаризация с нижним порогом

Бинаризация с нижним порогом является наиболее простой операцией, в которой используется только одно значение порога:

Все значения вместо критерия становятся 1, в данном случае 255 (белый) и все значения (амплитуды) пикселей, которые больше порога t — 0 (черный).

  • Метод Ниблэка

Идея данного метода состоит в варьировании порога яркости B бинаризации от точки к точке на основании локального значения стандартного отклонения. Порог яркости в точке (x, y) рассчитывается так: , где μ(x, y) – среднее и s(x, y) — среднеквадратичное отклонение выборки для некоторой окрестности точки. Размер окрестности должен быть минимальным, но таким, чтобы сохранить локальные детали изображения. В то же время размер должен быть достаточно большим, чтобы понизить влияние шума на результат. Значение k определяет, какую часть границы объекта взять в качестве самого объекта. Значение k=-0.2 задает достаточно хорошее разделение объектов, если они представлены черным цветом, а значение k=+0.2, – если объекты представлены белым цветом.

  • Метод Бернсена

Обычная квадратная апертура с нечетным числом пикселей пробегает в цикле по всем пикселям исходного изображения. На каждом шаге находится Min и Max. Находится среднее значение Avg= (Min + Max) /2. Если текущий пиксель больше Avg<E — он становится белым, иначе — чёрным. E — некая константа заданная пользователем. Если среднее меньше порога контраста — то текущий пиксель становится того цвета, который задавался параметром «цвет сомнительного пикселя». Имеет ряд недостатков: после обработки монотонных областей яркости формируются сильные паразитные помехи, в некоторых случаях приводит к появлению ложных черных пятен.

1.2 Сегментация изображения

В компьютерном зрении, сегментация — это процесс разделения цифрового изображения на несколько сегментов. Цель сегментации заключается в упрощении и/или изменении представления изображения, чтобы его было проще и легче анализировать. Сегментация изображений обычно используется для того, чтобы выделить объекты и границы (линии, кривые, и т. д.) на изображениях.

Методы сегментации:

  • Методы теории графов

Методы теории графов – одно из наиболее активно развивающихся направлений в сегментации изображений. Общая идея методов этой группы следующая. Изображение представляется в виде взвешенного графа, с вершинами в точках изображения. Вес ребра графа отражает сходство точек в некотором смысле (расстояние между точками по некоторой метрике). Разбиение изображения моделируется разрезами графа.Обычно в методах теории графов вводится функционал «стоимости» разреза, отражающий качество полученной сегментации. Так задача разбиения изображения на однородные области сводится к оптимизационной задаче поиска разреза минимальной стоимости на графе. Такой подход позволяет помимо однородности цвета и текстуры сегментов управлять также формой сегментов, их размером, сложностью границ и т. п.

  • Методы разрастания областей

Первым был метод разрастания областей из семян. В качестве входных данных этот метод принимает изображений и набор семян. Семена отмечают объекты, которые нужно выделить. Области постепенно разрастаются, сравнивая все незанятые соседние пиксели с областью. Разность между яркостью пикселя и средней яркостью области используется как мера схожести. Пиксель с наименьшей такой разностью добавляется в соответствующую область. Процесс продолжается пока все пиксели не будут добавлены в один из регионов. Метод разрастания областей из семян требует дополнительного ввода. Результат сегментации зависит от выбора семян. Шум на изображении может вызвать то, что семена плохо размещены. Метод разрастания областей без использования семян — это изменённый алгоритм, который не требует явных семян. Он начинает с одной области  — пиксель, выбранный здесь незначительно влияет на конечную сегментацию. На каждой итерации он рассматривает соседние пиксели так же, как метод разрастания областей с использованием семян. Но он отличается тем, что если минимальная не меньше, чем заданный порог , то он добавляется в соответствующую область . В противном случае пиксель считается сильно отличающимся от всех текущих областей и создаётся новая область , содержащая этот пиксель.

  • Сегментация по яркости

Используется метод наращивания областей. Изображение при этом разбивается на фрагменты с одновременной проверкой их на однородность до тех пор, пока каждый из фрагментов не будет удовлетворять заданному критерию однородности. Затем из этих фрагментов формируются однородные области в результате их наращивания.

1.3 Масштабирование изображения

Масштабирование цифровых изображений связано с приведением массива информации в соответствие с разрешением и размером иллюстрации. В зависимости от цели этот массив информации необходимо либо увеличить, либо сократить. Простое размножение или сокращение является не сложной задачей для компьютерных систем. Однако при этом возможны существенные искажения геометрии мелких деталей и появление ложных узоров на текстурах. Чтобы эти потери при трансформации были минимальны необходимо использовать интерполяционные алгоритмы. Но такие методы требуют больше машинного времени, чем простые.

Методы масштабирования:

  • Копирование ближайшего соседа

Простейшим способом удвоения размера является метод копирования ближайшего пиксела, заменяющий каждый пиксель четырьмя пикселями того же цвета. Полученное изображение больше оригинала, и сохраняет его детали, но приобретает нежелательный лестничный эффект.

  • Билинейная интерполяция

Билинейная интерполяция используется для расчета цветов дополнительных пикселей ( ) относительно основных, исходных ( ), что позволяет сглаживать переходы. Значением функции в данном случае выступает цвет пикселя (его составляющие). При этом квадрат, образованный четырьмя рассматриваемыми основными точками принимается единичным. Главным минусом билинейной интерполяции при масштабировании изображений является тот факт, что при увеличении в раз изображения размером на пикселей в результате будет получено изображение размером не на пикселей, а на пикселей. Связано это с тем, что в исходном изображении, например, по горизонтали имеется точек, то есть смежных пар. При увеличении изображения в раз между каждой парой основных точек вставляется по дополнительных точек (то есть при увеличении вдвое между основными точками вставляется еще по одной, при увеличении втрое — по две и т. д.). Итого в результате ширина результирующего изображения будет равна сумме количества основных и дополнительных точек: Проще говоря, для последнего пикселя (в каждой строке и столбце) исходного изображения не находится пары, с которой можно было бы провести интерполирование.

1.4 Выделение контуров

Все алгоритмы делятся на 2 типа: сканирующие, отслеживающие.

  • Отслеживающие алгоритмы

Отслеживающие алгоритмы отыскивают на изображении первую точку контура и затем двигаются и векторизует его. Пример алгоритма является «Жук». «Жук» начинает движение с белой области по направлению к черной. Попав на первый черный пиксель, «жук» поворачивает налево и переходит к следующему пикселю. Если этот пиксель белый, «жук» поворачивает направо, иначе налево. Работа алгоритма заканчивается, когда жук попадает в исходную точку. Все координаты пикселей-точек перехода с белого на черный и с черного на белый запоминаются и представляют собой границу (контур) объекта. Алгоритм позволяет выделять наружный контур.

  • Сканирующие алгоритмы

Сканирующие алгоритмы просматривают все изображение и выделяют контурные точки без отслеживания контура объекта. Например, один из алгоритмов обрабатывает полосу изображения и определяет контурные точки в процессе движения по всему изображению. В полосе одновременно хранятся 2 строки изображения (текущие и предыдущие). При обработке анализируются координаты черных серий одних строк слева – направо и определяются пять ситуация:

  1. «Начало» - черная серия текущей строки полностью закрывается белой серией предыдущей строки.

  2. «Продолжение» - частичное перекрытие черных серий обоих строк.

  3. «Ветвление» - две соседние черные серии текущей строки закрываются черной серией предыдущей строки.

  4. «Слияние» - противоположно «продолжению».

  5. «Конец» - противоположно «началу».

В результате формируется массив, содержащий название ситуации и координаты «х» начала и конца черных серий, которые в дальнейшем обрабатываются.

1.5 Системы распознавания

Системы распознавания делятся на:

  • Системы без обучения

  • Системы с учителем

  • Самообучающиеся системы

Системы без обучения являются простыми, но не универсальными. Основные из них: метод зондов, метод маркировки изображений, метод совмещения с эталоном.

К системам с учителем относятся: персептрон, метод ближайшего соседа, метод k – ближайших соседей. Распознавание в этих системах ведется на основе решающих правил.

В случае самообучающихся систем, учитель отсутствует и все алгоритмы строятся на основе геометрического подхода и гипотезы компактности.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]