MatLab (Matrix Laboratory) là một ngôn ngữ lập trình cấp cao dạng thông dịch, được phát triển bởi MathWorks. Matlab được ứng dụng để giải quyết các bài toán khác nhau đặt biệt là các hệ phương trình tuyến tính, phi tuyến và đặc biệt là các bài toán ma trận với kết quả nhanh chóng và chính xác. Matlab là một công cụ mạnh và đáp ứng được cho nhiều lĩnh vựng đa dạng như các ngành về kỹ thuật như điện, điện tử, vật lý, hóa học v.v... cho đến các ngành về kinh tế như thống kê, kế toán v.v......
Chương TỔNG QUAN VỀ CÔNG CỤ MATLAB 1.1 Giới thiệu .5 1.2 Sử dụng biến matlab .6 1.2.1 Quy cách đặt tên .6 1.2.2 Véc tơ matrận .6 1.3 Một số lệnh thông dụng Matlab 1.4 Các toán tử hàm 10 1.4.1 Các toán tử hàm .10 1.4.2 Các toán tử hàm thao tác với ma trận 10 1.5 Sử dụng đồ thị Matlab 12 1.5.1 Đồ thị hệ tọa độ phẳng 12 1.5.2 Đồ thị không gian ba chiều 14 1.6 Lập trình Matlab 16 1.7 Matlab GUI 17 1.7.1 Môi trường làm việc .17 1.7.2 Thuộc tính điều khiển 18 1.7.3 Viết kiện cho điều khiển 19 1.7.4 Debug Matlab 20 1.7.5 Vẽ đồ thị - sử dụng component AXES 20 1.7.6 Điều khiển Toggle – nút bấm trạng thái .21 1.7.7 Điều khiển Slider – trượt .21 1.8 Bài tập chương 21 Chương TÍN HIỆU RỜI RẠC 23 2.1 Khái niệm tín hiệu rời rạc lấy mẫu tín hiệu 23 2.2 Các tín hiệu sở 23 2.2.1 Dãy xung đơn vị 23 2.2.2 Dãy nhảy bậc đơn vị .24 2.2.3 Dãy tín hiệu hình sin .26 2.2.4 Dãy e-mũ phức .27 2.3 Các phép tốn tín hiệu 28 2.3.1 Phép dịch chuyển 28 2.3.2 Phép nhân, cộng tín hiệu .29 2.3.3 Phép nhân chập tín hiệu .30 2.4 Phương trình sai phân hệ số 30 2.5 Tín hiệu hai chiều (ảnh số) 31 2.5.1 Biểu diễn ảnh 31 2.5.2 Đọc ảnh, hiển thị lưu ảnh 32 2.5.3 Cải thiện tương phản ảnh 34 2.5.4 Tạo ảnh nhị phân từ ảnh cho 35 2.6 Bài tập chương 35 Chương PHÉP BIẾN ĐỔI FOURIER 38 3.1 Biến đổi Fourier tín hiệu rời rạc 38 3.1.1 Định nghĩa 38 3.1.2 Các phương pháp thể X(ejω) 39 3.1.3 Tính chất quan trọng X(ejω): 40 3.2 Các tính chất biến đổi Fourier .42 3.2.1 Tuyến tính .42 3.2.2 Tính chất trễ 43 3.2.3 Trễ tần số 43 3.2.4 Liên hợp phức .45 3.2.5 Nhân chập .45 3.2.6 Tích đại số 45 3.3 Phép biến đổi Fourier nhanh 45 3.4 Biểu diễn hệ thống rời rạc miền tần số liên tục 47 3.4.1 Đáp ứng tần số 47 3.4.2 Các lọc số lý tưởng 49 3.5 Phép biến đổi Fourier tín hiệu hai chiều 52 3.5.1 Phép biến đổi Fourier 52 3.5.2 Phép lọc miền tần số 55 3.6 Bài tập chương 57 Chương BIỂU DIỄN HỆ THỐNG VÀ TÍN HIỆU RỜI RẠC TRONG MIỀN Z 60 4.1 Phép biến rổi Z hai phía .60 4.2 Một số tính chất biến đổi Z 61 4.2.1 Tính tuyến tính .61 4.2.2 Dịch mẫu – tính chất trễ 61 4.2.3 Dịch tần số 62 4.2.4 Biến số đảo 62 4.2.5 Liên hợp phức .62 4.2.6 Tích hai dãy 62 4.2.7 Tích chập hai dãy 62 4.3 Biến đổi Z số dãy 63 4.4 Biến đổi Z ngược 63 4.5 Hàm truyền đạt hệ thống rời rạc 66 4.6 Bài tập chương 68 4.6.1 Bài tập sinh viên tự giải 69 Chương BỘ LỌC SỐ .71 5.1 Phân tích mạnh lọc FIR đơn giản 71 5.1.1 Mạch lọc FIR thông thấp 71 5.1.2 Mạch lọc FIR thông cao .73 5.2 Mạch lọc số IIR 74 5.2.1 Mạch lọc IIR thông thấp .74 5.2.2 Mạch lọc IIR thông cao 75 5.2.3 Mạch lọc IIR thông dải 76 5.2.4 Mạch lọc IIR chặn dải 77 Chương XỬ LÝ ẢNH TRONG MATLAB .78 6.1 Nâng cao chất lượng ảnh xử lý histogram 78 6.1.1 Phép dãn Histogram sử dụng imtool Matlab 78 6.1.2 San phẳng (cân bằng) histogram 79 6.2 Phép lọc ảnh miền không gian 80 6.2.1 Phép lọc tuyến tính .80 6.2.2 Lọc phi tuyến 83 6.2.3 Khôi phục ảnh .86 6.3 Tách biên ảnh .87 Chương TỔNG QUAN VỀ CÔNG CỤ MATLAB 1.1 Giới thiệu MatLab (Matrix Laboratory) ngôn ngữ lập trình cấp cao dạng thơng dịch, phát triển MathWorks Matlab ứng dụng để giải toán khác đặt biệt hệ phương trình tuyến tính, phi tuyến đặc biệt tốn ma trận với kết nhanh chóng xác Matlab cơng cụ mạnh đáp ứng cho nhiều lĩnh vựng đa dạng ngành kỹ thuật điện, điện tử, vật lý, hóa học v.v ngành kinh tế thống kê, kế toán v.v Cửa sổ làm việc Matlab bao gồm cửa sổ là: Cửa sổ lệnh (Command Window), cửa sổ thư mục – vùng làm việc (Current Directory – Workspace) cửa sổ chứa tập lệnh sử dụng (Command History) Matlab cho phép tính tốn số, tính tốn ma trận, vẽ đồ thị hàm số để biểu diễn thông tin dạng 2D hay 3D Matlab chứa toolbox, gói chương trình (thư viện) sử dụng cho lĩnh vực đa dạng như: xử lý tín hiệu, nhận dạng hệ thống, xử lý ảnh, mạng nơron, tối ưu hóa v.v… Matlab giao tiếp với chương trình và ngơn ngữ khác Matlab gọi hàm viết C hay Java 1.2 Sử dụng biến matlab 1.2.1 Quy cách đặt tên Cũng giống ngôn ngữ lập trình khác, Matlab có quy định riêng cách đặt tên biến: • Tên biến phải từ, không chưa dấu cách, tên biến tối đa 31 ký tự • Tên biến phân biệt chữ hoa chữ thường • Tên biến bắt đầu chữ • Ký tự dấu chấm “.” không sử dụng để đặt tên biến Trong Matlab có biến đặc biệt bảng sau: Các biến đặc biệt ans pi esp inf NaN nan i j realmin realmax Giá trị Biến mặc định trả kết số pi Số nhỏ lớn Để số vô Để số ko xác định kết 0/0 Số phức, i=j=sqrt(-1) Số dấu chấm động nhỏ (2-1022 = 2.2251e-308) Số dấu chấm động lớn (21024 = 1.7977e+308) 1.2.2 Véc tơ matrận Các tốn Matlab thơng thường quy việc tính tốn xử lý ma trận Các biến, liệu Matlab coi ma trận thực phức Ví dụ, giá trị vơ hướng coi mà trận có kích thước 1x1, vector cột có cột, véc tơ hàng, hay chuỗi số ma trận có hàng Một ma trận có kích thước (m x n) Matlab ma trận có m hàng n cột Ví dụ, tạo ma trận Matlab: >> M=[3 ; 4] M = Như giá trị nhập gán cho thành phần ma trận, phần tử cột cách dấu cách (space) dấu phảy, Các hàng cách dấu “;” Về cách đánh số, Matlab, phần tử đánh số từ Xét ví dụ trên: >> M(1,1) ans = >> M(2,3) ans = Xâu ký tự cúng gán vào phần tử ma trận, nhiên số ký tự hàng phải Ví dụ: >> M=['John','Peter';'David','Joe'] ??? Error using ==> vertcat All rows in the bracketed expression must have the same number of columns Ví dụ: >> M=['John','pete21';'adam3','ever4'] M = Johnpete21 adam3ever4 M ma trận chứa ký tự xâu, phần tử ma trận ký tự xâu Ví dụ: >> M(1,1) ans = J >> M(2,2) ans = e Trong trường hợp muốn tạo vector, giá trị cách ví dụ (1,2,3,4,5,6…20) sử dụng cơng thức: M=(start:step:end) Ví dụ: >> M=(1:2:10) M = Trong trường hợp step=1, ta sử dụng cơng thức thu gọn: M=(start:end) Ví dụ: >> M=[1:3;4:6] M = Kích thước ma trận thay đổi, xét ví dụ ta gán M(3,3)=1, ta có: >> M(3,3)=1 M = Tương tự ma trận mở rộng kích thước cách gộp ma trận lại Ví dụ: >> N=ones(3) N = 1 1 1 1 1 1 >> M=[M,N] M = 1 1 1 1 Hoặc: >> M=[M;N] M = 1 1.3 Một số lệnh thơng dụng Matlab • clc: Xóa hình cửa sổ lệnh • who: xem tên biến khơng gian làm việc Matlab Ví dụ: >> who Your variables are: A M N • whos: xem chi tiết biến Ví dụ: >> whos Name A Size Bytes 1x10 80 Class double array M N 6x3 3x3 144 72 double array double array Grand total is 37 elements using 296 bytes • clear: Xóa biến nhớ Matlab • help: yêu cầu giúp đỡ 1.4 Các toán tử hàm 1.4.1 Các toán tử hàm Tương tự máy tính đơn gản thơng thường, Matlab thực phép toán đơn giản, cụ thể bảng đây: Toán tử Phép cộng Phép trừ Phép nhân Phép chia Phép lũy thừa Chuyển vị ma trận Các toán tử quan hệ Các toán tử logic Ký hiệu + * / \ ^ ' =, >, =, > h=1/10*[1 1; 1; 1 1] Ta lọc hàm mũ 1 1 1 10 1 1 Để lọc ảnh sử dụng mặt nạ trên, Matlab người ta sử dụng hàm imfilter, cú pháp sau: >> imfilter(A,h) Trong đó: A: ma trận chứa liệu điểm ảnh H: mặt nạ lọc Xét ảnh đầu vào biểu diễn ảnh A >> I = imread('coins.png'); >>imshow(I) Lọc ảnh với mặt nạ h >> h =fspecial(‘average’) h = 0.1111 0.1111 0.1111 0.1111 0.1111 0.1111 0.1111 0.1111 0.1111 Lọc ảnh I sử dụng mặt nạ lọc h >> I2 = imfilter(I,h); >> imshow(I2) Chú ý sử dụng phép lọc, liệu bên ảnh tính Khi ảnh sau sử dụng phép lọc thường có viền đen Để khơng xuất viền đen người ta thường thêm tham số cậu lệnh: >> I3 = imfilter(I,h,'replicate'); Khi đó: vùng ảnh biên chép, sau tiến hành phép nhân chập 6.2.2 Lọc phi tuyến Mục đích lọc phi tuyến giảm nhiễu xung Khác với lọc tuyến tính, lọc phi tuyến coi kết điểm ảnh tổ hợp tuyến tính điểm lân cận Đặt cửa sổ lọc có xếp chồng lên ảnh cho điểm trung tâm cửa sổ trùng với điểm xét Ta thu a(K) giá trị mức xám Sắp xếp giá lại giá trị a(K) thu theo thứ tự độ lớn tăng dần Sau tính giá trị điểm ảnh theo quan hệ: L Y (m, n) = ∑ a( k ) w(k ) k =1 Trong w(k) giá trị hệ số lọc cửa sổ w tương ứng với a(k) Một số lọc hạng bậc: • Lọc trung vị (Median tuckey): wk = wk = if if k = ( L + 1) / k ≠ ( L + 1) / Kích thước cửa sổ không thiết phải vuông, tùy thuộc vào ảnh ta chọn cửa sổ phù hợp • Lọc co giãn (erosion - dilation): Bộ lọc co: wk = wk = if if k =1 k ≠1 wk = wk = if if k=L k≠L wk = wk = if if k=r k≠r Bộ lọc giãn: • Lọc hạng (bậc) r: • Bộ lọc k láng giềng gần Mục đích nhằm làm giảm nhiễu xung Sử dụng cửa sổ lọc bao gồm k phần tử, có dạng ma trận, trình lọc gồm bước: a Đặt cửa sổ lọc vị trí quan tâm, phần tử xét có láng giềng b Tính giá trị trung bình k phần tử láng giềng ta M k, sử dụng phép nhân chập Mk = α = r p ∑ ∑ H (k , l ) X (m − k , n − l ) k = − rl = − p c Xác định điểm ảnh đầu α (m, n) Y (m, n) = X (m, n) if if X(m, n) − α (m, n) ≥ θ X(m, n) − α (m, n) < θ Trong θ ngưỡng tùy ý, thường 10% đến 15% Mk Trong Matlab sử dụng hàm ordfilt2 để thực phép lọc phi tuyến Với cú pháp I2= ordfilt2(I1, order, domain) Trong I1 I2 ảnh trước sau phép lọc, order vị trí lấy giá trị miền domain Giả sử muốn lấy phần tử nhỏ lân cận mn, ta dùng lệnh: g=ordfilt2(f,1,ones(m,n)); Hoặc muốn lấy phần tử lớn nhất: g=ordfilt2(f,m*n,ones(m,n)); Một trường hợp đặc biệt lọc hạng lọc trung vị, phần tử chọn phần tử xếp hạng Bộ lọc thường sử dụng thực tế g=ordfilt2(f,median(1:m*n),ones(m,n)); Matlab cung cấp hàm medfilt2 để thực lọc trung vị Ví dụ: I = imread('eight.tif'); J = imnoise(I,'salt & pepper',0.02); K = medfilt2(J); imshow(J), figure, imshow(K) Kết quả: Hình thứ ảnh chụp bị nhiễu salt and pepper Sử dụng lọc trung trung vị cho ta kết hình b, ảnh loại bỏ hồn tồn nhiễu 6.2.3 Khôi phục ảnh Khôi phục ảnh tập trung vào việc loại bỏ hay giảm thiểu biến dạng xảy trình thu nhận ảnh Sự biến dạng ảnh bao gồm: • Nhiễu: sai khác giá trị pixel, • Ảnh hưởng quang học: mở việc chuyển động camera Ta có dạng tổng quát ảnh bị biến dạng: g(x,y) = f(x,y)*h(x,y) + n(x,y) • Nhiễu muối tiêu Trong Matlab để tạo nhiễu muối tiêu ta sử dụng hàm imnoise: I2= imnoise(I1,'salt & pepper') • Nhiễu gaussian Để tạo nhiễu Gaussian t = imnoise(image,’gaussian’) Các phương pháp để khơi phục ảnh bao gồm • Sử dụng lọc trung bình • Bộ lọc hạng • Bộ lọc chắn dải • Bộ lọc thơng dải 6.3 Tách biên ảnh Ý tưởng đằng sau tách biên tìm nơi ảnh có cường độ thay đổi nhanh, sử dụng hai tiêu chuẩn tổng quát sau: • Tìm nơi đạo hàm bậc cường độ sáng có biên độ ngưỡng • Tìm nơi đạo hàm bậc hai cường độ sáng có thay đổi qua mức Trong Matlab ta sử dụng hàm edge, cú pháp I2 = edge (I1,'method') Trong Trong đo'method' gồm : Sobel, Prewitt, Roberts, Cany v.v Xét ví dụ: I= imread('rice.tif'); BW1 = edge(I,'prewitt'); BW2 = edge(I,'canny'); imshow(BW1) figure, imshow(BW2) Kết quả: ... sin(x*x)');xlabel('X');ylabel('Y'); Bài Viết chương trình Matlab có nút bấm, để vẽ đồ thị Chương TÍN HIỆU RỜI RẠC 2.1 Khái niệm tín hiệu rời rạc lấy mẫu tín hiệu Tín hiệu biểu diễn vật lý thơng tin, tín hiệu nhìn thấy sóng... dụ trên: khoảng N=2π/0.1π=20 tín hiệu lặp lại, tức x[n]=x[n+20] 2.3 Các phép tốn tín hiệu Xử lý tín hiệu số sử dụng phép tốn tác động lên tín hiệu lối vào để tạo tín hiệu Về mặt công thức, ta sử... tới mắt, tín hiệu nghe thấy biến đổi áp suất không khí truyền thới tai Về mặt tốn học tín hiệu biểu diễn hàm hay nhiều biến số độc lập Trong lĩnh vực xử lý tín hiệu số, làm việc với tín hiệu rời