Здравствуйте.
Скажу сразу, что образования у меня нет ни математического, ни информационного, и многих вещей не знаю, поэтому если что-то объяснять долго, то просто укажите на источники, где я смог бы разобраться в теме.
Итак, я пытаюсь реализовать фильтр Габора (just for fun). Нашёл советы построения алгоритма на
Википедии и вот что пока у меня есть:
1) Сам фильтр:
, где
Я так понял, что
x и
y, это координаты,
- это ориентация фильтра,
- это частотная модуляция фильтра (не очень понял что это), а вот что такое
и
я не понял совсем. Вроде это должен быть показатель растянутости фильтра по осям, но как его выбирать? Оба равными 1, если он квадратный или как-то ещё?
2) Там же предложен алгоритм применения фильтра к изображению:
Я реализовал его (
), но пока не тестировал (боюсь), однако думаю, что результат будет неутешительным. Если я прав, то данный алгоритм это простейшая реализация, где значения
и
не меняются для всего изображения. Чуть далее:
Цитата:
Из формулы Габора видно, что фильтр зависит от частоты и направления квазипериодической структуры изображения. Поэтому перед применением фильтра, необходимо построить частотное и ориентационное поля для текущего изображения. Обычно, для упрощения задачи рассчитывается средняя частота изображения, которая считается неизменной в каждой точке.
Для построения поля направлений может применяться несколько способов, наиболее быстрым из которых, является дифференциальный метод, позволяющий построить четырехградационное поле направлений.
Таким образом, имея частоту и 4 направления, предварительно строятся 4 фильтра Габора по одному на каждое направление. После чего в каждой точке изображения происходит свертка фильтра с изображением по определенной области, что дает выходное значение нового изображения.
Не подскажите как их [поля] построить? Поле ведь будет строиться по каким-то областям (скажем, 8x8 пикселей), потом вычисляется фильтр размером с область (8x8) и
и
взятыми из точки поля для этой области, а потом уже кусок (те же 8x8) нового изображение по формуле (2), верно?