|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
* ?) C% g/ _; u' _( C ]! m- h
频域滤波可以用来消除周期噪声。
6 q- T! q) h0 f8 O- D7 D! ?( s: h1 l* q9 F, H: K, Z. U
傅里叶变换- X4 P' h+ c3 D' F% M
/ x: T- s- ~* m 图像较平滑,低频部分对应的幅值较大,图像灰度变化越剧烈,其频谱高频分量较强6 i& O9 C8 S8 S
+ l% @# q; a3 w& R8 M4 W6 V- 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')
7 ~ {" v' R& L # V, D( G" x5 m. M
. r# O1 G4 J! Z
幅度谱反映图像整体上各个频率分量的相对强度。相位谱对应图像内容。
% Y/ H) U8 _( O5 z$ T* t2 q3 m: D/ U* a: z
- % 读取图片 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('猫的幅度谱和美女的相位谱组合');, S* d5 G0 a3 o- X
7 z. ~, R" ~( r+ P/ z t
+ I) `( {7 h/ ~! z! M2 S, a
; h! d6 ?* ^; n
6 U& g( r5 N) V! _
理想低通滤波- r6 j6 F; g* r" s \1 {
+ H" t5 {& A8 [; ^+ c# e' s
- 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
! Y5 p4 q ~3 e" k9 u' w4 c. L & h4 T" {2 u, O( u6 o% q$ c
9 V/ O- }* X0 Q- 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');
H9 j# ]5 J+ ^& I' W" U& x. f
4 L: X! p, \" }- K$ Y0 k
* ~6 A; q% \, l1 ~0 c& p. b/ L! O+ p4 ~; t
高斯低通滤波器5 l' _' q/ U0 [
: n# s* n$ E9 l4 v8 X9 [, @
- 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
1 w& w/ f9 k/ w7 H6 J 0 b4 c0 b$ R! X4 L6 v
5 h) j6 q1 s- B/ r, y高斯高通滤波器
I5 B9 Z7 u9 V" C
/ w3 d4 }+ N0 W4 d1 Y. f8 ~$ E- 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 end7 W4 M# y( g! p8 i. k
) X1 |, [& |0 ?! {
: a# @1 w) W: E2 f; K9 g/ k& d u a0 I) k0 R. j$ s/ X
高斯带阻滤波器、4 [5 L1 t# f$ R" i
* e' C2 ]* F ?2 C4 w- 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
# K; H; [% G4 T6 `. n9 j: L- Y
6 e- w- C T& Z2 t- [1 l1 n5 ^7 b7 m1 g9 R
0 R& b; w8 S7 t" v3 B2 a |
|