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.
13 trang |
Chia sẻ: tuandn | Lượt xem: 5673 | Lượt tải: 2
Bạn đang xem nội dung tài liệu Đề tài Xử lý ảnh mờ trong Matlab, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Mụ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
Lờ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!
Chương 1:
Giới thiệu chung về matlab
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.
Hệ thống của Matlab
Gồm 5 phần:
• 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:
+ 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 F New F 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 F Open F 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 F 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 FRun 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ự.
- 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: *
Chia phải \
Chia trái : /
Lũy thừa : ^
Phép gán : =
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');
LEN = 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
- 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
+ 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
Tài liệu tham khảo
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
Giáo trình Matlab và ứng dụng
Tác giả: Phan Thanh Tao- Trường ĐH Bách Khoa Đà Nẵng