2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Реализация фильтра Габора
Сообщение07.09.2014, 09:34 
Здравствуйте.

Скажу сразу, что образования у меня нет ни математического, ни информационного, и многих вещей не знаю, поэтому если что-то объяснять долго, то просто укажите на источники, где я смог бы разобраться в теме.

Итак, я пытаюсь реализовать фильтр Габора (just for fun). Нашёл советы построения алгоритма на Википедии и вот что пока у меня есть:
1) Сам фильтр:
$\displaystyle G(x, y)=\exp(-\frac{1}{2}(\frac{x_\varphi^2}{\sigma_x^2}+\frac{y_\varphi^2}{\sigma_y^2}))\cos(2\pi\theta x_\varphi)$, где

$x_\varphi = x\cos(\varphi) + y\sin(\varphi)$
$y_\varphi = - x\sin(\varphi) + y\cos(\varphi)$

Я так понял, что x и y, это координаты, $\varphi$ - это ориентация фильтра,$\theta$ - это частотная модуляция фильтра (не очень понял что это), а вот что такое $\sigma_x$ и $\sigma_y$ я не понял совсем. Вроде это должен быть показатель растянутости фильтра по осям, но как его выбирать? Оба равными 1, если он квадратный или как-то ещё?

2) Там же предложен алгоритм применения фильтра к изображению:

$\displaystyle 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)G(i, j)$

Я реализовал его ($n = 8$), но пока не тестировал (боюсь), однако думаю, что результат будет неутешительным. Если я прав, то данный алгоритм это простейшая реализация, где значения $\varphi$ и $\theta$ не меняются для всего изображения. Чуть далее:
Цитата:
Из формулы Габора видно, что фильтр зависит от частоты и направления квазипериодической структуры изображения. Поэтому перед применением фильтра, необходимо построить частотное и ориентационное поля для текущего изображения. Обычно, для упрощения задачи рассчитывается средняя частота изображения, которая считается неизменной в каждой точке.
Для построения поля направлений может применяться несколько способов, наиболее быстрым из которых, является дифференциальный метод, позволяющий построить четырехградационное поле направлений.
Таким образом, имея частоту и 4 направления, предварительно строятся 4 фильтра Габора по одному на каждое направление. После чего в каждой точке изображения происходит свертка фильтра с изображением по определенной области, что дает выходное значение нового изображения.

Не подскажите как их [поля] построить? Поле ведь будет строиться по каким-то областям (скажем, 8x8 пикселей), потом вычисляется фильтр размером с область (8x8) и $\varphi$ и $\theta$ взятыми из точки поля для этой области, а потом уже кусок (те же 8x8) нового изображение по формуле (2), верно?

 
 
 
 Re: Реализация фильтра Габора
Сообщение07.09.2014, 22:48 
Аватара пользователя
1)
IBurmistrov в сообщении #904947 писал(а):
. Вроде это должен быть показатель растянутости фильтра по осям, но как его выбирать? Оба равными 1, если он квадратный или как-то ещё?

Размер сигмы подбирается в зависимости от n так что бы вклад от суммирования был существенным, заметным. Инженерное правило 3-х сигм.
$R=3*\sigma$
$N=2*R+1$
2) Думаю N можно побольше.
По поводу как строить. Вы же привели цитату, хотя лучше бы не приводили.
Цитата:
но строятся 4 фильтра Габора по одному на каждое направление.
Просто применяешь фильтр Габора по 4 направлениям. А вектор направления в точке определяешь используя принцип супер позиции векторов. Складываешь 4 значения в точки с учетом единичных векторов.

 
 
 [ Сообщений: 2 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group