Matlab 频域滤波处理周期噪声图像(带阻滤波器滤波)
生活随笔
收集整理的這篇文章主要介紹了
Matlab 频域滤波处理周期噪声图像(带阻滤波器滤波)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
帶阻濾波器的傳遞函數為:
D0為截止半徑(或是截止寬度)
D1、D2由下式確定,表示與(u0,v0)和(-u0,v0)點的距離,此時(u0,v0)是在頻域中心為坐標原點表示的,所以是對稱關系。
使用二階巴斯沃特帶阻濾波器對周期噪聲圖像濾波:
噪聲圖像如下:
首先觀察其頻譜,了解周期噪聲分布:
噪聲分布在頻域圖像的豎直方向,在水平方向上沒有。畫頻域圖像中心豎直方向的頻譜,得到噪聲起始兩點的位置,分別距離圖像上邊137和201,即u0=137,u1=201,v0=v,v1=v 。
由此構造如下帶阻濾波器
濾波器和頻域圖像相乘得到以下圖像
最終得到的圖像
具體Matlab代碼如下(以圖像左上方為坐標原點):
clc;
clear;
close all;img=imread('5.png');
img=rgb2gray(img);
subplot(331),imshow(img),title('原圖');
F=fftshift(fft2(img));
subplot(332),imshow(log(abs(F)+1),[]),title('頻域圖像');
[M,N]=size(F);
subplot(333),plot(abs(F(:,round(N/2)))),title('中心豎直線上頻譜');
u=0:M-1;v=0:N-1;
[V,U]=meshgrid(v,u);
D0=14;
n=2;
u0=137;u1=201;
D1=abs(U-u0);
D2=abs(U-u1);
H=1./(1+(D0^2./(D1.*D2)).^n);
subplot(334),imshow(abs(H),[]),title('濾波器圖像表示');
subplot(335),mesh(H),title('濾波器透視圖');
G=F.*H;
subplot(336),imshow(log(abs(G)+1),[]),title('濾波后的頻域圖像');
g=real(ifft2(ifftshift(G)));
subplot(337),imshow(g,[]),title('濾波圖像');
總結
以上是生活随笔為你收集整理的Matlab 频域滤波处理周期噪声图像(带阻滤波器滤波)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux gcc 制作动/静态链接库
- 下一篇: Linux 进程及进程之间的通信机制——