MATLAB: Convolution of two image in frequency domain

fourier filteringimage processingImage Processing ToolboxMATLAB

x= 1:150;y=1:150;
[p,q]=freqspace(150);
[X,Y]=meshgrid(p,q);
R=(X.^2 + Y.^2);
Lambda=633*10^-9;
dis=10*10^-3;
F = (exp(i.*pi.*R))./(Lambda.*dis);
kernel = imag(F); % Gray scale image = imaginary part.
mesh(kernel);
axis square
imshow(kernel, []);
axis on;
colormap(gray(256));
rgbImage = imread('image.jpg');
imshow(rgbImage);
axis on;
% R=rgbImage(:,:,1);
% G=rgbImage(:,:,2);
% B=rgbImage(:,:,3);
grayImage = rgb2gray(rgbImage);
imshow(grayImage, []);
axis on;
grayImage1=fft2(double(grayImage));
kernel1=fft2(kernel);
Imagef=kernel*grayImage1;
Imagefinal=ifft2(Imagef);
imshow(Imagefinal, []);
axis on;
this code has no error.its output should be like hazy image of concentrating circle or may be overlapp.but it shows hazy straight line.please help

Best Answer

  • See my demos, attached. They're good examples that show you how it's done. Once you understand and run those I have no doubt you will be able to do the same thing with your image and kernel.