|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
/ K' ]$ T6 }( |6 c频域滤波可以用来消除周期噪声。8 U% ?2 p- o4 \% d
# G: f* o! @% z2 \, N 傅里叶变换
* n7 g1 _, R& i. [( k
+ n1 r% M1 T9 N# i; z 图像较平滑,低频部分对应的幅值较大,图像灰度变化越剧烈,其频谱高频分量较强
% [( z! e2 B- t
0 p7 k0 E) D( Q- z- 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')
( L9 {" A$ g$ d# H+ k9 I/ |5 _ + A7 O1 O" i9 v- O2 J+ Z' v. f7 x
7 }+ Z0 B8 G7 y 幅度谱反映图像整体上各个频率分量的相对强度。相位谱对应图像内容。
: { Q( v o5 q- o9 _* ~' N& ?" |! ?+ G% o, E. ^
- % 读取图片 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('猫的幅度谱和美女的相位谱组合');
: R# U4 l; |/ {$ J/ f1 }+ `; j9 c
0 t x5 C) ?& }: Z! o9 S
3 _* v5 `5 g3 ^- j/ w$ c5 b
8 J! G1 V( g7 a, M; [% ~' @- N3 c! @$ c9 ^# i
理想低通滤波' i5 L) e% O& h2 H( l3 s
: _ [* c5 H( y+ n+ k* V3 m- 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
, B* p4 e3 d+ t- l q3 o ) Q$ z" _" x4 P. d) X- r8 ]# A
2 ?1 q* K+ H" ~% L- 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');5 p* e* g% O' b$ `9 G3 L1 E$ P
+ w+ N2 f$ B, E
0 t3 t7 Z5 q& d; f0 g( v
" m& v1 ~' f$ _1 R$ D" ]9 h高斯低通滤波器8 r1 |3 v* I' B) J; t. r2 }
' T. t/ ^/ G! U8 `5 T$ 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 end7 V' p* F8 n& C$ v. c, p1 J/ N
% m: n9 x6 X, h; S8 _ ?% U7 Q! b4 ~# L/ B9 Y0 @
高斯高通滤波器
9 A4 W! c& ^4 @1 q
! k4 d4 d M" S$ O- 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: S& b3 g% g' h0 q8 h+ H
. _* G: r1 E8 K: |, k# y
) i) j7 y$ \1 [8 D; Q _1 }
6 ?6 c8 o+ m2 ^: w2 H高斯带阻滤波器、9 [" y7 B8 }% J: ^) m
: k) e5 U6 U+ |0 b. I6 |. ]- 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
, e: D Q! Y: ]; T - X; o }! e9 p4 ~7 ?
$ F/ Q; z2 \, m* p p' r
2 v( m7 w* ]/ ~9 \ |
|