|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
/ C5 G# M7 u- T
频域滤波可以用来消除周期噪声。3 T1 M5 O2 ~% ^) N& V: A3 P1 E8 h
3 q2 w5 q, K |, _8 Q0 Y. |! L' p
傅里叶变换
( q. y0 d) V; T2 t
& L/ W" C5 q- b; s, j 图像较平滑,低频部分对应的幅值较大,图像灰度变化越剧烈,其频谱高频分量较强
; v8 [7 Y8 H7 q, H u$ I. T! J8 \* D: c& d0 w, m9 g) G0 @# M
- 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')! ^9 s; w6 Z* g6 [" ^2 Y
9 |8 A% O; f8 ^$ A; V
5 a- q, H2 W; x: U: \, @ 幅度谱反映图像整体上各个频率分量的相对强度。相位谱对应图像内容。; d+ T- A$ g1 [1 S2 v5 i
( B0 S1 M A- u& V |
- % 读取图片 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('猫的幅度谱和美女的相位谱组合');8 `& {1 ?( F' ?0 x
! p! w/ B. b% O* m
0 e5 C* g+ E( ? G
9 g1 R9 |" ^# ^& }1 `+ h
# ?5 }& x8 n @1 f+ M6 n; G理想低通滤波+ n/ b$ S" a: I- D3 `2 ?, i: B
3 |6 v3 f/ b7 M2 K. ^" x
- 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
% k# Q! W; z( v: s& W 8 z, A3 |) ^3 W6 y' ^
2 L! C: U; T8 S t1 U% s
- 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');: e1 B: {$ b5 x& j3 p; G+ u
) M- E+ I; m# ^2 y* q3 Q
- F C' ?" K+ h
S* W* j- G/ Z: l4 Z8 o( P
高斯低通滤波器5 o& P1 J. @' y
) A. ~, C/ `3 p) ~- 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; B5 u5 f: e! }4 f& F \
8 m, r8 K j( c+ }8 x6 o$ j$ V$ k$ q. v. z+ z
高斯高通滤波器
- Z) q$ \0 ^; z8 G( @' z+ j1 l; T5 F. c% _4 g' S0 R( ?5 V2 w; M
- 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' I) ?/ m2 ~& U( E' z7 A
& ~. l D- A+ W4 d: H5 M
- A8 o7 J8 ^% H
! i6 J% ?4 l8 u# g; ?* w: v* T高斯带阻滤波器、3 u( a0 ` I, @4 E& D% z' S
% H" Q( _' g9 m& o
- 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 end4 r: v1 j9 ]8 L0 t, E6 h; l7 ?
1 \, S/ X& S) P# K/ H7 y* K, E% k, g5 p; U! n
% J A2 n# a r% L( Y, ~
|
|