|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
7 ?, A0 ~0 t0 C$ q
频域滤波可以用来消除周期噪声。
. A/ O1 I9 |3 P v( B
) D# W2 m: u2 X3 f( O9 B" F/ n( I 傅里叶变换
4 a1 l- @ e3 f3 [) e7 T' V" J
o# |. J5 N W' R# t8 S1 Q% | 图像较平滑,低频部分对应的幅值较大,图像灰度变化越剧烈,其频谱高频分量较强
: [3 z7 H [7 D! I% b, X( R8 Y1 N% u5 _- d! p) }
- I1 = imread('cell.tif'); %读入原图像 fcoef = fft2(double(I1)); %做fft变换 spectrum = fftshift(fcoef); %将零点移到中心 temp =log(1+abs(spectrum)); %对幅值做对数变换以压缩动态范围 subplot(1,2,1); imshow(temp,[]); title('FFT'); subplot(1,2,2); imshow(I1); title('Source')
4 D" T5 h f& y. Q2 t
& d# Y0 @7 j0 u: q
$ n" B+ T8 K( X4 o8 Y 幅度谱反映图像整体上各个频率分量的相对强度。相位谱对应图像内容。; R; z+ Q: J$ `) F0 R3 ?
0 E# O0 p1 O# S- f
- % 读取图片 A = imread('../beauty.jpg'); B = imread('../cat.jpg'); % 求傅立叶变换 Af = fft2(double(A)); Bf = fft2(double(B)); % 分别求幅度谱和相位谱 AfA = abs(Af); AfB = angle(Af); BfA = abs(Bf); BfB = angle(Bf); % 交换相位谱并重建复数矩阵 AfR = AfA .* cos(BfB) + AfA .* sin(BfB) .* i; BfR = BfA .* cos(AfB) + BfA .* sin(AfB) .* i; % 傅立叶反变换 AR = abs(ifft2(AfR)); BR = abs(ifft2(BfR)); % 显示图像 subplot(2,2,1); imshow(A); title('美女原图像'); subplot(2,2,2); imshow(B); title('猫的原图像'); subplot(2,2,3); imshow(AR, []); title('美女的幅度谱和猫的相位谱组合'); subplot(2,2,4); imshow(BR, []); title('猫的幅度谱和美女的相位谱组合');
: A; T! t5 v' S# q
% n* h+ P# A' w) [7 j6 ]
0 N$ G( F$ Q$ V- S' Q/ X% A2 [4 o8 }( l
# a0 F. P G1 y* ?4 ?+ \& _3 D理想低通滤波6 ^' U0 X) N9 c+ T
+ F: J# h+ B; Q, R$ `- function out = imidealflpf(I, freq) % imidealflpf函数 构造理想的频域低通滤波器 % I参数 输入的灰度图像 % freq参数 低通滤波器的截止频率 % 返回值:out – 指定的理想低通滤波器 [M,N] = size(I); out = ones(M,N); for i=1:M for j=1:N if (sqrt(((i-M/2)^2+(j-N/2)^2))>freq) out(i,j)=0; end end end5 p1 A5 q7 C# A' F3 j. t
( N! e7 C- O3 h. a) P1 T/ `
% t1 q, ], d4 t4 c7 K1 D: C- I = imread('../baby_noise.bmp'); %读入原图像 % 生成滤镜 ff = imidealflpf(I, 20); % 应用滤镜 out = imfreqfilt(I, ff); figure (1); subplot(2,2,1); imshow(I); title('Source'); % 计算FFT并显示 temp = fft2(double(I)); temp = fftshift(temp); temp = log(1 + abs(temp)); figure (2); subplot(2,2,1); imshow(temp, []); title('Source'); figure (1); subplot(2,2,2); imshow(out); title('Ideal LPF, freq=20'); % 计算FFT并显示 temp = fft2(out); temp = fftshift(temp); temp = log(1 + abs(temp)); figure (2); subplot(2,2,2); imshow(temp, []); title(' Ideal LPF, freq=20'); % 生成滤镜 ff = imidealflpf(I, 40); % 应用滤镜 out = imfreqfilt(I, ff); figure (1); subplot(2,2,3); imshow(out); title('Ideal LPF, freq=40'); % 计算FFT并显示 temp = fft2(out); temp = fftshift(temp); temp = log(1 + abs(temp)); figure (2); subplot(2,2,3); imshow(temp, []); title(' Ideal LPF, freq=40'); % 生成滤镜 ff = imidealflpf(I, 60); % 应用滤镜 out = imfreqfilt(I, ff); figure (1); subplot(2,2,4); imshow(out); title('Ideal LPF, freq=60'); % 计算FFT并显示 temp = fft2(out); temp = fftshift(temp); temp = log(1 + abs(temp)); figure (2); subplot(2,2,4); imshow(temp, []); title(' Ideal LPF, freq=60');) f9 \# l( ?6 t ]2 T) z( _: t
3 Z: n3 d. O" `# e" z8 m& g
& k* R6 H& P: b$ `: F9 f3 b
6 h% G& @ v3 L J高斯低通滤波器4 f" U3 X9 ]: a A6 `
" ?/ L ]; v( a3 N% ~1 l o
- function out = imgaussflpf(I, sigma) % imgaussflpf函数 构造频域高斯低通滤波器 % I参数 输入的灰度图像 % sigma参数 高斯函数的Sigma参数 [M,N] = size(I); out = ones(M,N); for i=1:M for j=1:N out(i,j) = exp(-((i-M/2)^2+(j-N/2)^2)/2/sigma^2); end end5 O3 u; Q' g( j% |$ n. X4 X$ \& V
: z* `9 A J, b; z+ ?- Q* G& `# _# ]
) _: N* R4 Y2 c! O. V, S# _4 j( V高斯高通滤波器& O& _9 l" P, e3 b/ w5 B$ q5 C0 q
! d- }' I0 V% m* W# B! `7 L# r- function out = imgaussfhpf(I, sigma) % imgaussfhpf函数 构造频域高斯高通滤波器 % I参数 输入的灰度图像 % sigma参数 高斯函数的Sigma参数 [M,N] = size(I); out = ones(M,N); for i=1:M for j=1:N out(i,j) = 1 - exp(-((i-M/2)^2+(j-N/2)^2)/2/sigma^2); end end, c0 I* A; { R+ m1 R
2 @% T9 F% ?. q" X+ g
: ?* W8 W u8 r: i# [. Z
3 G3 Y f9 [+ f" U
高斯带阻滤波器、
4 B0 C$ v: Z) z6 k
7 h% E( C0 y# y2 v: q# r2 H7 F- function out = imgaussfbRF(I, freq, width) % imidealflpf函数 构造频域高斯带阻滤波器 % I参数 输入的灰度图像 % freq参数 阻带中心频率 % width参数 阻带宽度 [M,N] = size(I); out = ones(M,N); for i=1:M for j=1:N out(i,j) = 1-exp(-0.5*((((i-M/2)^2+(j-N/2)^2)-freq^2)/(sqrt(i.^2+j.^2)*width))^2); end end
8 e9 \8 W+ r( M+ W6 y( b2 a; j
( D; S' v/ A4 m5 d6 W) X8 ?5 \1 E$ m1 H6 J/ w7 [
2 @0 G9 s6 v* N8 X) d |
|