bài giảng môn xử lý tín hiệu nâng caokdientu.duytan.edu.vn/media/50212/xlthnc1.doc ·...
TRANSCRIPT
PHÉP BIẾN ĐỔI FOURIER
Phép biến đổi thực chất là phép thay đổi không gian biểu diễn tín hiệu từ không gian
ban đầu sang một không gian khác nhằm mục đích trích lọc các đặc tính của tín hiệu
và thuận tiện trong việc xử lý.
Trong chương này chúng ta sẽ nghiên cứu một công cụ toán học khác, đó là phép
biến đổi Fourier, để chuyển việc biểu diễn tín hiệu từ miền biến số độc lập n sang
miền tần số liên tục ω.
1.1. Biến đổi Fourier của tín hiệu rời rạc
1.1.1. Định nghĩa
Biến đổi Fourier của tín hiệu rời rạc được định nghĩa như sau:
Như vậy việc biểu diễn tín hiệu x(n) trên miền thời gian thành biểu diễn X(e jω) trên
miền tần số ω. Tức là trên trục ảo jω. X(ejω) sẽ là một hàm phức của biến số ω.
Trên quan điểm toán từ: ta có một toán từ FT tác động lên làm biến đổi tín hiệu:
x(n) X(ejω)
X
Miền không gian ban đầu
Y
Không gian đặc trưng
T
T-1
FT
Từ miền tần số tín hiệu cũng có thể biến đổi ngược lại thành việc biểu diễn trên
miền thời gian bằng phép biến đổi Fourier ngược:
Ta sử dụng ký hiệu IFT để biểu diễn biến đổi Fourier ngược:
1.1.2. Các phương pháp thể hiện của X(ejω)
Thể hiện dưới dạng phần thực và phần ảo:
Vì X(ejω) là một hàm biến số phức nên ta có thể biểu diễn X(e jω) trong miền tần số
dưới dạng phần thực và phần ảo:
Thể hiện dưới dạng modul và argument:
X(ejω) là một hàm biến số phức nên ta có thể biểu diễn dưới dạng modul và
argument:
Khi đó: được gọi là phổ biên độ của x(n)
Arg[X(ejω)]= gọi là phổ pha của x(n)
Ta cũng có quan hệ giữa phổ pha và phổ biên độ với thành phần thực và ảo của
X(ejω).
1.1.3. Tính chất quan trọng của X(ejω):
Tuần hoàn: Biến đổi Fourier của tín hiệu X(ejω) tuần hoàn với chu kỳ 2π.
Tính đối xứng:
Ví dụ thực hiện biến đổi Fourier của tín hiệu:
Biểu diễn trong Matlab, ta chỉ vẽ trong khoảng [-π, π], thực hiện chia đoạn trên
thành 500 điểm:
w=linspace(-pi,pi,500);X=ones(1,500)./(ones(1,500)-0.5*exp(-j*w));subplot(2,2,1);plot(w/pi,abs(X));title('Bien do');grid;subplot(2,2,2);plot(w/pi,real(X)); title('Phan thuc'); grid;subplot(2,2,3);plot(w/pi,imag(X)); title('Phan ao'); grid;subplot(2,2,4);plot(w/pi,angle(X)); title('Pha'); grid;
Kết quả:
Ví dụ thực hiện biến đổi Fourier của tín hiệu x(n)={1,2,3,4,5} với n=[-1:3]
Trong trường hợp x(n) hữu hạn, có thể sử dụng trực tiếp công thức định nghĩa để
tính. Xét tín hiệu x có N mẫu trong khoảng n1≤ n ≤ nN. Và cần tính giá trị X(ejω) tại
các điểm , với k=0,1,…,M
Như vậy công thức ban đầu sẽ được viết lại thành:
Khi đó X(ejω) là một ma trận 1x(M+1); x(n) là một ma trận 1xN;
Vậy theo công thức trên, ta có: X=x*W, thì W phải là một ma trận có kích thước
Nx(M+1); là ma trận được xây dựng từ nT*k
Vậy ma trận W sẽ được xác định bởi công thức:
Từ đây ta có thể biểu diễn trong Matlab như sau:
n=-1:3;x=1:5;k=0:500;w=(pi/500)*k;X=x*(exp(-j*pi*(n'*k)/500));subplot(2,2,1);plot(k/500,abs(X));title('Do lon');grid;subplot(2,2,2);plot(k/500,real(X)); title('Phan thuc'); grid;subplot(2,2,3);plot(k/500,imag(X)); title('Phan ao'); grid;subplot(2,2,4);plot(k/500,angle(X)); title('Pha'); grid;
Kết quả:
1.2. Các tính chất của biến đổi Fourier
1.2.1. Tuyến tính
Giả sử ta có hai tín hiệu x1(n) và x2(n) và biến đổi Fourier tương ứng là:
FT[x1(n)]=X1(ejω)
FT[x2(n)]=X2(ejω)
Khi đó 1 tín hiệu là tổ hợp tuyến tính của tín hiệu x1 và x2: x(n)=a*x1(n)+b*x2(n) và
biến đổi Fourier của x(n) là X(ejω) thì:
X(ejω)=a* X1(ejω)+b* X2(ejω)
Kiểm tra tính chất này trong Matlab:
x1=rand(1,11);x2=rand(1,11);n=0:10;k=0:500;X1=x1*(exp(-j*pi*(n'*k)/500));X2=x2*(exp(-j*pi*(n'*k)/500));a=2;b=3;x=a*x1+b*x2;X=x*(exp(-j*pi*(n'*k)/500));X_check=a*X1+b*X2;error=max(abs(X-X_check))
Kết quả:
error =
6.2353e-015
1.2.2. Tính chất trễ
Kiểm tra tính chất này trong Matlab:
x=rand(1,11);n=0:10;k=0:500;w=(pi/500)*k;y=x;m=n+2;Y=y*(exp(-j*pi*(m'*k)/500));X=x*(exp(-j*pi*(n'*k)/500));Y_check=(exp(-2*j*w)).*X;error=max(abs(Y-Y_check))
Kết quả:
error =
6.6893e-015
1.2.3. Trễ tần số
Ta có:
Khi đó:
Như vậy việc nhân x(n) với trong miền biến số n sẽ tương đương với việc dịch
chuyển tần số của phổ đi một lượng ω0.
Xét một ví dụ tín hiệu x(n)=cos(πn/2), 0≤ n ≤ 100 và , kiểm nghiệm
lại tính chất trên trong Matlab.
n=0:100;x=cos(pi*n/2);k=0:500;w=(pi/500)*k;X=x*(exp(-j*pi*(n'*k)/500));y=exp(j*pi*n/4).*x;Y=y*(exp(-j*pi*(n'*k)/500));subplot(2,2,1);plot(w/pi,abs(X));grid; subplot(2,2,2);plot(w/pi,angle(X));grid; subplot(2,2,3);plot(w/pi,abs(Y));grid; subplot(2,2,4);plot(w/pi,angle(Y));grid;
Kết quả:
1.2.4. Liên hợp phức
Kiểm nghiệm bằng Matlab:
n=-5:10;x=rand(1,length(n))+j*rand(1,length(n));k=-100:100;w=(pi/100)*k;X=x*(exp(-j*pi*(n'*k)/100));y=conj(x);Y=y*(exp(-j*pi*(n'*k)/100));Y_check=conj(fliplr(X));error=max(abs(Y-Y_check))
Kết quả:
error =
0
1.2.5. Nhân chập
Giả sử ta có hai tín hiệu x1(n) và x2(n) và biến đổi Fourier tương ứng là:
FT[x1(n)]=X1(ejω)
FT[x2(n)]=X2(ejω)
Khi đó ta có một công thức rất quan trọng
FT[x1(n) x2(n)]=X1(ejω)* X2(ejω)
1.2.6. Tích đại số
FT[x1(n). x2(n)]=X1(ejω) X2(ejω)
1.3. Phép biến đổi Fourier nhanh
Công thức phép biến đổi Fourier:
Với n chạy từ [0:N], tính toán FT phải thực hiện N2 phép tính và N(N+1) phép cộng
=> số lượng phép tính rất lớn
Cứ tiếp tục chia, cuối cùng người ta chứng minh được, chỉ cần thực hiện Nlog 2(N)
phép cộng và Nlog2(N) phép nhân.
Trong Matlab hàm fft để tính Fourier nhanh:
Ví dụ trong Matlab:
n=-1:3;
x=1:5;k=0:500;X=x*exp(-j*2*pi*(n'*k)/500);X1=fft(x,501);subplot(221);plot(2*k/500,abs(X));subplot(221);plot(2*k/500,abs(X1));subplot(222);plot(2*k/500,abs(X1));subplot(223);plot(2*k/500,angle(X));subplot(224);plot(2*k/500,angle(X1));
Kết quả:
1.4. Biểu diễn hệ thống rời rạc trong miền tần số liên tục
1.4.1. Đáp ứng tần số
Chúng ta biết rằng đáp ứng xung h(n) của hệ thống tuyến tính bất biến chính là đáp
ứng của hệ thống với kích thích là xung đơn vị.
Bây giờ ta đặt ở đầu vào một kích thích x(n)=ejwn. Khi đó đáp ứng ra y(n) của hệ
thống sẽ được tính như sau:
Áp dụng tính chất của biến đổi Fourier, ta cũng sẽ có:
Với H(ejω) được gọi là đáp ứng tần số của hệ thống, và được tính bởi công thức:
Ngược lại ta cũng có đáp ứng xung của hệ thống chính là biến đổi Fourier ngược của
đáp ứng tần số của hệ thống:
Ví dụ xác định đáp ứng tần số H(ejω) của hệ thống biết rằng đáp ứng xung của hệ
thống
Biểu diễn trong Matlab, ta chỉ vẽ trong khoảng [-π, π], thực hiện chia đoạn trên
thành 500 điểm:
w=linspace(0,pi,500);H=ones(1,500)./(ones(1,500)-0.9*exp(-j*w));subplot(2,1,1);plot(w/pi,abs(H));title('Do lon');grid;subplot(2,1,2);plot(w/pi,angle(H)); title('Pha'); grid;
Kết quả:
1.4.2. Các bộ lọc số lý tưởng
Ứng dụng quan trọng nhất của xử lý tín hiệu số là lọc số, việc thiết kế các bộ lọc số
sẽ nói ở phần sau, trước tiên chúng ta sẽ đi tìm hiểu, nghiên cứu bốn bộ lọc số lý
tưởng, bao gồm:
Bộ lọc thông thấp
Bộ lọc thông cao
Bộ lọc thông dải
Bộ lọc chắn dải
a. Bộ lọc thông thấp lý tưởng
Bộ lọc thông thấp được định nghĩa bằng công thức:
Với –π ≤ ω ≤ π
Trong đó:
ωc: tần số cắt
- ωc ≤ ω ≤ ωc: dải thông
- π ≤ ω ≤ ωc và ωc ≤ ω ≤ π: dải chắn
Ví dụ:
Xác định và vẽ đồ thị đặc tính xung h(n) của bộ lọc số thông thấp lý tưởng có tần số
cắt ωc=π/3
-ωc ωc π-π
1
ω
|H(ejω)|
0
Đặc tính xung của bộ lọc thông thấp pha không lý tưởng. áp dụng công thức ta có:
Từ đây ta vẽ đồ thị đặc tính xung h(n) của bộ lọc thông thấp lý tưởng với ωc=π/3:
-9 -6 -3
-9 -8 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8
h(n) của bộ lọc thông thấp lý tưởng pha không với 3 c .
Nhận xét:
Đặc tính xung h(n) của bộ lọc thông thấp lý tưởng là dãy chẵn, đối xứng qua trục
tung, có độ dài vô hạn và không nhân quả, nên không thể thực hiện được trên thực
tế.
b. Bộ lọc thông cao lý tưởng
Bộ lọc thông thấp được định nghĩa bằng công thức:
Với –π ≤ ω ≤ π
......
0,33
h(n)
0,280,28
0,14
-0,07
0,14
-0,07
0,040,04n
0,030,03
-0,05 -0,05
Trong đó:
ωc: tần số cắt
- ωc ≤ ω ≤ ωc: dải thông
- π ≤ ω ≤ ωc và ωc ≤ ω ≤ π: dải chắn
c. Bộ lọc thông dải lý tưởng
Bộ lọc thông thấp được định nghĩa bằng công thức:
Với –π ≤ ω ≤ π
Trong đó:
ωc: tần số cắt
- ωc ≤ ω ≤ ωc: dải thông
- π ≤ ω ≤ ωc và ωc ≤ ω ≤ π: dải chắn
-ωc ωc π-π
1
ω
|H(ejω)|
0
-ωc2 ωc2 π-π
1
ω
|H(ejω)|
0-ωc1 ωc1
1.5. Phép biến đổi Fourier của tín hiệu hai chiều
1.5.1. Phép biến đổi Fourier
Khái niệm và công thức
Biến đổi Fourier của một tín hiệu 2 chiều (ảnh số) là một cặp biến đổi
f(x,y) F(u,v)
FT: chuyển sự biểu diễn tín hiệu từ không gian thực sang không gian tần số.
IFT: chuyển đổi tín hiệu từ không gian tần số về không gian thực
Trước hết ta xét phép biến đổi Fourier của một hàm liên tục f(x,y). Phép biến đổi
được định nghĩa bởi công thức:
Như vậy biến đổi Fourier đã chuyển việc biểu diễn tín hiệu f(x,y) trong miền không
gian thực thành việc biểu diễn tín hiệu F(u,v) trong miền tần số.
Theo đó ánh xạ ngược của phép biến đổi sẽ là:
Phép biến đổi Fourier của tín hiệu rời rạc 2 chiều (ảnh số) được tính bằng công thức:
Và ánh xạ ngược của phép biến đổi là:
Khi đó tập hợp giá trị X(u,v) hình thành lên miền tần số (frequency domain), Mỗi
thành phần của X(u,v) gọi là thành phần của tần số (frequency components)
FT
IFT
Các thành phần tần số của phép biến đổi fourier mang giá trị phức nên ta có thể biểu
diễn như sau:
Khi đó |X(u,v)| được gọi là độ lớn hay phổ biên độ của phép biến đổi Fourier, nó
biểu diễn sự phụ thuộc biên độ tín hiệu vào tần số, |X(u,v)| được xác định bằng công
thức:
Và arg(u,v) được gọi là phổ pha, nó biểu diễn sự phụ thuộc pha tín hiệu vào tần số,
được tính bằng công thức:
Giá trị |X(u,v)|2 được gọi là phổ năng lượng của tín hiệu, thể hiện sự phụ thuộc năng
lượng vào tần số.
Một số tính chất của DFT
Chuyển đổi:
Việc nhân tín hiệu vào với e2j(am/M+bn/N) trong miền không gian thực sẽ tương đương
với trường hợp dịch chuyển phổ đi một khoảng (a,b). Xét trường hợp đặc biệt khi
a=M/2, b=N/2
Tức là:
)2Nv,
2Mu(X))1)(n,m(x(FT
)v,u(X))n,m(x(FT
)nm(
Nói cách khác, bằng cách nhân vào ảnh ban đầu giá trị (-1)(m+n) trước khi biến đổi, ta
sẽ thu được phổ tần số mà điểm tần số F(0,0) của nó sẽ nằm giữa mảng 2 chiều.
Điều này rất quan trọng trong việc hiện phổ tín hiệu và lọc trên miền tần số.
Tính đối xứng và đơn vị
FT(u,v)=F(u,v)
F-1(u,v)=F*(u,v)
Tuần hoàn
Từ công thức định nghĩa về phép biến đổi Fourier ta có:
Tích chập của 2 tín hiệu
Giả sử có 2 tín hiệu x(m,n) và h(k,l)
DFT(x(m,n))=X(u,v)
DFT(h(k,l))=H(u,v)
Khi đó:
DFT(x(m,n)*h(k,l))=X(u,v)H(u,v)
Như vậy phép nhân chập trong miền không gian tương đương với phép nhân thông
thường trong miền tần số. Đây chính là cơ sở cho phép lọc trên miền tần số. Việc
làm trơn, lọc nhiễu thực hiện trên miền không gian hoàn toàn có thể thực hiện trên
miền tần số.
1.5.2. Phép lọc trên miên tần số
Cơ sở lý thuyết
Trong một ảnh, giá trị tần số cao tương ứng với sự thay đổi lớn về giá trị mức xám
như các đường biên ảnh, nhiễu v.v.. Trong khi đó thông tin của đối tượng tập trung
ở vùng tần số thấp.
Các kỹ thuật lọc trong miền tần số của tín hiệu ảnh cũng giống như lọc tín hiệu số
thông thường. Có thể làm trơn, nổi biên ảnh, lọc nhiễu, khôi phục ảnh v.v… Về cơ
bản thì lọc ảnh trên miền tần số tương đương với phép nhân chập hay phép lọc trên
miền không gian biểu diễn.
Có thể hình dung như sau:
x(m,n) y(m,n)
Làm trơn ảnh bằng phép lọc thông thấp
Bộ lọc này làm giảm các thành phần tần số cao, ảnh sau khi lọc sẽ ít góc cạnh hơn vì
các thành phần tần số cao đã được giảm bớt. Xét một ví dụ về bộ lọc thông thấp như
sau:
Trong đó D(u,v) được gọi là khoảng cách tới nguồn, được tính bằng công thức:
22
2Nv
2Mu)v,u(D
Có thể hình dung như sau:
DFT filter IDFT
F(u,v) H(u,v)F(u,v)
Với Y(u,v)=X(u,v)H(u,v)
Ý nghĩa: tất cả các tần số bên trong hình tròn bên trong đường tròn đều được lọt qua
mà không hề suy giảm, các tần số bên ngoài thì ngược lại. Điều này có nghĩa là bộ
lọc này làm suy giảm tất cả các thành phần tần số cao, từ đó làm trơn nhiễu trên ảnh.
Trên Matlab ta sử dụng lệnh fft2 để tính biến đổi Fourier của một ảnh số.
Ví dụ:
I=imread('cameraman.tif');F=fft2(I);imshow(abs(F),[]);
Quan sát chúng ta sẽ thấy ở trên phổ tin hiệu, quan sát kỹ sẽ thấy 4 góc có 4 điểm
sáng. Sử dụng lệnh fftshift để dịch phổ về tâm:
FC=fftshift(abs(F))imshow(FC,[])
Để hiện thị phổ được rõ, chúng ta sử dụng thêm hàm log.
FC2=log(1+FC);imshow(FC2,[]);
Kết quả:
1.6. Bài tập
Bài 1. Xác định các hệ số ck, biên độ tần số, và phổ pha của dãy tín hiệu rời rạc tuần hoàn x(n) = {0^, 1, 2, 3} với chu kỳ N = 4.
Bài 2. Xác định biến đổi Fourier của tín hiệu rời rạc thời gian và không tuần hoàn sau :
Bài 3. Tìm biến đổi Fourier của tín hiệu xung Aδ(n) (rời rạc và không tuần hoàn)
Bài 4. Cho hệ thống rời rạc với đáp ứng xung là h(n) = δ(n) + δ(n-1) và tín hiệu nhập x(n) = 0.5nu(n). Tìm đáp ứng y(n) sử dụng phương pháp biến đổi Fourier
Bài 5. Sử dụng tín hiệu nhập x(n) = 0.5nu(n) cho qua hai hệ thống:
Xác định y(n) bằng phương pháp biến đổi Fourier.
Bài 6. Xác định chuỗi Fourier của tín hiệu liên tục thời gian và tuần hoàn sau :
Bài 7. Xác định biến đổi Fourier của tín hiệu liên tục thời gian và không tuần hoàn sau :
x(t) = e−αtu(t), α > 0
với
Bài 1. Xác định biến đổi Fourier của
Với:
Bài 2. Tìm biến đổi Fourier của các tín hiệu sau
a.
b.
Với:
c.
Bài 3. Tìm biến đổi Fourier của các tín hiệu
a. )6()()( nununx
b. )(2)( nunx n
c. )4(41)(
nunx
n
d. 1,)(sin)( 0 nunnx n
e. 1,sin)( 0 nnx n
f.
4,0
4,212
)(n
nnnx
g. }2,1,0,1,2{)(
nx
Bài 1. Tìm biến đổi Fourier của x(n) = 0.1n, với n≥0. Vẽ đồ thị cường độ
và pha của X().
Bài 2. Tìm biến đổi Fourier của :
Vẽ đồ thị cường độ và pha của X().
Bài 3. Cho hệ thống có :
Vẽ đồ thị cường độ và pha của H().
Bài 4. Cho phương trình sai phân :