Курс комп'ютерної графіки - друге завдання
Завдання розбите на 2 частини. Перша присвячена обробці зображень, друга - обробці звуку. Перша частина є обов'язковою, друга - додаткової. У другій частині є підзавдання, що не розбиралися на лекціях. У їх вирішенні допоможе методичний посібник "Вступ до цифрову обробку сигналів (математичні основи)".
Частина 1: Псевдотонірованіе, фільтрація зображень
Потрібно написати програму, що виконує наступні операції над зображеннями:- Завантаження і відображення BMP-файлу. Досить зробити підтримку тільки RGB (непалітрових) форматів зображень. 1 бал
- Перетворення зображення (див. Далі), відображення на екрані результату і збереження в BMP-файл (досить RGB-формату).
- Зведення кольорового зображення до градаціях сірого. 1 бал
- Зведення зображення до чорно-білому (2 кольори) за допомогою:
б. діттерінга (додавання шуму), 1 бал
в. дифузії помилки (методом Floyd-Steinberg), 2 бали
- Фільтрація зображення за допомогою фільтра розміром 5x5. Повинна бути можливість завдання довільних коефіцієнтів фільтра. Коефіцієнти фільтра бажано ставити за допомогою діалогового вікна, де є 25 віконець для введення числа і ще 2 віконця для введення чисельника і знаменника дробу - нормує коефіцієнта. Спочатку у всіх віконцях повинні бути нулі. 2 бали
- * Усунення крайових ефектів при фільтрації. 1 бал
- Гаусове розмиття довільного радіуса. Розмір фільтра (непарний) повинен задаватися. 1 бал
- * Реалізувати як двовимірний варіант гауссова розмиття, так і прискорений варіант, заснований на сепарабельном гауссіана. 1 бал
- * Зробити можливість виміру, у скільки разів другий варіант швидше першого. 1 бал
- * Обчислення і відображення спектру зображення. Можливість включення вагового вікна. Можливість зміщення нульової частоти в центр картинки. Можливість видалення постійної складової. Можливість завдання логарифмічного масштабу амплітуд і / або вибору діапазону відображаються амплітуд. До 3 балів
Бажано, щоб програма була під Windows. За зручний інтерфейс може бути нарахований 1 бал.
Обчислення спектру зображення
Спектр обчислюється від зображення в градаціях сірого розмірами 512x512 (або інші ступені двійки). Для обчислення двовимірного спектра потрібно обчислити одномірні комплексні перетворення Фур'є від кожного рядка зображення, а потім - від кожного стовпчика отриманого проміжного комплексного "зображення". Після цього двовимірний масив комплексних коефіцієнтів Фур'є перекладається в форму "амплітуда-фаза" і амплітуди відображаються у вигляді картинки (бажано - в логарифмічному масштабі). При цьому низькі частоти виявляються по кутах, а високі - в центрі. Для отримання більш загальноприйнятого зображення спектра бажано циклічним зрушенням картинки спектра змістити центральну точку в будь-який з кутів.
При цьому бажано підібрати таке відображення ампдітуд на кольори, щоб деталі спектра були помітні. Можна провести нормування амплітуд.
Для поліпшення властивостей спектра можна перед обчисленням спектру усунути з картинки постійну складову (тобто відняти константу, щоб середнє значення сигналу стало дорівнює нулю) і помножити сигнал на вагове вікно. спадає до країв (наприклад - "піднятий косинус" (Хеннінг) або Гауссіан).
Перевірка правильності обчислення спектра: спектр повинен бути симетричний щодо нульової частоти (центральної точки, після "зміщення" нульової частоти в центр).
Для обчислення одновимірного комплексного перетворення Фур'є можна скористатися готовою функцією на C: FFT.C
Приклад спектра зображення
Її спектр (логарифмічний масштаб амплітуд)
Частина 2: Робота зі звуком
Потрібно написати програму, яка вміє:- Завантажувати WAV-файл (досить якогось одного формату, скажімо - 44 кГц, 16 біт, моно). 1 бал
- Приглушати голос соліста (ефект караоке). Досягається вирахуванням семплів одного стереоканалу з семплів іншого стереоканалу. В результаті виходить моно-звук, який потрібно зберегти в WAV-файл. 1 бал
- Будувати сонограмму сигналу. Сонограмма - відображення графіка спектра сигналу і його змін в часі. Можливість настроюється логарифмічного масштабу амплітуд. Можливість вибору розміру FFT. Можливість включення вагового вікна (Хеннінг). До 4 балів
Програма може бути поєднана з програмою по обробці зображень, а може бути і окремим додатком. Відображення форми хвилі WAV-файлу не потрібно.
побудова сонограми
Для побудови сонограми потрібно обчислювати FFT від послідовних (за часом) блоків сигналу і відображати амплітуди в залежності від частоти і номера блоку (часу). Бажано відображати амплітуди в логарифмічному масштабі. Бажано перед обчисленням спектру домножать блоки сигналу на вагове вікно.
приклади сонограм
Нота на гітарі
Видно, що високочастотні гармоніки затухають швидше низькочастотних
Нота на піаніно
Видно, що у піаніно менше високочастотних гармонік
Нота, виконана співаком
В кінці звучання видно прийом "вібрато": модуляція висоти звуку
Наближення низькочастотної частини того ж фрагмента мови
оформлення
Оформлення не відрізняється від звичайного.
ZIP-архів вихідних текстів і виконуваними файлами, названий за схемою GZV_nnnnnnnn.zip (де G - остання цифра номера групи, Z - номер завдання, V - номер версії завдання, nnnnnnnn - номер студентського квитка) надсилайте на [email protected]. msu.su
Наприклад, студент 206 групи з номером студентського квитка 06529042, який здає оновлену (другу) версію програми по другому завданням, повинен надіслати архів з ім'ям 622_06529042.zip.
Не забудьте покласти в архів файл readme.txt. У файлі описати інтерфейс програми (алгоритм роботи з програмою, пункти меню, керуючі клавіші)
Результати роботи
Результати дивіться в інтернеті і / або на стенді біля кімнати 703.
Примітки
- Завдання виконується строго індивідуально. За спільну роботу або обмін шматками коду ставиться нуль балів всім учасникам, якщо факт командної роботи не було зазначено в readme.txt завдань.
- Рекомендується написання програми під сімейство ОС Windows. Написання під інші операційні системи небажано і може викликати затримки з перевіркою таких робіт.