How can I reduce periodic noises from my image? Please help

조회 수: 49 (최근 30일)
Ayberk Ay
Ayberk Ay 2020년 2월 18일
댓글: aseel malkawi 2022년 5월 26일
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))),[]);

채택된 답변

Akira Agata
Akira Agata 2020년 2월 19일
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
Ayberk Ay
Ayberk Ay 2020년 2월 19일
Thank you so much! I wouldn't know that periodic noise pattern appears around every 20~30 pixel.
aseel malkawi
aseel malkawi 2022년 5월 26일
if the noise appears more frequently, how do i adjust the parameters?

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by