ти зображення з нотами перших двох октав з тривалістю нот від цілої до четвертний; на зображенні не повинні розташовуватися сторонні об'єкти. У програмі всі операції з підготовки зображення до розпізнавання необхідно виконувати послідовно.
У програмі необхідно передбачити наступні етапи:
- завантаження зображення;
- бінаризація зображення;
- поворот зображення;
- розпізнавання зображення;
- програвання розпізнаних нот.
Вимоги до реалізації проекту:
- Операційна система - Windows 7;
- середа розробки додатку - Microsoft Visual Studio 2010;
- Мова програмування - C #.
3. ОПИС ВИКОРИСТОВУЮТЬСЯ АЛГОРИТМІВ І ПІДХОДІВ
Робота із зображенням в даному проекті проводиться на основі бібліотеки Drawing.dll, в якій описані основні класи (Bitmap, Image, Graphics, Point) для реалізації програми. Для відтворення звуків використовується бібліотека Kernel32.dll.
3.1 Алгоритм повороту зображення
Для повороту зображення використовується стандартна функція C #, вхідними параметрами якої є сама картинка, кут, на який її необхідно повернути, і координати точки, щодо якої буде відбуватися поворот.
Т.к. відомо, що більшу частину зображення з партитурою займає нотний стан, то відштовхуючись від цього можна знайти точки верхньої лінії стану. Для цього необхідно обробляти зображення зверху вниз і знайти дві точки першої лінії нотного стану, що знаходяться на деякій відстані один від одного.
Малюнок 3.1.1 - Знаходження ліній
Після того, як були знайдені дві точки, потрібно провести пряму, що проходить через них. Потім з першої точки проводиться горизонтальна пряма, паралельна координатної осі Ох. Далі по теоремі синусів необхідно обчислити кут між двома проведеними прямими.
Малюнок 3.1.2 - Необхідний кут для повороту
Поворот зображення відбувається щодо тієї точки, з якої були проведені обидві прямі.
3.2 Формування інформативних ознак для розпізнавання
Для розпізнавання нот було випробувано кілька способів і алгоритмів розпізнавання. Найкращий результат показав наступний метод. Щоб розпізнати ноти, необхідно спочатку виділити лінійки нот, а після пройтися по кожній, розпізнаючи ноти щодо п'яти ліній.
Нота визначається залежно від того, між якими лініями вона знаходиться. Якщо вона знаходиться нижче, ніж 5-я лінія, то це нота «до» першої октави, якщо нижче 5-й, але стосується її, - це нота «ре», на 5-й лінії - «мі», між 5 -й і 4-й - «фа», на 4-й - «сіль», між 4-й і 3-й - «ля», на 3-й - «сі», між 3-й і 2-й -нота «до» другої октави, на 2-й - нота «ре», між 2-й і 1-й - «мі» і т.д.
Малюнок 3.2.1 - Розпізнавані ноти
Далі необхідно визначити тривалість звучання ноти. Так, якщо нота НЕ зафарбована і у неї немає штилю, то вона є цілою. Якщо нота НЕ зафарбована, але у неї є штиль, то вона є половинній.
Малюнок 3.2.2 - Елементи зо...