Tôi đã thử áp dụng bộ lọc Gabor với thang đo cụ thể (theo giá trị lambda và sigma của tôi, vì vậy nó là ( 7x7 ) và cho 4 định hướng (0, ,π và3π ) đến một hình ảnh tỷ lệ xám đầu vào.
Trong mã của tôi, ba bước đạt được:
Tạo bộ lọc Gabor
Đọc một hình ảnh RGB, sau đó chuyển đổi nó sang thang màu xám và cuối cùng thành gấp đôi.
Áp dụng gabor đã tạo cho hình ảnh đầu vào ( ở đây, tôi không chắc mã của tôi có đúng không, đó là lý do tại sao tôi cần ý kiến của bạn )
1) -------------- tạo bộ lọc Gabor (kích thước = 7x7 và 4 hướng)
%define the five parameters
theta=....; %either 0 or pi/4 or pi/2 or 3pi/4
lambda=3.5;
gamma=0.3;
sigma=2.8;
psi=0;
sigma_x = sigma;
sigma_y = sigma/gamma;
nstds = 5;
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);
figure(2);
imshow(gb);
title('theta=...');
%imagesc(gb);
%colormap(gray);
%title('theta=...');
2) ------------ Đọc hình ảnh đầu vào
I=imread('piano.jpg');
image_resize=imresize(I, [160,160]);
image_gray=rgb2gray(image_resize);
image_double=im2double(image_gray);
figure(1);
imshow(image_double);
3) ----- áp dụng gabor đã tạo ở trên cho hình ảnh đầu vào (nhớ lại rằng tôi không chắc mã trong bước này có đúng 100% không, đó là lý do tại sao tôi cần ý kiến của bạn và sự giúp đỡ của bạn nếu bạn có câu trả lời đúng. )
figure(3);
filtered = conv2(image_double,gb);
imagesc(filtered);
colormap(gray);
title('theta=....');