আমি একটি নির্দিষ্ট স্কেল (আমার ল্যাম্বদা এবং সিগমার মান অনুসারে ) গ্যাবার ফিল্টার প্রয়োগ করার চেষ্টা করেছি, সুতরাং এটি ( 7x7 ) এবং 4 টি অভিমুখের জন্য (0, , এবং ) একটি ইনপুট ধূসর স্কেল চিত্রে।
আমার কোডে, তিনটি পদক্ষেপ অর্জন করা হয়েছে:
একটি গ্যাবার ফিল্টার তৈরি করুন
একটি আরজিবি চিত্র পড়ুন, তারপরে এটিকে ধূসর স্কেলে রূপান্তর করুন এবং ফাইনালে ডাবল করুন।
ইনপুট ইমেজটিতে তৈরি গ্যাবারটি প্রয়োগ করুন ( এখানে, আমার কোডটি সত্য কিনা আমি নিশ্চিত নই, এজন্য আমার আপনার মতামত প্রয়োজন )
1) -------------- গ্যাবার ফিল্টার তৈরি করুন (আকার = 7x7 এবং 4 অভিমুখ)
%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) ------------ ইনপুট চিত্রটি পড়ুন
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) ----- উপরের তৈরি গাবরটিকে ইনপুট চিত্রটিতে প্রয়োগ করুন (মনে রাখবেন যে এই পদক্ষেপের কোডটি 100% সত্য কিনা তা আমি নিশ্চিত নই, এজন্য আপনার যদি সঠিক উত্তর থাকে তবে আমার আপনার মতামত এবং আপনার সহায়তা প্রয়োজন। )
figure(3);
filtered = conv2(image_double,gb);
imagesc(filtered);
colormap(gray);
title('theta=....');