Русская Википедия:Фильтр Габора

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Линейные электронные фильтры

Файл:Gabor filter.png
Пример двумерного фильтра Габора

Фильтр Габора — линейный электронный фильтр, импульсная переходная характеристика которого определяется в виде гармонической функции, помноженной на гауссиан. При цифровой обработке изображений этот фильтр применяется для распознавания границ объектов.

Из-за свойства соответствия свёртки во временной области умножению в частотной области, преобразование Фурье импульсной передаточной характеристики фильтра Габора является свёрткой преобразований Фурье гармонической функции и гауссиана.

<math>g(x,y;\lambda,\theta,\psi,\sigma,\gamma)=\exp\left(-\frac{x'^2+\gamma^2y'^2}{2\sigma^2}\right)\cos(2\pi\frac{x'}{\lambda}+\psi)</math>

где <math>x' = x \cos\theta + y \sin\theta\,,</math> <math>y' = -x \sin\theta + y \cos\theta\,.</math>

В этом уравнении <math>\lambda</math> представляет собой длину волны множителя-косинуса, <math>\theta</math> определяет ориентацию нормали параллельных полос функции Габора в градусах, <math>\psi</math> — сдвиг фаз в градусах и <math>\gamma</math> — коэффициент сжатия, характеризующий эллиптичность функции Габора.

Фильтры Габора напрямую связаны с вейвлетами Габора, так как они могут быть сконструированы путём ряда сжатий и вращений. Пространство Габора (свёртка фильтра с сигналом) часто применяется в различных приложениях обработки изображений, в частности, для распознавания радужной оболочки в биометрических системах безопасности и в автоматизированных система контроля доступа на основании распознавания отпечатков пальцев.

Алгоритм построения одномерного фильтра Габора

Для построения одномерного фильтра Габора применяется формула:
<math>G(x)=\exp\left ( -\frac{x^2}{2\sigma^2} \right )\cos(2\pi\theta x)</math>,

где:
  • <math>\sigma</math> — стандартное отклонение Гаусового ядра, определяющее амплитуду функции;
  • <math>\theta</math> — частота колебаний, определяемая как <math>\theta=\frac{1}{T}</math>, где:
  • <math>T</math> — период функции <math>\cos(2\pi\theta x)</math>.

Чем больше <math>\sigma</math>, тем более пологий вид примет функция. Чем меньше <math>\sigma</math>, тем более острый пик получится в результате построения графика функции.

Приведённая выше функция экспоненты обладает свойствами нормального распределения случайной величины. Согласно правилу трёх сигм, практически все значения экспоненты лежат в интервале <math>[ -3 \sigma; 3 \sigma ]</math>. Для анализа сигналов, значения функции рассчитываются в указанных пределах.

Обработка одномерного сигнала фильтром Габора

Каждая точка входного сигнала <math>F(x)</math> преобразуется в соответствующую точку выходного сигнала <math>F^'(x)</math>, путём усреднения значений входного сигнала <math>F(t)</math> по области <math>t\in[x-\frac{n}{2}, x+\frac{n}{2}]</math>, с учётом весовых коэффициентов <math>G(i)</math> формулы Габора.

<math>F^'(x) = \frac{1}{n}\sum_{i=1}^n F(x-\frac{n}{2}+i)\cdot G(i)</math>
где:
<math>F(x)</math> — входное значение сигнала в точке <math>x</math>,
<math>F^'(x)</math> — выходное значение сигнала в точке <math>x</math>,
<math>G(i)</math> — значение функции Габора, <math>i\in[0, n]</math>.

Алгоритм построения двумерного фильтра Габора

Файл:Gabor3d1.png
Двумерная функция Габора

Для построения двумерного фильтра Габора применяется формула:

<math>G(x, y)=\exp\left ( -\frac{1}{2}\left [\frac{x_\phi^2}{\sigma_x^2} +\frac{y_\phi^2}{\sigma_y^2} \right ] \right )\cos(2\pi\theta x_\phi)</math>
<math>x_\phi = x\cos(\phi) + y\sin(\phi)</math>
<math>y_\phi = -x\sin(\phi) + y\cos(\phi)</math>
где:
<math>\sigma_x, \sigma_y</math> — стандартные отклонения гауссова ядра, по осям <math>x</math> и <math>y</math>, определяющие растянутость фильтра по осям,
<math>\theta</math> — частотная модуляция фильтра,
<math>\phi</math> — пространственная направленность фильтра, определяющая его ориентацию относительно главных осей.

Обработка двумерного изображения фильтром Габора

Файл:Gray dactylography.png
Исходное дактилоскопическое изображение
Файл:Gabor dactylography.png
Дактилоскопическое изображение, обработанное фильтром Габора


Обработка изображения фильтром Габора достигается путём усреднения значений обрабатываемого изображения по некоторой области в каждой точке. Соответственно, наложение фильтра Габора на изображение имеет вид:
<math>I^'(x, y) = \frac{1}{n^2}\sum_{i=1}^n\sum_{j=1}^n I(x-\frac{n}{2}+i, y-\frac{n}{2}+j)\cdot G(i, j)</math>
где:
<math>I(x, y)</math> — интенсивность исходного изображения в точке <math>(x, y)</math>,
<math>I^'(x, y)</math> — интенсивность нового изображения в точке <math>(x, y)</math>,
<math>G(i, j)</math> — значение функции Габора, <math>i\in[0, n], j\in[0, n]</math>.
Если отбросить синусоидальную составляющую функции в фильтре Габора, он выродится в фильтр Гауссова размытия (Gaussian Blur). Поэтому очевидно, что эти два фильтра имеют практически одинаковый алгоритм применения, различающийся в некоторых деталях.
Из формулы Габора видно, что фильтр зависит от частоты и направления квазипериодической структуры изображения. Поэтому перед применением фильтра необходимо построить частотное и ориентационное поля для текущего изображения. Обычно для упрощения задачи рассчитывается средняя частота изображения, которая считается неизменной в каждой точке.
Для построения поля направлений может применяться несколько способов, наиболее быстрым из которых является дифференциальный метод, позволяющий построить четырёхградационное поле направлений.
Таким образом, имея частоту и 4 направления, предварительно строятся 4 фильтра Габора, по одному на каждое направление. После чего в каждой точке изображения происходит свертка фильтра с изображением по определённой области, что дает выходное значение нового изображения.
Фильтр Габора эффективен при обработке изображений со структурной избыточностью, имеющих квазипериодическую структуру. К ним относятся дактилоскопические изображения, изображения кристаллограмм и интерферрограмм. В живой природе подобный окрас нередко встречается у зебр, различных кошачьих (тигры, рыси, дымчатые коты), птиц (тетерева), рыб (лепоринус полосатый) и прочих представителей флоры и фауны.

Пример реализации

Вот пример реализации фильтра Габора для пакета Matlab:

function gb = gabor_fn(sigma_x, theta, lambda, psi, gamma)

sz_x = fix(6 * sigma_x);                    % исходя из значения сигмы получили размер ядра
sz_x = sz_x - mod(sz_x,2) + 1;              % если четное - делаем нечетным

sz_y = fix(6 * sigma_x / gamma);            % исходя из значения сигмы и коэф. сжатия получили второй размер ядра
sz_y = sz_y - mod(sz_y,2) + 1;              % если четное - делаем нечетным

[x y] = meshgrid(-fix(sz_x/2):fix(sz_x/2), fix(-sz_y/2):fix(sz_y/2));   % задали область определения

% Поворот
x_theta = x*cos(theta) + y*sin(theta);
y_theta = -x*sin(theta) + y*cos(theta);

gb = exp(-.5 * (x_theta.^2/sigma_x^2 + gamma^2*y_theta.^2/sigma_x^2))* cos(2 * pi* x_theta./lambda  + psi); % ядро

См. также

Литература