How can I reduce periodic noises from my image? Please help
30 views (last 30 days)
Show older comments
I've tried to reduce the periodic noises with frequency domain filtering.However, the result of the filter is not that good.Actually, even when I get fftshift of the image, I cannot see clearly noises (maybe there are four point that seems like noises, so I chose them in the code below).Please help me about this filtering.I don't have so much time.I am new at image processing btw.I thought that I can use Notch filter but I couldn't find any special function for it unlike median or average filters.
(The image is attached)
I = imread('woman-1_3.bmp');
I2=fft2(I);
imshow(log(1+abs(fftshift(I2))),[]);
m=ones(200,200);
m(84:1:92,85:1:93)=0;
m(109:1:117,85:1:93)=0;
m(84:1:92,109:1:117)=0;
m(109:1:117,109:1:117)=0;
imshow(m);
imshow(log(1+abs( fftshift(I2).*m)),[]);
imshow(log(1+abs(ifft2( fftshift(I2).*m))),[]);
0 Comments
Accepted Answer
Akira Agata
on 19 Feb 2020
Looking at your image, periodic noise pattern appears around every 20~30 pixel. So I think the first step is to use FFT or DCT and suppress these frequency components.
The following is my initial try:
% Read the image
I = imread('woman-1_3.bmp');
% Apply DCT
Iw = dct2(I);
% Reduce peaky high-frequency components
idx = abs(Iw) > 50;
idx(1:19,:) = false;
idx(:,1:19) = false;
Iw(idx) = Iw(idx)/100;
% Convert to image
I2 = idct2(Iw);
I2 = mat2gray(I2);
% Show the result
figure
imshowpair(I,I2,'montage')
title('Before / After','FontSize',14)
2 Comments
More Answers (0)
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!