Xử lý tín hiệu nâng cao
CHƯƠNG II
Tín hiệu rời rạc
Khái niệm về tín hiệu rời rạc
Trong DSP, tín hiệu thời gian rời rạc,
được biểu thị bằng một dãy rời rạc:
x[n]={-3 , 2, 4, -4, 0, 1…}
Quá trình rời rạc hóa còn gọi là quá
trình lấy mẫu tín hiệu
2
Các tín hiệu cơ sở
Dãy xung đơn vị: hay còn gọi là hàm Delta, có
giá trị bằng đơn vị khi đối số = 0 và có giá trị bằng
0 trong các trường hợp còn lại:
( n)
1,
n
0
0, n
0
,0,0, 1,0,0,
Một tín hiệu thời gian rời rạc bất kỳ có thể được
khai triển từ các dãy xung đơn vị
x[n]
x[k ] [n k ]
k
3
Dãy xung đơn vị (tiếp)
Trong Matlab ta có thể biểu diễn như sau:
( n n0 )
1,
n
n0
0, n
n0
, n1
n
n 2 , n1
n0
n2
function[x,n]=impseq(n0,n1,n2)
n=[n1:n2];
x=[(n-n0)==0];
Ví dụ: Tạo dãy xung đơn vị trong khoảng [-5:5]
n=[-5:5]
x=impseq(0,-5,5)
stem(x)
Kết quả:
4
Các tín hiệu cơ sở (tiếp)
Dãy nhảy bậc đơn vị: Dãy nhảy bậc đơn vị có giá trị
bằng đơn vị khi đối số lớn hơn hoặc bằng 0, và bằng 0
khi đối số nhỏ hơn 0.
1 when n 0
0 when n 0
un
Một dãy tín hiệu rời rạc theo thời gian bất kỳ x[n] để có
thể khai triển thành một tổng các dãy xung nhảy bậc
đơn vị
xn
x k (u n
u n 1)
k
5
Dãy nhảy bậc đơn vị (tiếp)
Trong Matlab để tạo ra dãy xung nhảy bậc đơn vị ta
xây dựng hàm stepseq:
function [x,n]=stepseq(n0,n1,n2)
n=[n1:n2];
x=[(n-n0)>=0];
Ví dụ: tạo dãy nhảy bậc đơn vị trong khoảng [-5:5]
x=stepseq(0,-5,5)
stem(x)
Kết quả:
6
Thực hành
Vẽ đồ thị tín hiệu:
x[n]=2*δ[n-5]-4*δ[n+7] trên đoạn [-10:10]
Vẽ đồ thị tín hiệu:
x[n]=e-0.3(n-10){u(n-5)-u(n-15)} trên đoạn [0:20]
7
Các tín hiệu cơ sở (tiếp)
Dãy tín hiệu hình sin: Dãy tín hiệu hình sin được biểu
thị bằng hàm số sin (hoặc cos). Trong Matlab, hàm sin
(hoặc cos) được sử dụng để tạo ra dãy tín hiệu này.
Ví dụ tạo dãy tín hiệu:
xn
2 cos
n
10
2
sin
n
20
2
trên đoạn [0:50]
Kết quả:
8
Dãy tín hiệu hình sin (tiếp)
Ví dụ 2:
Tín hiệu
xn
2 cos
n
10
2
sin
n
20
2
(trong ví dụ trên)
bị ảnh hưởng bởi nhiễu Gauss: y[n]=x[n]+0.2*w[n]
Kết quả:
9
Các tín hiệu cơ sở (tiếp)
Dãy e-mũ phức: được định nghĩa bởi hệ thức:
xn
ae j (
n
)
a cos n
j sin n
Trong Matlab ta sử dụng hàm exp để tạo ra các dãy emũ phức.
Ví dụ với dãy
xn
e
0.1 jn
trên đoạn [-10:30]
clc
n=[-10:30];
x=exp(0.1j*n*pi);
subplot(221);stem(real(x));title('Phan thuc');
subplot(222);stem(imag(x));title('Phan ao');
subplot(223);stem(abs(x));title('Bien do');
subplot(224);stem(angle(x));title('Pha cua x');
10
Dãy e-mũ phức (tiếp)
Hàm emũ phức là một hàm tuần hoàn
11
Các phép toán trên tín hiệu
Phép dịch chuyển
Phép nhân, cộng tín hiệu
Phép nhân chập 2 tín hiệu
12
Thực hành
Tạo hàm dịch chuyển sigshift, thực hiện
dịch tín hiệu xung đơn vị trễ pha 5 mẫu
Thực hiện nhân chập 2 tín hiệu sau:
x[n]=[1, 2, 3, 4, 5] và h[n]=[2, 2]
13
Phương trình sai phân
Với kích thích đầu vào x(n) và đáp ứng ra
y(n) của hầu hết các hệ thống tuyến tính
thỏa mãn:
N
k 0
ak y ( n k )
M
br x(n r )
r 0
14
Phương trình sai phân
Biểu diễn trong Matlab, người ta sử dụng một
hàm filter, hàm này có định dạng y=filter(b,a,x),
Ví dụ: y(n)-y(n-1)+0.9y(n-2)=x(n) cần tính h(n)
a=[1,-1,0.9];
b=[1];
x=impseq(0,-10, 100);
h=filter(b,a,x);
stem(h);
15
Phương trình sai phân
16
Tín hiệu hai chiều (ảnh số)
Biểu diễn ảnh
Một ảnh được biểu diễn dưới dạng một hàm
f(x,y)
Đối với ảnh số đơn sắc, giá trị f tại (x,y) được gọi
là mức xám
Kết quả của quá trình lấy mẫu và lượng tử hóa
là một ma trận số liệu.
Một ảnh có kích thước M x N là một ma trận có
M hàng và N cột, mỗi một giá trị trên ma trận gọi
là một điểm ảnh (pixel).
17
Biểu diễn ảnh
Một ma trận tọa độ ảnh trong Matlab được biểu diễn
18
Đọc ảnh, hiển thị ảnh
Trong Matlab sử dụng hàm
imread(‘filename’) để đọc một ảnh:
Hàm imshow(image) trong được sử dụng
để hiện ảnh.
Lưu một ảnh từ ma trận I ra một file, sử
dụng hàm imwrite(image,’filename’):
19
Cải thiện ảnh
Biểu đồ histogram của ảnh I
figure, imhist(I)
Cân bằng Histogram
I2 = histeq(I);
Hiệu chỉnh Histogram
I = imread('pout.tif');
J = imadjust(I,[0.3 0.7],[]);
imshow(I), figure, imshow(J);
20
Tạo ảnh nhị phân
level = graythresh(I);
(graythresh: xác định ngưỡng mức xám của ảnh sử dụng phương pháp Otsu)
bw = im2bw(I,level);
figure, imshow(bw)
21