Курс комп'ютерної графіки - друге завдання

Завдання розбите на 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.

Примітки

  1. Завдання виконується строго індивідуально. За спільну роботу або обмін шматками коду ставиться нуль балів всім учасникам, якщо факт командної роботи не було зазначено в readme.txt завдань.
  2. Рекомендується написання програми під сімейство ОС Windows. Написання під інші операційні системи небажано і може викликати затримки з перевіркою таких робіт.

ЧаВо за завданням