Филтри

Филтри

Увод

Идеята на филтъра е да направи някаква трансформация върху първоначалното изображение, като по този начин се получи ново изображение. Разбира се, хубаво е новото изображение да е тясно свързано със старото. За да не ставаме много абстрактни ще дам един прост пример - филтър който 'замазва' изображението (на английски blur). Такъв вид филтър, просто усреднява по някакъв начин съдържанието на съседни пиксели и така се получава съдържанието на новия.

Прозорец

Всички знаете какво е прозорец - такова нещо в което има заглавна лента и бутох X горе дясно (горе ляво за любителите на зарзават). Има обаче и други видове прозорци. Квадратна таблица, подматрица на растер, също се нарича прозорец.

Идеята

На всеки пиксел от нашето изображение трябва да присвоим нова стойност, която по някакъв начин е свързана със старата стойност на пиксела, но също така може и да е свързана със старата стойност на съседните пиксели. Имате изображение с големина $N \times M$ - т.е $N$ реда и $M$ стълба и решавате да приложите прозорец с големина $m$, т.е всяка клетка да зависи от съседни $m$ във всяко измерение (т.е самия прозорец има размер $2m + 1 \times 2m + 1$). Формулата за новите пиксели $I'(x, y)$, използвайки старите $I(x, y) \quad x = \overline{1, N} \quad y = \overline{1, M}$ и естествено прозореца $W(i, j) \quad i, j = \overline{0, 2m}$ е следната:

(1)
\begin{align} I'(x, y) = \sum_{i=0}^{2m} \sum_{j=0}^{2m} I(x+i-m, y+j-m) * W(i, j) \end{align}

Т.е за всеки пиксел $x, y$ се слага прозореца с размери $2m+1 \times 2m + 1$, така че центъра му да съвпада със самия пиксел, умножават се коефициентите записани в прозореца със старата стойност на пикселите и сумата им се записва като нова стойност на пиксела.

Забележки:

  • ако прозореца излезе извън изображението (например при $m \ge 1$ и някой граничен пиксел) може да считаме, че извън изображението $I(x, y) == 0$
  • ако новите стойности на пикселите се получат извън границите $[0, L]$, където $L$ е максималния brightness на един пиксел, то може да скалираме новите пиксели, така че да влезнат в границите (т.е взимаме новия минимум и максимум, умножаваме и прибавяме подходящи константи към всеки пиксел, така че новополучените числа да бъдат точно в искания интервал).

За филтрите, които ще разгледаме сега показваме само прозореца. Той еднозначно определя самия филтър, т.е какво трябва да направим с пикселите (какви сметки) за да получим новите пиксели.

Конволюция

Нанасянето на даден филтър (квадратна матрица) върху изображение се нарича конволюция.

Видове

Филтър на Sobel

Unsupported math environment "tabular"

Чрез такива филтри получавате 'отделяне' на хомогенни области. Отделянето става хоризонтално/вертикално/диагонално (2та)
Може и вместо $2$ да използвате $1$.

Филтри на Лаплас

Unsupported math environment "tabular"

Идеята е взета от диференцирането на функция на 2 аргумента. Използва се, за да отдели рядко срещани елементи. Т.е. ако клетката, в която се приложи този филтър, е много различна от останалите, тя ще се умножи по голям коефицент и ще стане още по-различна. Докато ако всички клетки са еднакви, няма да има видима промяна, защото съседните елементи ще компенсират с точно толкова отрицателно тегло, колкото централният - с положително. Използва се за акцентиране върху контурите на изображението. Виж картинките със и без приложен филтър на Лаплас:
taj_orig.jpg edge-taj-laplace.jpg

Филтри за размазване (blur)

(4)
\begin{align} \frac{1}{9}\begin{tabular}{|c|c|c|}\hline 1 & 1 & 1 \\ \hline 1 & 1 & 1 \\ \hline 1 & 1 & 1 \\ \hline \end{tabular}\quad\begin{tabular}{|c|c|c|}\hline 0.07 & 0.12 & 0.07 \\ \hline 0.12 & 0.24 & 0.12 \\ \hline 0.07 & 0.12 & 0.07 \\ \hline \end{tabular} \end{align}

Първият филтър прави средната стойност на 9те клетки (като по този начин се хомогенизира образа, ако някой пиксел свети много по-различно от останалите това ще бъде притъпено).
При втория филтър (Gaussian blur) се използва Гаусовата функция, която дава нормално разпределение (това са функциите в 1 и 2D)

(5)
\begin{align} g(x) = \frac{1}{\sqrt{2\pi}\sigma} e^{-\frac{x^2}{2\sigma^2}} \quad g(x, y) = \frac{1}{2\pi\sigma^2} e^{-\frac{x^2+y^2}{2\sigma^2}} \end{align}

Медианен филтър

Просто правите медианата на 9те съседни клетки.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License