頻率域濾波去除週期性噪聲

癮. .發表於2020-12-26

傅立葉變換後的頻率域去噪

%快速傅立葉變換函式及逆變換函式測試程式
tic
filename='periodic_noise.dat';
Re=IMG_Read(filename);
img=cell2mat(Re(5));%獲取影像矩陣引數
t1=myfft(img);%一維橫向變換
f=myfft(t1.');%縱向變換
[m,n]=size(f);
[M,N]=size(img);
f=myfftshift(f);      %使影像對稱,中心化
r=real(f);          %影像頻域實部
i=imag(f);          %影像頻域虛部
Margin=log(sqrt(r.^2+i.^2));      %影像幅度譜,加log便於顯示
phase=real(angle(f)*180/pi);     %影像相位譜
figure(1)
subplot(1,3,1),imshow(linear1(img)),title('源影像');%拉伸顯示
subplot(1,3,2),imshow(Margin,[]),title('影像幅度譜');
subplot(1,3,3),imshow(phase,[]),title('影像相位譜');
T=5/6*max(max(Margin));%要根據實際情況進行修改
R=10;
coor=[];
for i=1:m-2
    for j=1:n-2
        if(Margin(i+1,j+1)>T&&sqrt((m/2-i)^2+(j-n/2)^2)>R&&Margin(i+1,j+1)>Margin(i+1,j)&&Margin(i+1,j+1)>Margin(i+1,j+2)&&Margin(i+1,j+1)>Margin(i,j+1)&&Margin(i+1,j+1)>Margin(i+2,j+1))
            coor=[coor;i+1,j+1];
        end
    end
end
d0=findd0(coor,Margin);
H=createH(d0,coor,Margin);
F=f.*H;
%逆變換
g=myifft(F);
k=myifft(g.');
k=k(1:M,1:N);
figure(2)
imshow(linear2(k)),%拉伸顯示原影像
title('逆變換結果')
toc
function H=createH(d0,coor,image)%建立H矩陣,coor指給定的噪聲點中心座標,image指頻譜影像
count=size(coor,1);
[m,n]=size(image);
d=zeros(m,n,count/2);
H=ones(m,n);
D0=zeros(count/2,1);
for i=1:m
    for j=1:n
        for k=1:count/2
        d(i,j,k)=sqrt((i-coor(k,1))^2+(j-coor(k,2))^2)*sqrt((i-coor(count-k+1,1))^2+(j-coor(count-k+1,2))^2);
        D0(k,1)=d0(k,1)^2;
        end
        for k=1:count/2
            if(d(i,j,k)==0)
            H(i,j)=0;
            else
            H(i,j)=H(i,j)/(1+(D0(k,1)/d(i,j,k))^2);
            end
        end
    end
end
end
function d = findd0(coor,image)%根據給出的座標大概確定截止半徑,coor指給定的噪聲點中心座標
[M,N]=size(image);
k=size(coor,1);
dis=[];
for i=1:k%迴圈座標個數
    x=coor(i,1);%獲取x座標
    y=coor(i,2);%獲取y座標
    while(image(x,y+1)<image(x,y))%找出距最近的極小點
        y=y+1;
    end
    dis=[dis;M/2+1-coor(i,1)];%算出距離儲存
end
d=dis;
end

執行截圖:
原影像
在這裡插入圖片描述
幅度譜圖:
在這裡插入圖片描述
相位譜圖:
在這裡插入圖片描述
去噪後影像:
在這裡插入圖片描述

總結:
1頻率域變換問題關鍵在於如何準確找到噪聲點的位置。這裡可以用類似矩陣掃描的方法找出某個點,其滿足大於其上下左右各點的值(找到極大值點),同時滿足大於某個閾值,我給定的是大於影像均值(中心點亮度)的4/5左右,即可確定準確的座標位置。進而用巴特沃斯濾波進行處理。
2.確定合適的截止半徑很重要。即函式function d = findd0(coor,image)。大概是噪聲中心到頻譜圖中心的距離。

參考文獻:
論文:影像線狀和網格狀噪聲的去除方法
陶勝
(集美大學理學院,福建廈門361021)
中圖分類號:TP391.4 文獻標識碼:A 文章編號:2095—7726(2018)03—0032—05

相關文章