Оглавление Линейные фильтры. ...........................................................................................................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 Соль и перец. Каждый пиксель из случайного набора меняет свой цвет на черный или на белый (с равной вероятностью). Морфологический анализ изображения. Эрозия. Дилатация. Преобразования по изменению цветности. Инверсия.