|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
5 c) W& D9 {6 p8 |
频域滤波可以用来消除周期噪声。8 P4 N8 h" ]4 x L: M
7 P9 _" Z, V& w# M. H/ [
傅里叶变换
+ d+ P U7 J7 ~( N% Q
1 p$ e5 e- e" o$ R! ~+ w: |( [% { 图像较平滑,低频部分对应的幅值较大,图像灰度变化越剧烈,其频谱高频分量较强
- w3 R$ f; l/ p7 V& y& f8 z- \3 Q% A1 [
- 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')
8 u2 x% \1 p- A) W% C; k . ]7 F/ c, c: P- U6 M
& F$ n# n/ ^, I# F C 幅度谱反映图像整体上各个频率分量的相对强度。相位谱对应图像内容。
9 Z9 x# O- z2 Q+ O( K& n
7 v1 _: r# S: Y9 A5 N2 e4 B- % 读取图片 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('猫的幅度谱和美女的相位谱组合');% f4 B4 S; T7 t/ k5 P; U
3 ?1 @! g: t: r. O; T
" O4 C! I, g. @7 }' }4 J5 L h) ^# Y( b
6 o2 l3 E1 K6 x! {
理想低通滤波
# i. h% K/ P0 n$ |' J: k% K% j2 c0 U
- 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 end* y1 Z6 ~) W% m. O
8 R7 J+ }4 r T8 \
# G9 |+ c, `, Q _2 k) I
- 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');3 ~( b; }: k. f" c& R# [
$ E" j" \3 r" n, [ r
$ O. U4 B- g" e) A K
: S% F) F6 [5 {3 R高斯低通滤波器/ ?8 k( S* a& D. B9 }4 w/ q" x( T
/ p) n( r/ `, Z8 N8 Q, E" k& S
- 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 end- n. n6 T% I ]: E# F
$ A+ {' h$ M6 ~. x0 O- x2 f% j0 v
5 E+ J1 C. |" G2 t2 Q0 t- w
高斯高通滤波器/ T+ p0 x# o' S
3 g0 e/ k4 r$ @. W0 S. h/ 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
4 \; ]1 ]0 _' u' x1 ` # N0 d' m* v! R" Q! n
0 B6 |" i2 U t) S5 Y0 W3 }
6 m2 m3 B: ?9 i' t* p$ y! Y% ]6 @高斯带阻滤波器、
* t7 t% C' v D% M. G; e* P& Q8 Z& E7 U8 y& S
- 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
\+ L, m) ?/ B/ l" D" C/ b0 u+ l ' d& N7 S3 q$ C9 h% g* Y1 z5 \
, b3 M, K) p$ Y) M# I
' _ L$ i2 P# E$ g |
|