12
с/к Анализ изображений, OpenCV 5. Сглаживание УрГУ / ИММ осень 2010 лекции и объявления: вопросы отправляйте на адрес www.uralvision.blogspot.com [email protected]

Лекции OpenCV: 5. Сглаживание

Embed Size (px)

Citation preview

Page 1: Лекции OpenCV: 5. Сглаживание

с/к Анализ изображений, OpenCV

5. Сглаживание

УрГУ / ИММ осень 2010лекции и объявления: вопросы отправляйте на адрес www.uralvision.blogspot.com [email protected]

Page 2: Лекции OpenCV: 5. Сглаживание

СглаживаниеСамая часто используемая функция для сглаживания:void GaussianBlur(const Mat& src, //входное изображение Mat& dst, //выходное изображение Size ksize, //размер окна сглаживания double sigmaX, //параметры гауссиана double sigmaY=0, int borderType=BORDER_DEFAULT) //как работать с //границей

- Функция выполняет сглаживание src с использованием функции Гаусса.- dst будет иметь тот же тип и размеры, что и src.- Допустимо, чтобы dst == src.- ksize - размер ядра фильтра, когда размеры должны быть нечетными.- sigmaX, sigmaY - стандартные отклонения по X и Y. Если 0, то вычисляются из ksize.- borderType - как работать на границе, например, BORDER_REFLECT.

Page 3: Лекции OpenCV: 5. Сглаживание

СглаживаниеПримерMat image = imread( "3dart.jpg" );Mat blurred1, blurred2;GaussianBlur( image, blurred1, cv::Size( 11, 11 ), 0 );GaussianBlur( image, blurred2, cv::Size( 41, 41 ), 0 );

image blurred1 blurred2

http://www.innocentenglish.com/funny-pics/best-pics/stairs-sidewalk-art.jpg

Page 4: Лекции OpenCV: 5. Сглаживание

СглаживаниеДругие функции, выполняющие сглаживание:medianBlur - медианная фильтрацияblur - сглаживание квадратным окном (усреднение)filter2D - сглаживание с любым фильтром, представленным в виде матрицы

GaussianBlur medianBlur blur

Все три метода работали с фильтром размером 11x11 пикселов. Гауссов фильтр дал самый естественный результат. Медианный - выделил области одного цвета и удалил мелкие детали.Фильтр усреднения - видны нежелательные артефакты - квадратные края у объектов.

Page 5: Лекции OpenCV: 5. Сглаживание

Для чего применяется сглаживание

1. Устранение мелкого шума на изображении, для последующего анализа изображения.Делается с помощью фильтра небольшого размера.

Чаще всего - используют гауссов фильтр, реже - медианную фильтрацию.

Page 6: Лекции OpenCV: 5. Сглаживание

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

В примере использована картинка, полученная инвертированием http://www.eyesontutorials.com/images/Designing/Jeka/tut180_dark_wallpaper/12.jpg

Исходная картинкас неоднородным фоном

Сглаживание фильтром размером 201x201 пиксел

Разность исходной и сглаженной картинок. Фон теперь однородно черный.

Page 7: Лекции OpenCV: 5. Сглаживание

Для чего применяется сглаживание

3. Подчеркивание пикселов контуров объектов. (Факт из теории: разность двух гауссианов аппроксимирует лапласиан).Используется два гауссовых фильтра с размерами a и ~2a.

Исходное изображение Разность двух сглаженных картинок с радиусами 3 и 7, умноженная на 20. Ярким цветом выделились контура объектов.

Page 8: Лекции OpenCV: 5. Сглаживание

Для чего применяется сглаживание4. Не относящееся к компьютерному зрению,а к компьютерной графике:

- гауссовым фильтром моделируется эффект дефокусировки.

- несимметричным фильтром создается эффект "скоростного смаза" (motion blur).

Боковое движение Движение вперед Вращение

Page 9: Лекции OpenCV: 5. Сглаживание

Практическая задача 2Сделать мультфильм, в котором исходная картинка подвергается размытию с возрастающим размером окна. То есть, постепенно размывается.

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

2. Для алгоритма размытия используйтегауссов фильтр (если ваша фамилия четной длины),или медианный фильтр (если ваша фамилия нечетной длины).

3. В мультфильме должно быть не менее 100 кадров.

4. Результат - высылайте ссылку на ваше видео на youtube, и cpp-код.

Page 10: Лекции OpenCV: 5. Сглаживание

Практическая задача 2Уточнение, как делать

В OpenCV есть возможность явно создавать avi файлы. Мы предлагаем сделать проще.

1. Изображения записывать на диск в одну папку в формате .bmp, с названиямиimage000.bmp, image001.bmp, ....

2. Затем из них сделать avi-файл с помощью программы VirtualDub(File->Open video file, и в появившемся диалоге указать первую картинку из набора.После этого Video -> Compresson, выбрать кодек.Наконец, File -> Save as avi... - запись avi-файла).

3. Выложить полученный файл на youtube.

Page 11: Лекции OpenCV: 5. Сглаживание

Практическая задача 3Используя1) вырезание части изображения, (см. 2-ю лекцию, "5. Работа с прямоугольными подобластями изображения")2) функцию изменения размера resize()3) суммирование изображений с весами (см. 2-ю лекцию, "3. Линейные операции над изображениями")

реализовать эффект "Движение вперед".

Результат представить в виде cpp-файла, а также входной и выходной картинок.Название объекта на входной картинке должно начинаться на первую букву вашей фамилии.

Page 12: Лекции OpenCV: 5. Сглаживание

Практическая задача 3Уточнение, как делать

Вырезаем N=20 прямоугольных областей - image[i], их увеличиваем в размере,и из них строим сумму

1.0 / N * image[0] + 1.0 / N * image[1] + ... + 1.0 / N * image[N-1];

это и будет результат.