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
Bài tập lớn Xử lý ảnh mờ trong Matlab 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 GVHD: Th.s Lưu Thị Bích Hương 1 Bi tp ln X lý nh m trong Matlab Li M u X lý s tớn hiu l mụn hc nghiờn cu v cỏc phng trỡnh toỏn hc, cỏc gii thut v cỏc tớnh toỏn da trờn phng phỏp tớnh gn ỳng cho cỏc tớn hiu v h thng ri rc. Nú bao hm mi phộp x lý cỏc dóy s cú c cỏc thụng tin nh phõn tớch, tng hp, mó húa .c bii l ng dng bin i tớn hiu sang dng mi phự hp hn. Ni dung mụn hc x lý tớn hiu s c ging dy ti khoa Cụng ngh thụng tin trng i hc s phm H Ni 2, ch yu bao gm : . tớn hiu s v h thng s. . phộp bin i Z. Hin nay cú rt nhiu cỏc cụng c phn mm tin ớch rt mnh h tr tớnh toỏn. Mt trong s ú l MATLAB ca MathWorks. Nú l gúi phn mm cú th d dng kim c Vit Nam vo thi im hin nay. Khi s dng phn mm ny ngi dựng cú th t úng gúi ri k tha v tỏi s dng cỏc thit k trc ú, nú cũn cho phộp ngi dựng thit k phn mm thụng qua cỏc cõu lnh, d dng mụun hoỏ di dng cỏc kch bn v cỏc hm cú th s dng. h tr thờm cho vic ng dng cỏc ngụn ng gii quyt cỏc bi toỏn ng thi giỳp sinh viờn hiu sõu hn v lý thuyt ca mụn hc, chỳng em ó biờn son bi thc hnh ny nhm thc hin phộp bin 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ỡ thi gian cú hn v trỡnh cũn hn ch nờn bi bỏo cỏo khụng trỏnh khi sai sút, thiu s chi tit, chỳng em rt mong nhn c s xem xột úng gúp ý kin, ch bo ca cụ v cỏc bn bi thc hin c hon thin hn. Em xin chõn thnh cm n! GVHD: Th.s Lu Th Bớch Hng 2 Bài tập lớn Xử lý ảnh mờ trong Matlab GVHD: Th.s Lưu Thị Bích Hương 3 Bài tập lớn Xử lý ảnh mờ trong Matlab Chươ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: GVHD: Th.s Lưu Thị Bích Hương 4 Bi tp ln X lý nh m trong Matlab Mụi trng phỏt trin: L mt tp hp cỏc cụng c, phn ln trong chỳng l cỏc giao din ho, giỳp ngi dựng s dng cỏc cõu lnh v cỏc hm ca MATLAB. Th vin cỏc hm toỏn hc: L mt tp hp cỏc hm toỏn hc bao gm t cỏc hm c bn nh sin, cosin, cỏc phộp tớnh i s phc n cỏc hm phc tp nh tỡm ma trn o, tỡm ma trn riờng, hm Bessel v bin i Fourier nhanh (Fast Fourier Transform FFT). Ngụn ng lp trỡnh: L mt ngụn ng bc cao liờn quan n ma trn v mng. Trong MATLAB cú y nhng c trng ca mt ngụn ng lp trỡnh bao gm cỏc lnh r nhỏnh, cỏc hm, cu trỳc d liu, nhp/xut d liu, v cỏc c tớnh liờn quan n lp trỡnh hng i tng (object- oriented programming). ho: L mt tp hp cỏc cụng c biu din ma trn v vector bng ho. Bờn cnh cỏc cụng c mc thp th hin d liu dng 2 chiu v 3 chiu, x lý hỡnh nh tnh, nh ng cũn cú cỏc cụng c mc cao dựng to ra cỏc biu din ho theo ý ca ngi s dng cng nh to ra cỏc giao din ho ngi s dng. 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 lm vic 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: GVHD: Th.s Lu Th Bớch Hng 5 Bi tp ln X lý nh m trong Matlab + 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. Mt s khỏi nim c bn 1.4.1. Mt s phớm chuyờn dng v lnh thụng dng 1.4.1.1. Cỏc phớm thụng dng - phớm hoc Ctrl + P : gi li cỏc lnh ó thc hin trc ú. - phớm hoc Ctrl + n: gi li lnh va thc hin trc ú. - phớm hoc Ctrl + f: chuyn con tr sang bờn phi mt ký t. - phớm ơ hoc Ctrl + b: chuyn con tr sang trỏi mt ký t. GVHD: Th.s Lu Th Bớch Hng 6 Bài tập lớn Xử lý ảnh mờ trong Matlab - 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: * GVHD: Th.s Lưu Thị Bích Hương 7 Bài tập lớn Xử lý ảnh mờ trong Matlab • Chia phải \ • Chia trái : / • Lũy thừa : ^ • Phép gán : = GVHD: Th.s Lưu Thị Bích Hương 8 Bài tập lớn Xử lý ảnh mờ trong Matlab 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'); GVHD: Th.s Lưu Thị Bích Hương 9 Bài tập lớn Xử lý ảnh mờ trong Matlab 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 GVHD: Th.s Lưu Thị Bích Hương 10 [...]... 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 GVHD: Th.s Lưu Thị Bích Hương 11 Bài tập lớn Xử lý ảnh mờ trong Matlab + Làm mờ ảnh và thêm...Bài tập lớn Xử lý ảnh mờ trong Matlab - 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... 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 GVHD: Th.s Lưu Thị Bích Hương 12 Bài tập lớn Xử lý ảnh mờ trong Matlab Tà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 GVHD: Th.s Lưu