Создайте фильтр Габора, применив уравнение Габора с помощью matlab

Я пытался создать фильтр Габора. Все мы знаем, что этот вид фильтра более сложен, чем любые другие фильтры, потому что он характеризуется более сложными функциями, такими как наличие разных масштабов и ориентаций. Уравнение фильтра Габора имеет вид:

Чтобы создать такой фильтр Габора с определенным масштабом и направлением,википедия дает нам простой код Matlab об этом:

sigma_x = sigma;
sigma_y = sigma/gamma;

nstds = 3;
xmax = max(abs(nstds*sigma_x*cos(theta)),abs(nstds*sigma_y*sin(theta)));
xmax = ceil(max(1,xmax));
ymax = max(abs(nstds*sigma_x*sin(theta)),abs(nstds*sigma_y*cos(theta)));
ymax = ceil(max(1,ymax));
xmin = -xmax; ymin = -ymax;
[x,y] = meshgrid(xmin:xmax,ymin:ymax);


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+y_theta.^2/sigma_y^2)).*cos(2*pi/lambda*x_theta+psi);

Я хочу знать, правильный ли этот код. Я заметил, что приведенный выше код не совсем соответствовал уравнению фильтра Габора. Например: в коде мы имеем:sigma_x=sigma а такжеsigma_y=sigma/gamma ... и у нас естьgb=exp(-.5*(x_theta.....)), Я не поняла что такое5 в уравнении ..

Правильно ли написан код Matlab, написанный выше, для уравнения фильтра Габора? пожалуйста, мне нужно ваше мнение и, если возможно, оптимизировать код, если он не является правильным.

Любая помощь будет оценена.

Ответы на вопрос(3)

Ваш ответ на вопрос