Введение в компьютерную графику
Полугодовой курс ВМиК МГУ, 2003
     

Задание №2. Цифровая обработка сигналов.

Начало: 26 февраля 2003 года.
Конец: 12 марта 2003 года (23:59)

Автор задания:
Алексей Лукин

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

Пример спектра изображения

spirog.jpg (61161 bytes)

Исходная картинка

 

spirogspectrum.jpg (59687 bytes)

Ее спектр (логарифмический масштаб амплитуд)

 

Часть 2: Работа со звуком

Требуется написать программу, умеющую:

  • Загружать WAV-файл (достаточно какого-нибудь одного формата, скажем - 44 кГц, 16 бит, моно). 1 балл
  • Приглушать голос солиста (эффект караоке). Достигается вычитанием сэмплов одного стереоканала из сэмплов другого стереоканала. В результате получается моно-звук, который нужно сохранить в WAV-файл. 1 балл
  • Строить сонограмму сигнала. Сонограмма - отображение графика спектра сигнала и его изменений во времени. Возможность настраиваемого логарифмического масштаба амплитуд. Возможность выбора размера FFT. Возможность включения весового окна (хэннинг). До 4 баллов

Программа может быть совмещена с программой по обработке изображений, а может быть и отдельным приложением. Отображения формы волны WAV-файла не требуется.

Построение сонограммы

Для построения сонограммы нужно вычислять FFT от последовательных (по времени) блоков сигнала и отображать амплитуды в зависимости от частоты и номера блока (времени). Желательно отображать амплитуды в логарифмическом масштабе. Желательно перед вычислением спектра домножать блоки сигнала на весовое окно.

Примеры сонограмм

gtr.jpg (56345 bytes)

Нота на гитаре
Видно, что высокочастотные гармоники затухают быстрее низкочастотных

 

pno.jpg (34623 bytes)

Нота на пианино
Видно, что у пианино меньше высокочастотных гармоник

 

voc.jpg (67088 bytes)

Нота, исполненная певцом
В конце звучания виден прием "вибрато": модуляция высоты звука

 

sp.jpg (58978 bytes)

Фрагмент речи

 

spzoom.jpg (62436 bytes)

Приближение низкочастотной части того же фрагмента речи

 

Оформление

Оформление не отличается от обычного.

ZIP-архив с исходными текстами и исполняемыми файлами, названный по схеме GZV_nnnnnnnn.zip (где G - последняя цифра номера группы, Z - номер задания, V - номер версии задания, nnnnnnnn - номер студенческого билета) присылайте на assign2@graphics.cs.msu.su

Например, студент 206 группы с номером студенческого билета 06529042, сдающий обновленную (вторую) версию программы по второму заданию, должен прислать архив с именем 622_06529042.zip.

Также смотрите здесь, какие файлы нам присылать и как их оформить Советуем очень внимательно прочитать весь FAQ

Не забудьте положить в архив файл readme.txt. В файле описать интерфейс програмы (алгоритм работы с программой, пункты меню, управляющие клавиши)

!Внимание: обратите внимание на правильное именование и структуру архива с работой, а также на содержание файла readme.txt. Если ваша работа не будет соответствовать требованиям, баллы могут быть снижены.

Результаты работы

Результаты смотрите в интернете и/или на стенде около комнаты 703.

Примечания

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

ЧаВо по заданию

На домашней странице автора расположены ЧаВо по заданию. ЧаВо ежедневно обновляются и расширяются.

 

Your comments and questions: lukin@ixbt.com
Главная | О курсе | Лекции | Библиотека | Задания | Оценки | FAQs
  (с) Лаборатория компьютерной графики, 1997-2003
Дизайн: Алексей Игнатенко