Xử lý số tín hiệu là môn học nghiên cứu về các phương trình toán học, các giải thuật và các tính toán dựa trên phương pháp tính gần đúng cho các tín hiệu và hệ thống rời rạc
Trang 1Mục lục
Lời nói đầu 2
Chương I: Giới thiệu chung về Matlab 3
1 Khái niệm Matlab 3
2 Hệ thống của Matlab 3
3 Chế độ làm việc 4
3.1 Làm việc ở chế độ hội thoại ( command window ) 4
3.2 Làm việc ở chế độ viết chương trình 4
4 Một số khái niệm cơ bản 4
4.1 Một số phím chuyên dụng và lệnh thông dụng 4
4.2 Câu lệnh và biến 5
4.3 Một số phếp toán trong Matlab 5
Chương II Bài thực hành 6
2.1 Khái niệm phép biến đổi Z 6
2.2 Một số lệnh 6
2.3 Bài tập thực hành 7
Tài liệu tham khảo 8
Trang 2Lời Mở Đầu
Xử lý số tín hiệu là môn học nghiên cứu về các phương trình toán học, các giải thuật và các tính toán dựa trên phương pháp tính gần đúng cho các tín hiệu và hệ thống rời rạc Nó bao hàm mọi phép xử lý các dãy số để có được các thông tin như phân tích, tổng hợp, mã hóa đặc biệi là ứng dụng biến đổi tín hiệu sang dạng mới phù hợp hơn Nội dung môn học xử lý tín hiệu số được giảng dạy tại khoa Công nghệ thông tin trường Đại học sư phạm Hà Nội 2, chủ yếu bao gồm :
tín hiệu số và hệ thống số
phép biến đổi Z
Hiện nay có rất nhiều các công cụ phần mềm tiện ích rất mạnh để hỗ trợ tính toán Một trong số đó là MATLAB của MathWorks Nó là gói phần mềm có thể dễ dàng kiếm được ở Việt Nam vào thời điểm hiện nay Khi sử dụng phần mềm này người dùng có thể tự đóng gói rồi kế thừa và tái sử dụng các thiết kế trước đó, nó còn cho phép người dùng thiết kế phần mềm thông qua các câu lệnh, dễ dàng môđun hoá dưới dạng các kịch bản và các hàm để có thể sử dụng Để hỗ trợ thêm cho việc ứng dụng các ngôn ngữ để giải quyết các bài toán đồng thời giúp sinh viên hiểu sâu hơn về lý thuyết của môn học, chúng em đã biên soạn bài thực hành này nhằm thực hiện phép biến đổi Z và vÏ xung tÝn hiÖu lµ mét phÇn nhá trong m«n xö lý tÝn hiÖu sè, do
Th.s Lu ThÞ BÝch H¬ng trùc tiÕp gi¶ng d¹y vµ híng dÉn.Vì thời gian có hạn
và trình độ còn hạn chế nên bài báo cáo không tránh khỏi sai sót, thiếu sự chi tiết, chúng em rất mong nhận được sự xem xét đóng góp ý kiến, chỉ bảo của cô và các bạn để bài thực hiện được hoàn thiện hơn Em xin chân thành cảm ơn!
Trang 4Chương 1:
Giới thiệu chung về matlab 1.1 Khái niệm Matlab
Matlab là một phần mềm ứng dụng chạy trong môi trường Windows
do hãng Mathworks sản xuất và cung cấp, là ngôn ngữ lập trình thực hành bậc cao được sử dụng để giải các bài toán về kỹ thuật Nó tích hợp các công
cụ rất mạnh phục vụ tính toán, lập trình, thiết kế, mô phỏng trong một môi trường rất dễ sử dụng Dữ liệu cùng với thư viện được lập trình sẵn cho phép người sử dụng có thể có được những ứng dụng sau:
+ Sử dụng các hàm có sẵn trong thư viện, các phép tính toán học
thông thường
+ Cho phép lập trình tạo ra những ứng dụng mới
+ Cho phép mô phỏng các mô hình thực tế
+ Phân tích khảo sát và hiển thị dữ liệu
+ Với phần mềm đồ họa cực nhanh
+ Cho phép phát triển, giao tiếp với một số phần mềm khác như C++, Fortran
Matlab la viết tắt của Matrix Laboratory, ban đầu được viết chỉ để phục
vụ cho việc tính toán ma trận Qua thời gian dài nghiên cứu phát triển nó đã được phát triển thành một công cụ hữu ích, một ngôn ngữ kỹ thuật Đặc biệt trong môi trương đại học nó là công cụ chuẩn cho các khóa học mở đầu và cao cấp về toán học, khoa học kỹ thuật, và ứng dụng trong nhiều lĩnh vực khác
1.2 Hệ thống của Matlab
Gồm 5 phần:
Trang 5• Mụi trường phỏt triển: Là một tập hợp cỏc cụng cụ, phần lớn trong chỳng là cỏc giao diện đồ hoạ, giỳp người dựng sử dụng cỏc cõu lệnh và cỏc hàm của MATLAB
• Thư viện cỏc hàm toỏn học: Là một tập hợp cỏc hàm toỏn học bao gồm từ cỏc hàm cơ bản như sin, cosin, cỏc phộp tớnh đại số phức đến cỏc hàm phức tạp như tỡm ma trận đảo, tỡm ma trận riờng, hàm Bessel và biến đổi Fourier nhanh (Fast Fourier Transform – FFT)
• Ngụn ngữ lập trỡnh: Là một ngụn ngữ bậc cao liờn quan đến ma trận
và mảng Trong MATLAB cú đầy đủ những đặc trưng của một ngụn ngữ lập trỡnh bao gồm cỏc lệnh rẽ nhỏnh, cỏc hàm, cấu trỳc dữ liệu, nhập/xuất dữ liệu, và cỏc đặc tớnh liờn quan đến lập trỡnh hướng đối tượng (object-oriented programming)
• Đồ hoạ: Là một tập hợp cỏc cụng cụ để biểu diễn ma trận và vector bằng đồ hoạ Bờn cạnh cỏc cụng cụ ở mức thấp để thể hiện dữ liệu dạng 2 chiều và 3 chiều, xử lý hỡnh ảnh tĩnh, ảnh động cũn cú cỏc cụng cụ ở mức cao dựng để tạo ra cỏc biểu diễn đồ hoạ theo ý đồ của người sử dụng cũng như tạo ra cỏc giao diện đồ hoạ người sử dụng
• Giao diện chơng trình ứng dụng Matlab API (Application Program Interface): Đây là một th viện cho phép bạn viết các chơng trình C và Fortran tơng thích với Matlab
1.3 Chế độ làm việc
1.3.1 Làm việc ở chế độ hội thoại (command window)
- Tại dấu mời >> gõ dòng lệnh, dòng lệnh sẽ đợc thực hiện ngay lập tức sau khi nhấn phím Enter ↵ Kết quả sẽ đợc đa ra cửa sổ lệnh hoặc cửa sổ đồ hoạ Nếu có lỗi, lỗi sẽ đợc ghi ngay tại cửa sổ lệnh
- Qui tắc viết dòng lệnh:
Trang 6+ Trên 1 dòng có thể viết nhiều lệnh, các lệnh đợc phân cách bởi dấu ',' hoặc ';' Nếu kết quả lệnh trả về giá trị số và kết thúc bởi dấu ',' kết quả sẽ
đ-ợc in trên cửa sổ lệnh, còn nếu kết thúc bởi dấu ';' kết quả sẽ không đđ-ợc in ra Với các lệnh không trả về biến nào, dấu phân cách lệnh ',' và ';' là nh nhau
+ Khi lệnh quá dài, hoặc muốn viết trên nhiều dòng lệnh dùng dấu
để matlab nhận dòng tiềp theo
- Chỉ nên sử dụng chế độ hội thoại khi giải bài toán có cấu trúc đơn giản Còn với bài toán có cấu trúc phức tạp nên sử dụng chế độ lập trình
1.3.2 Làm vệc ở chế độ viết chơng trình
- Tại cửa sổ lệnh (Command Window) chọn File menu New m-file
để vào chế độ soạn thảo viết chơng trình Hoặc mở m-file có sẵn để sửa, chọn File menu Open chọn m-file cần sửa, hoặc viết tại cửa sổ lệnh dòng lệnh edit filename
- Chạy file chơng trình đã soạn thảo: Có 3 cách
+Chạy ngay tại cửa sổ soạn thảo: Tool menu Run , chỉ dùng đợc khi file đợc lu (Save) vào th mục hiện tại (current path)
+Chạy trong cửa sổ lệnh: >>edit tên_m_file ↵
+Chạy trong cửa sổ lệnh: File menu Run Script viết tên file, hoặc chọn Browse để tìm m-file cần chạy
1.4 Một số khỏi niệm cơ bản
1.4.1 Một số phớm chuyờn dụng và lệnh thụng dụng
1.4.1.1 Cỏc phớm thụng dụng
- phớm ↑hoặc Ctrl + P : gọi lại cỏc lệnh đó thực hiện trước đú
- phớm ↓ hoặc Ctrl + n: gọi lại lệnh vừa thực hiện trước đú
- phớm → hoặc Ctrl + f: chuyển con trỏ sang bờn phải một ký tự
- phớm ơ hoặc Ctrl + b: chuyển con trỏ sang trỏi một ký tự
Trang 7- Dấu ” ; ” dùng để kết thúcc một biểu thức hoặc câu lệnh mà không hiển thị kết quả ra màn hình
- ↵: nhảy xuống dòng dưới
1.4.1.2 Các lệnh thông dụng hệ thống
- Ctrl + C: dừng chương trình đang thực hiện
- Clc: lệnh xóa màn hình
- Clf: lệnh xóa màn hình đồ họa
- input: lệnh nhập dữ liệu vào từ bàn phím
- help: lệnh cho phép xem phần trợ giúp
- Dòng lệnh dài: nếu dòng lệnh dài quá dùng ↵ để chuyển xuống dòng dưới
1.4.2 Câu lệnh và biến
Các lệnh Matlab thường có dạng:
tên biến= biểu thức hoặc đơn giản: biểu thức Các biểu thức được cấu thành từ các toán tử và các ký tự đặc biệt khác, từ các hàm, và các tên biến Nếu tên biến và dấu = bị bỏ qua thì một biến có tên là ans được tự động tạo ra Một câu lệnh được kết thúc bình thường với ký tự sang dòng hay phím enter Tuy nhiên, nếu ký tự cuối cùng của câu lệnh là dấu “ ; ” thì việc in ra kết quả được hủy, nhưng lệnh vẫn được thực hiện
Matlab là ngôn ngữ nhạy cảm nó phân biệt chữ thường và chữ hoa, bởi vậy a và A không phải là tên của cùng một biến
1.4.3 Một số phép toán trong Matlab
• Phép cộng: +
• Phép trừ:
• Phép nhân: *
Trang 8• Chia phải \
• Chia trái : /
• Lũy thừa : ^
• Phép gán : =
Trang 9
Chương 2:
Xử lý ảnh mờ trong Matlab 2.1 Thế nào là làm mờ ?
2.1.1 Nguyên nhân của sự mờ
- Sự làm mờ hay sự phai nhạt của một ảnh có thể gây ra bởi nhiều tác
nhân :
+ Chuyển động trong khi capture ảnh - bởi camera hoặc khi thời gian lộ sáng nhiều được sử dụng - bởi vật
+ Ngoài vùng tiêu cự của ống kính , sử dụng một ống kính có góc
mở rộng , sự hỗn loạn của môi trường , thời gian lộ sáng ngắn … sẽ làm giảm số lượng phôtôn được bắt giữ (captured)
2.1.2 Các chế độ chống mờ ảnh
- Một ảnh bị mờ hay bị phai nhạt có thể được mô tả vắn tắt bởi phương trình g=Hf+n trong đó
+ g : Ảnh bị mờ
+ H : Tác nhân làm méo cũng được gọi là PSF
+ f : Ảnh gốc
+ n : Nhiễu phụ , được tạo ra trong quá trình nhận ảnh , nó làm hỏng ảnh
Chú ý : Ảnh f thực tế không tồn tại Ảnh này đại diện cho bức ảnh mà ta
có nếu tình trạng thu nhận ảnh là hoàn hảo
- Tầm quan trọng của PSF: Dựa trên chế độ này , tác vụ chính của
việc chống làm mờ là Deconvolve ảnh bị mờ với PSF Để minh hoạ , ví dụ này sẽ lấy 3 ảnh không bị mờ và cố ý làm mờ chúng bằng cách convolve nó
với PSF Ví dụ sử dụng hàm fspecial để tạo một PSF mô phỏng một chuyển động mờ , chỉ ra chiều dài của mờ tính bằng pixel ( LEN=31 ) và góc mờ tính theo độ ( THETA=11) Một khi PSF được tạo , ví dụ sử dụng hàm
imfilter để convolve PSF với ảnh gốc I để tạo ảnh bị làm mờ Blurred
I = imread('peppers.png');
I = I(60+[1:256],222+[1:256],:); % crop the image
figure; imshow(I); title('Original Image');
Trang 10LEN = 31;
THETA = 11;
PSF = fspecial('motion',LEN,THETA); % create PSF
Blurred = imfilter(I,PSF,'circular','conv');
figure; imshow(Blurred); title('Blurred Image');
2.2 Sử dụng các hàm khôi phục ảnh mờ
- Toolbox xử lý ảnh của Matlab gồm có 4 hàm khôi phục ảnh mờ bao gồm :
+deconvwnr : Sủ dụng bộ lọc Wiener
+ deconvreg : Sử dụng bộ lọc được quy tắc hoá
+ deconvlucy : Sử dụng giải thuật Lucy-Richardson
+ đeconvblind : Sử dụng giải thuật blind deconvolution
- Tất cả những hàm này chấp nhận một PSF và một ảnh bị mờ như là các tham số chính của nó Với hai hàm đầu tiên , ta cung cấp một số thông tin về nhiễu để giảm sự khuếch đại nhiễu đến mức có thể trong quá trình khôi phục
- Hàm deconvlucy thi hành một cách nhanh chóng giải thuật Lucy-Richardson Hàm này thực hiện nhiều vòng lặp , sử dụng kĩ thuật tối ưu và thống kê Poisson Với hàm này , ta không cần phải cung cấp thông tin về nhiễu phụ trong ảnh bị “bẩn”
- Hàm deconvblind thi hành giải thuật blind deconvolution mà không cần nhận ra PSF Khi ta gọi hàm deconvblind , ta truyền một tham số như là gía trị đoán biết ban đầu ở PSF Hàm deconvblind trả lại một PSF đã được khôi phục để khôi phục ảnh Sự thi hành sử dụng cùng chế độ suy giảm và lặp như hàm deconvlucy
Chú ý : Ta có thể cần phải thi hành nhiều quá trình khử mờ lặp đi lặp lại ,
mỗi lần thay đổi tham số truyền vào hàm khử mờ cho tới khi thu được một ảnh gần xấp xỉ với ảnh gốc
- Để tránh bị rung động trong ảnh được khử nhiễu , ta có thể sử dụng hàm edgetaper để tiền xử lý ảnh trước khi truyền nó cho hàm khử mờ
2.3 Các phương pháp khử mờ
2.3.1 Khử mờ với bộ lọc Wiener
Trang 11- Sử dụng hàm deconvwnr để khử mờ một ảnh sử dụng bộ lọc Wiener
Bộ lọc này có thể được sử dụng rất hiệu quả khi đặc tính tần số của ảnh và nhiễu phụ là đã biết ít nhất là vài bậc Trong trường hợp không có nhiễu , bộ lọc Wiener giảm tới bộ lọc đảo lý tưởng
- Các bước khử mờ:
+ Đọc một ảnh vào không gian làm việc
+ Tạo hàm PSF
+ Tạo sự mờ giả trên ảnh
+ Khử mờ cho ảnh
2.3.2 Khử mờ với bộ lọc được quy tắc hoá
- Sử dụng hàm deconvreg để khử mờ một ảnh sử dụng bộ lọc được quy tắc hoá Một bộ lọc kiểu này có thể được sử dụng hiệu quả khi thông tin về nhiễu phụ được biết một cách hạn chế
- Các bước khử mờ:
+ Đọc một ảnh vào không gian làm việc
+ Tạo hàm PSF để làm mờ ảnh
+ Làm mờ ảnh và thêm nhiễu vào ảnh
+ Sử dụng hàm deconvreg để khử mờ ảnh , chỉ ra hàm PSF được sử dụng để làm mờ ảnh và nhiễu NP
2.3.3 Khử mờ với giải thuật Lucy- Richardson
- Sử dụng hàm deconvlucy để khử mờ một ảnh bằng cách sử dụng giải thuật Lucy-Richardson Hàm này có thể được sử dụng hiệu quả khi biết được hàm PSF nhưng biết ít về nhiễu tác động phụ lên ảnh
- Hàm deconvlucy thi hành vài sự điều hợp tới giải thuật Lucy-Richardson Sử dụng những điều hợp này ta có thể :
+ Giảm tác động của sự mở rộng nhiễu trên một ảnh khôi phục + Giải thích được tính không đồng nhất của chất lượng ảnh
+ Điều khiển camera đọc hết nhiễu nền
+ Cải thiện độ phân giải của ảnh phục hồi bằng cách lấy mẫu phụ
- Các bước khử mờ:
+ Đọc một ảnh vào không gian làm việc
+ Tạo hàm PSF để làm mờ ảnh
Trang 12+ Làm mờ ảnh và thêm nhiễu vào ảnh
+ Sử dụng hàm devconlucy để khôi phục ảnh gốc , chỉ ra hàm PSF được sử dụng để tạo mờ và giới hạn số vòng lặp tới 5 ( mặc định là 10 )
2.3.4 Sử dụng giải thuật trộn deconvolution
- Sử dụng hàm deconvblind để khử mờ một ảnh Giải thuật này có thể được sử dụng hiệu quả khi không có thông tin về mờ hoặc nhiễu được biết Hàm deconvblind khôi phục ảnh và PSF đồng thời , sử dụng một quá trình lặp tương tự như giải thuật Lucy-Richardson
- Hàm deconvblind chỉ giống như hàm deconvlucy , thi hành một vài sự điều hợp tới giải thuật Lucy-Richardson
- Các bước khử mờ:
+ Đọc một ảnh vào không gian làm việc
+ Tạo hàm PSF để làm mờ ảnh
+ Tạo mờ trên ảnh
+ Khử mờ ảnh , tạo một sự ước lượng ban đầu cho kích thước của PSF
2.2 Chương trình minh họa
Trang 13Tài liệu tham khảo
1 Nhập môn xử lý ảnh số
Tác giả: Lương Mạnh Bá, Nguyễn Thanh Thủy- NXB Khoa Học
và Kỹ Thuật
2 Giáo trình Matlab và ứng dụng
Tác giả: Phan Thanh Tao- Trường ĐH Bách Khoa Đà Nẵng