Линейные фильтры.

advertisement
Оглавление
Линейные фильтры. ...........................................................................................................2
Meanфильтр. ...................................................................................................................2
Фильтр Гаусса. ................................................................................................................2
Фильтр LoG......................................................................................................................3
Motionblur. ......................................................................................................................4
Стохастические фильтры. ..................................................................................................7
Медианный фильтр. ......................................................................................................7
Сегментация. ......................................................................................................................8
k-means (k средних). ......................................................................................................8
Meanshift .......................................................................................................................13
Фильтры зашумления. .....................................................................................................15
Белый шум. ...................................................................................................................15
Пыль. .............................................................................................................................16
Соль и перец. ................................................................................................................17
Морфологический анализ изображения. ......................................................................17
Эрозия. ..........................................................................................................................17
Дилатация. ....................................................................................................................17
Преобразования по изменению цветности. ..................................................................17
Инверсия. ......................................................................................................................17
Линейные фильтры.
Линейным фильтром называется такое преобразование изображения 𝑓, что для
любых двух изображений 𝐴 и 𝐵и любых констант 𝛼 и 𝛽 выполняется:
𝑓(𝛼𝐴 + 𝛽𝐵) = 𝛼𝑓(𝐴) + 𝛽𝑓(𝐵)
Линейный фильтр можно представить через интеграл свертки:
(1)
𝑓(𝐴)(𝑥, 𝑦) = ∫ 𝐾(𝜉 , 𝜂)𝐴(𝑥 + 𝜉, 𝑦 + 𝜂)𝑑𝜉𝑑𝜂 ,
𝑤
где𝐾(𝜉, 𝜂) - ядро преобразования. Обычно ядро отлично от нуля на небольшом
ограниченном множестве, либо очень быстро убывает (напримергауссиан).
Так как изображение является дискретным сигналом, вместо интеграла удобнее
использовать сумму, а ядро представлять как матрицу, размерность которой будет
2𝑟+1
̂ = {𝑘𝑖,𝑗 }
невелика в силу того, что ядро отлично от нуля в небольшой области,𝐾
, где 𝑟–
𝑖,𝑗=1
радиус ядра. Тогда формула (1) преобразуется в
𝑟
𝑟
(2)
𝑓(𝐴)[𝑥][𝑦] = ∑ ∑ 𝑘𝑖+𝑟+1,𝑗+𝑟+1 𝐴[𝑥 + 𝑖][𝑦 + 𝑗].
𝑖=−𝑟 𝑗=−𝑟
Meanфильтр.
Простейшим примером линейного фильтра является mean-фильтр. Meanфильтр
изменяет значения каждого пикселя на среднее от его соседей. Для mean фильтра
радиуса 𝑟 матрица преобразования имеет вид
1 … 1
1
𝐾𝑚𝑒𝑎𝑛 =
(
… … …),
(2𝑟 + 1)2
1 … 1
а формула (2) вычисляет среднее значение в квадрате[𝑥 − 𝑟; 𝑥 + 𝑟] × [𝑦 − 𝑟, 𝑦 + 𝑟].
Фильтр Гаусса.
Фильтр гаусса это линейный фильтр с ядром Гаусса
𝜉2 +𝜂2
1
−
𝐾(𝜉, 𝜂) =
𝑒 2𝜎2 .
2𝜋𝜎 2
Гауссиан всегда больше нуля, но почти весь сосредоточен в области вокруг нуля
(правило 3-х сигм), поэтому сильно удаленные пиксели почти не будут вносить вклада.
Для дискретных преобразований часто используются дискретные аппроксимации
гауссина. Например для 𝜎 = 1, можно считать, что 𝑟 = 2, а матрица преобразования
имеет вид:
7
4 1
1 4
1 4 16 26 16 4
7 26 41 26 7 .
𝐾𝑔𝑎𝑢𝑠𝑠 =
273 4 16 26 16 4
(1
4
7
4
1)
Рисунок 1. График двумерногогауссиана.
Фильтр LoG.
Лапласиан𝐿(𝑥, 𝑦)изображения с интенсивностью пикселей 𝐼(𝑥, 𝑦) :
𝜕2𝐼 𝜕2𝐼
𝐿(𝑥, 𝑦) =
+
𝜕𝑥 2 𝜕𝑦 2
Применение линейного фильтра с ядром𝐿(𝑥, 𝑦)выделяет на изображении области
быстрого изменения интенсивности, благодаря чему облегчается определение краев
отдельных объектов на изображении. Такой фильтр очень чувствителен к шуму, поэтому
необходимо перед его применением произвести «сглаживание» изображения, например,
фильтром Гаусса.
Так как операция свертки линейна, имеется возможность предварительно найти свертку
фильтра гаусса и Лапласиана, и потом уже применять полученный фильтр к изображению.
Функция, получаемая в результате свертки двух фильтров, имеет вид:
𝐿𝑜𝐺(𝑥, 𝑦) = −
1
𝑥 2 + 𝑦 2 −𝑥2+𝑦2 2
(1
−
) 𝑒 2𝜎
𝜋𝜎 4
2𝜎 2
Перед применением фильтра необходимо указать два параметра:


R – радиус (размер ядра фильтра)
𝜎 – дисперсия в ядре Гаусса.
Пример:
Рисунок 2. Применение фильтра LoG (r = 3,𝛔= 1)
Motionblur.
Motionblur применяется для создания эффекта движения. В результате
применения этого фильтра в каждый пиксель изображения заменяется на среднее тех
пикселей, которые пришли в эту точку в результате движения.
Рисунок 3. Исходное изображение.
Рисунок 4. Применение эффекта Motionblurc движением по прямой.
Рассмотрим Motionblur в случае прямолинейного движения.
Представлять фильтр в виде (2) неудобно потому что матрица будет очень
большого размера, но сильно разреженной (там будут 1 только на траектории), поэтому
будем действовать иначе.
Зададим величину сдвига 𝑑 и скорость движения 𝑣 и время наблюдение движения
𝑑
𝑇. В каждый момент времени 𝑡𝑖 = 𝑖 𝑣 , 𝑖 ∈ 𝑁 к пикселю исходного изображения будем
добавлять пиксель, который придет в него в данный момент времени. Когда пройдет
время 𝑇, закончим итерации и поделим значение в точке на количество пикселей,
пришедших в нее.
Аналогично можно выполнить фильтр Zoomblur (движение от центра изображения
к краям) и Spinblur (вращение изображения вокруг центра).
Рисунок5. Применение Motionblur, Zoomblur и Spinblur.
Cлева направо,cверху вниз: 1-Исходное изображение;2-Motion blur (сдвиг на 30% от
размеров изображения под углом 135 градусов, 10 итераций); 3-Zoomblur (увеличение в
2 раза, 30 итераций); 4-Spinblur (поворот на 25 градусов, 5 итераций).
Стохастические фильтры.
Стохастические фильтры представляют точки окрестности пикселя как выборку
некоторой случайной величины. Значение нового пикселя определяется характеристикой
этой выборки.
Медианный фильтр.
Медианный фильтр – это нелинейное преобразование изображения, в
большинстве случаев применяющееся для удаления (или подавления) шумов.
Основная идея этого фильтра состоит в том, чтобы заменить каждый пиксель
медианой из набора его соседних элементов («шаблона»). Для этого необходимо
отсортировать каждый такой набор и выбрать из него значение, стоящее на среднем
месте (будем всегда брать шаблоны с нечетным числом элементов).
Фильтр может быть использован для подавления шума, так как медиана является
робастной оценкой, но при этом может снижаться четкость границ объектов.
Параметр фильтра – r (радиус), т.е. размер шаблона.
Пример:
Рисунок 5. Применение медианного фильтра (r = 2) к зашумленному
изображению
Сегментация.
Сегментация – это процесс разделения пикселей изображения на
несколько множеств (сегментов) для упрощения анализа изображения.
Пиксели сегментов могут быть закрашены одним цветом, а могут просто
получать метки.
Сегментация, является частным случаем кластеризации данных
(разбиение точек всего множества на некоторые подмножества по критерию
близости в заданной метрике). Изображение можно представить как
множество точек в пространстве 𝑅 5 , так каждый пиксель имеет две
пространственные координаты и три цветовые. Так же можно использовать
яркость и другие характеристики.
Метрикой в таком пространстве может быть взвешенная сумма
пространственных и цветовых метрик, например
||𝑃1 − 𝑃2 || = 𝜆||𝑟1 − 𝑟2 ||𝑝 + (1 − 𝜆)||𝑐1 − 𝑐2 ||𝑞 , 𝜆 ∈ [0; 1], 𝑝 ≥ 1, 𝑞 ≥ 1
Рисунок 6.
Разные виды где 𝑟𝑖 , 𝑐𝑖 - пространственная и цветовая компоненты точки 𝑃𝑖 .Чаще всего
применяются метрики с параметрами 1, 2, ∞ (Error! Reference source not
метрик
found.). Чем больше 𝑝и 𝑞, тем большее количество точек считаются близкими.
На рисунке видно, что площадь единичного шара растет с ростом параметра. Иногда
применяются метрики с параметрами меньше 1.
Сегментация изображения активно применяется в медицине, для определения по
снимкам мест опухолей и патологий, в изучении объектов и местности спутниковым
снимкам, в машинном зрении для распознавания объектов и человеческих лиц.
k-means (k средних).
Одним из наиболее популярных алгоритмов кластеризации является алгоритм kmeans. Базовый алгоритм выглядит так:
1. Выбрать kцентров кластеров, случайно или на основании некоторой эвристики.
2. Поместить каждый пиксель изображения в кластер, центр которого ближе всего
к этому пикселю.
3. Заново вычислить центры кластеров, усредняя все пиксели в кластере.
4. Повторять шаги 2 и 3 до сходимости (например, когда пиксели будут оставаться в
том же кластере).
Преимуществами это алгоритма является простота и гарантированная сходимость.
Недостатки состоят в том, что необходимо знать заранее количество кластеров и их
расположение и как следствие сильная зависимость алгоритма от начальных условий.
Второй недостаток состоит в том, что алгоритм может сходиться не к оптимальному
решению.
Рисунок 7. Пример работы алгоритма для кластеризации точек в двумерном
пространстве.
Для применения этого алгоритма к задаче сегментации изображения можно взять
следующую метрику:
||𝑃1 − 𝑃2 || = 𝜆||𝑟1 − 𝑟2 ||2 + (1 − 𝜆)||с1 − с2 ||1 .
Выбирая различные 𝜆 можно определить что более важно: близость точек на картинке (𝜆
близко к 1) или близость точек по цвету (𝜆 близко к нулю).
Если 𝜆 = 0, то координаты точек никак не влияют на процесс и кластеры
определяются только цветами. Тогда изначально можно равномерно распределить
кластеры по палитре и таким образом выполнить пункт 1, указанного выше алгоритма.
Кластеризацию такого типа можно использовать для раскраски изображения в k цветов,
но эффект не всегда получается хорошим из-за того, что в метрике не учитывается
яркость, важная для человеческого восприятия.
Если считать метрику по цвету как:
||𝑐1 − 𝑐2 || = 0.3|𝑟1 − 𝑟2 | + 0.59|𝑔1 − 𝑔2 | + 0.11|𝑏1 − 𝑏2 |,
то получаются более подходящие оттенки.
Рисунок 8. Исходное изображение.
Рисунок 9. Изображение раскрашенное в 16 цветов методом k-means без учета
яркости.
Рисунок 10. Изображение раскрашенное в 16 цветов методом k-meansс учетом
яркости.
Попробуем раскрасить это изображение в 16 цветов, используя k-means
кластеризацию, чтобы цвета были наиболее подходящие. В первом случае будем
использовать обычную цветовую метрику (Рисунок 9), а во втором с учетом яркости
(Рисунок 10).
Видно, что во втором случае оттенки и тени на холмах лучше повторяют исходное
изображение.
При запуске алгоритма с 𝜆 ≠ 0 необходимо определить пространственное
положение кластеров. Для этого сделаем один шаг алгоритма с 𝜆 = 0 и разобьем все
пиксели по цветам. Далее мы можем найти центр каждого кластера как среднее
арифметическое положений входящих в него точек.
Рассмотрим как меняется результат кластеризации при увеличения влияния
близости пикселей в пространстве.
Рисунок 11. Исходное изображение.
Рисунок 12. 20 кластеров, 𝝀 = 𝟎. 𝟐.
Рисунок 13. 20 кластеров, 𝝀 = 𝟎. 𝟒.
Рисунок 14. 20 кластеров, 𝝀 = 𝟎. 𝟔.
Рисунок 15. 20 кластеров, 𝝀 = 𝟎. 𝟔.
Mean shift
Другим алгоритмом для сегментации изображения является mean shift алгоритм. В
отличие от k-means этому алгоритму не надо указывать количество кластеров.
Mean shift представляет изображение как случайные числа, сгенерированные
смесью каких-то распределений (например смесью гауссианов). Для каждого пикселя мы
можем рассмотреть его соседей как некоторую выборку и найти ее среднее. Далее мы
переходим к среднему и повторяем операцию, до тех пор, пока среднее не совпадет с
самим пикселем. Можно показать, что это процесс сходится.
Более формально:
1. Вводим параметры 𝑟𝑑 и 𝑟𝑐 .
2. Для каждого пикселя 𝑝 рассматриваем выборку 𝑁 = {𝑞| ||𝑟𝑞 − 𝑟𝑝 || ≤
𝑟𝑑 и ||𝑐𝑞 − 𝑐𝑝 || ≤ 𝑟𝑐 } , то есть соседей не слишком сильно отличающихся по
цвету.
a. Вычислим
𝑚(𝑝) =
∑𝑞∈𝑁 𝐾(𝑞 − 𝑝)𝑝
, где 𝐾 − некторое ядро.
∑𝑞∈𝑁 𝐾(𝑞 − 𝑝)
b. 𝑝 ← 𝑚(𝑝)
c. Повторяем шаги a и b пока метод не сойдется.
3. Присваиваем пикселю получившееся значение.
В качестве 𝐾 можно взять например функцию гаусса:
2
𝐾 = 𝑒 −𝑐||𝑝−𝑞|| .
Рисунок 16. Исходное изображение
Рисунок 17. Применение mean shift, 𝒓𝒅 = 𝟏𝟎, 𝒓𝒄 = 𝟑𝟓
Фильтры зашумления.
Фильтры зашумления реализуют искусственное зашумление изображения.
В каждом из представленных фильтров выбирается случайный набор пикселей, у
которых будет изменен цвет. У каждого пикселя одинаковая вероятность (p) попасть в
этот набор, и эта вероятность задается пользователем. Пиксели, не попадающие в этот
набор, сохранят начальный цвет.
Белый шум.
Задается диапазон 𝑑 ∈ (0; 255], и к каждой компоненте каждого пикселя из
случайного набора добавляется случайное число из диапазона [-d; +d].
Рисунок 16. Исходное изображение гусей
Рисунок 17. Белый шум, p = 0.9, d = 250
Рисунок 18. Белый шум, p = 0.9, d = 250
Пыль.
Также задается диапазон 𝑑 ∈ (0; 255], и к каждой компоненте каждого пикселя из
случайного набора добавляется случайное число из диапазона [d; 255].
Рисунок 19. Пыль, p = 0.6, d = 100
Соль и перец.
Каждый пиксель из случайного набора меняет свой цвет на черный или на белый (с
равной вероятностью).
Морфологический анализ изображения.
Эрозия.
Дилатация.
Преобразования по изменению цветности.
Инверсия.
Download