convolution of two image in frequency domain?
Show older comments
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 errors. Its output should be like a hazy image of concentrating circle or may be overlapped, but it shows hazy straight line. Please help.
2 Comments
Linas Svilainis
on 13 Dec 2021
Are you sure this code has no erros? kernel1=fft2(kernel);
BUT
Imagef=kernel*grayImage1;
NOT kernel1?
Why * not .*?
Image Analyst
on 13 Dec 2021
@Linas Svilainis I think they meant to say "This code has errors." The problem is to multiply the spectrum of a kernel times a spectrum of a filter, you'd need to use .* (dot star) instead of *, and you'd need to make sure they both have the same size (number of pixels).
Accepted Answer
More Answers (0)
Categories
Find more on Image Filtering in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

