2.3 Xuất Nhập Qua Cổng Nối Tiếp Trong MatLab: Matlab hổ trợ xuất nhập qua cổng nối tiếp chuẩn RS232 để giao tiếpmáy tính với các thiết bị như modem, máy in, các thiết bị đo lường điềukhi
Trang 1PHẦN A
CƠ SỞ LÝ THUYẾT
Trang 2CHƯƠNG I DẪN NHẬP1.1 Đặt Vấn Đề:
Có thể nói tất cả những gì mà con người tạo ra đều mang một ý nghĩathiết thực nào đó, dù lớn hay nhỏ nhưng nó cũng góp phần vào sự phát triểncủa nhân loại Xu hướng phát triển sẽ góp phần làm cho xã hội phát triểnhơn, những ứng dụng của các đề tài nghiên cứu đều chúng mình điều đó MatLab cũng không ngoại lệ, với những công cụ dễ sử dụng và gần gủivới con người, góp phần tạo nên nhiều thành quả ứng dụng như: điện tử,
sinh học, môi trường Đi theo xu hướng đó, chúng em khảo sát đề tài: HỆ THỐNG BẢO MẬT – với việc sử dụng MatLab làm công cụ để nhận
dạng mặt người đồng thời xuất dữ liệu ra cổng COM để tiến hành đónghoặc mở cửa ra vào
1.2 Tầm Quan Trọng Của Đề Tài:
- Việc thực hiện đề tài này, chúng em hiểu thêm nhiều điều lý thú vềchuyên ngành mà chúng em đang học, và điều đó có thể là một động lực,kiến thức căn bản để làm việc sau khi ra trường
- Việc làm ra của cải vật chất thì rất khó vì vậy phải biết giữ gìn và biếtquý trọng nên với đề tại này có thể thêm một công cụ giúp chúng ta gìn giữvật chất một cách an toàn
1.4 Mục Đích Nghiên Cứu:
Trang 3- Để hiểu sâu hơn những kiến thức đã học, kiểm tra kiến thức lý thuyếtvới kiểm nghiệm thực tế.
- Đồng thời chúng em cũng trang bị cho mình một hệ thống kiến thứcriêng nhằm phục vụ lợi ích cá nhân
Trang 4CHƯƠNG 2 TỔNG QUAN VỀ MATLAB2.1 MATLAB Là Gì?
- MATLAB là ngôn ngữ lập trình cấp cao cho mục đích tính toán kỹthuật, chương trình tích hợp tính toán, đồ hoạ và lập trình trong một môitrường dễ sử dụng nơi mà tất cả các vấn đề và lời giải được biểu diễn dướidạng ghi chú toán học
- MATLAB là một hệ thống tương tác mà tất cả các phần tử dữ liệu cơbản là một mảng không yêu cầu về mặt kích thước Đây là một thuận lợicho phép người sử dụng giải quyết các bài toán trong kỹ thuật đặc biệt làcác công thức được xây dựng từ ma trận hay vector
2.2 Hệ Thống Trong Chương Trình MATLAB:
- Development Environment: Tập hợp các công cụ và những tiện ích chophép người dùng sử dụng các hàm và file Matlab Phần lớn các công cụ này
là giao tiếp người dùng bao gồm: Matlab Desktop và Command Window,Command History, Edit and Debugger, Workspace, trình duyệt hổ trợ sửdụng help
- The Matlab Mathematical Function Library: Đây là thư viện tập hợp cácgiải thuật tính toán được tập hợp trong các hàm từ cơ bản như: sum, sin,cosine, số phức cho đến các hàm phức tạp hơn như: nghịch đảo ma trận, trịriêng và vecto riêng của ma trận, biến đổi Fourier,
- Lập trình trong môi trường Matlab: Lập trình với Matlab Matlab làngôn ngữ lập trình cấp cao thực thi theo các đoạn lệnh, các hàm, cấu trúc
dữ liệu, cho phép xây dựng các chương trình từ đơn giản, nhỏ cho đến cácchương trình lớn, phức tạp
- Graphics: Matlab đã được mở rộng các khả năng cho việc thể hiệnvector và ma trận dưới dạng đồ thị cũng như ký hiệu và in ấn chung
Trang 5Matlab cung cấp các hàm nâng cao cho việc thể hiện dữ liệu hai, ba chiều,
xử lý ảnh, chuyển động, đồ thị
- The Matlab Application Program Interface (API): Đây là thư viện chophép người dùng tạo ra những chương trình bằng ngôn ngữ C hoặc Fortrantương tác với Matlab
2.3 Xuất Nhập Qua Cổng Nối Tiếp Trong MatLab:
Matlab hổ trợ xuất nhập qua cổng nối tiếp chuẩn RS232 để giao tiếpmáy tính với các thiết bị như modem, máy in, các thiết bị đo lường điềukhiển Một khung dữ liệu truyền đi ở chân TXD và nhận ở chân RXD gồm:
- Start bit: giá trị 0 ở điện áp > 3V
- Data bit: với LSB đầu tiên, bít 0 tương ứng qua cổng nối tiếp, n bít 1tương ứng mức điện áp < 3V
- Parity bit ( nếu có)
- Một, một rưỡi hay hai stop bit có giá trị bằng 1, bề rộng 1 bit là:
T=1/bardrate
- Hổ trợ cho việc truyền nhận là các chân DTR, RTS xuất ra và các chânDSR, CTS, RI, CD nhận mức 1 hay on ương ứng với mức điện áp > 3V,còn mức 0 hay off tương ứng với điện áp < -3V
- Lệnh obj = serial(’port’,’PropertyName’,PropertyValue, ) tạo đối tượngcổng nối tiếp, port là tên cổng COM1, COM2 ,Property name là các thuộctính của cổng
- Lệnh set dùng để đặt giá trị cho các thuộc tính còn get dùng để nhận cácgiá trị của thuộc tính
- Lệnh fopen dùng để mở cổng còn fclose đóng cổng, delete loại bỏ đốitượng serial
- Lệnh fprintf xuất một chuỗi ký tự, fwrite xuất chuỗi nhị phận
- Lệnh fscanf nhận một chuỗi ký tự và fread nhận chuỗi nhị phân
Trang 62.4 Toolbox Bắt ảnh Và Xử Lý ảnh:
2.4.1 Nhiệm vụ của Toolbox:
Image Acquisition Toolbox và Image processing là tật hợp các hàmcủa MATLAB có nhiệm vụ thu thập và xử lý hình ảnh số từ các thiết bị thuhình Cụ thể là:
- Thu nhập hình ảnh từ các thiết bị thu hình khác nhau, từ loại chuyêndùng đến loại rẻ tiền như Webcam ( giao tiếp qua cổng USB)
- Trình chiếu (preview) luồng dữ liệu video từ thiết bị thu hình
- Trích hình ảnh từ luồng dữ liệu video
- Thiết lập các callback cho các sự kiện khác nhau
- Chuyển dữ liệu hình ảnh vào không gian workpace của Matlab để xử lýảnh tiếp theo
2.4.2 Các bước thu nhập cơ bản với Toolbox:
Bước 1:
- Gắn thiết bị thu hình vào máy.
- Cài đặt driver (trình điều khiển) cho thiết bị, (được cho bởi nhà sản
- Ta cần chỉ định cho Matlab biết phần cứng nào dùng để lấy dữ liệu ( vì
có thể có nhiều camera kết nối với PC)
- Gõ lệnh imaqhwinfo để biết tên các loại thiết bị có thể dùng
- Chỉ định thiết bị: Tuỳ vào loại thiết bị (adaptor name), mỗi thiết bị cùngloại gắn vào PC được gắn đánh số ID, thiết bị thứ nhất có deviceID = 1,thiết bị thứ 2 có deviceID=2
Trang 7- Để liệt kê xem loại winvideo có bao nhiêu thiết bị gắn vào máy tính, tacũng dùng lệnh imaqhwinfor với đối số là winvideo:
Bước 3: Tạo đối tượng đại diện vào máy để làm đề tài này.
- Để tạo luồng dữ liệu video, dùng lệnh videoinput
>> vid = videoinput('winvideo',1)
Summary of Video Input Object Using 'USB PC Camera (SN9C120)'.Acquisition Source(s): input1 is available
Acquisition Parameters: 'input1' is the current selected source
10 frames per trigger using the selected source
'RGB24_320x240' video data to be logged upon START
Trang 8Grabbing first of every 1 frame(s).
Log data to 'memory' on trigger
Trigger Parameters: 1 'immediate' trigger(s) on START
Status: Waiting for START
0 frames acquired since starting
0 frames available for GETDATA
Bước 4: Hiện thị luồng video trên màng hình để xem thử.
- Để xem trước luồng dữ liệu video, dùng lệnh preview
>> preview(vid)
- Màn hình lúc này hiện lên cửa sổ video của đối tượng vid
- Nếu muốn kết thúc xem, dùng lệnh stoppreview Hoặc để đóng cửa sổpreview, dùng lệnh closepreview(vid)
Bước 5: Lấy một khung hình ảnh và lưu thành file đồ hoạ.
- Để lấy 1 ảnh vào xử lý ta sử dụng lệnh getsnapshot
- Để lưu ảnh thành file đồ hoạ ta dùng lệnh imwrite
2.4.3 Các bước giao tiếp và thu nhận dữ liệu qua matlab:
Matlab xuất nhập dữ liệu qua cổng nối tiếp dùng chuẩn RS232 đểgiao tiếp máy tính với các thiết bị như: modem, máy in, các thiết bị đo
Trang 9lường điều khiển Một khung dữ liệu truyền đi ở chân TXD và nhận ở chânRXD.
Bước 1: Gắn thiết bị giao tiếp qua cổng COM.
Bước 2: Cài đặt các tính năng thu nhận dữ liệu của matlab.
- Các tính năng chính của cổng nối tiếp
- Lệch serial dùng để tạo đối tượng cổng nối tiếp
- Lệch set dùng để đặt giá trị cho các thuộc tính của cổng COM
- Lệch get dùng để nhận các giá trị của thuộc tính
- Lệch fopen dùng để mở cổng COM
- Lệch fclose dùng để đóng cổng COM
- Lệch delete loại bỏ đối tượng serial
- Lệnh fwrite dùng để xuất chuỗi nhị phân
- Lệch fread dùng để nhận chuỗi nhị phân
- BandRate: ấn định vận tốc truyền là 1200
- DataBits: {8}
- Parity { none}
- Stopbit {1}
2.4.4 Toolbox xử lý ảnh ( Image Processing Toolbox):
2.4.4.1 Loại file dữ liệu của ảnh:
- BMP ( Microsoft Windows Bitmap)
- HDF (Hierarchical Data Format)
- ICO ( Windows Icon Resources)
- JPG, JPEG( Joint Photographic Experts Group)
- PCX (Paintbrush)
- PNG(Porable Network Graphics)
- TIFF ( Tagged Image File Format)
- XWD ( X Window Dump)
Trang 102.4.4.2 Các hàm đọc và lưu ảnh:
- Axis: vẽ trục.
- Image, imshow: hiển thị ảnh
- Imagese: sắp xếp dữ liệu và hiển thị như ảnh
- Imread: đọc ảnh từ file đồ họa
- Immovie: tạo phim từ loạt nhiều khuôn hình
- Imwrite: cất ảnh vào file đồ họa
- Imfinfo: lấy thông tin ảnh từ file
- Ind2rgb: đổi ảnh có chỉ số sang ảnh RGB
MatLab coi ảnh như một ma trận hai chiều, mỗi phần tử là một phần
tử hình pixel, do đó ta có thể xử lý hình như đối với ma trận, các phần tử
ma trận có thể là double (64 bit), uint 16 (16 bit), uint 8 (8 bit) Ảnh indexđược biễu diễn bởi hai ma trận, một ma trận dữ liệu ảnh X và một ma trậnmàu (còn gọi là bản đồ màu) Ma trận có thể là kiểu uint8, uint16, double
Ma trận màu là một ma trận kích thước m x 3 gồm các thành phầnthuộc kiểu double có giá trị trong khoảng [0 1] Mỗi hàng của ma trận xácđịnh thành phần red, green, blue của một màu trong tổng m màu được sửdụng trong ảnh Gía trị của một phần tử trong ma trận dữ liệu ảnh cho biếtmàu của điểm ảnh đó nằm ở hàng nào trong ma trận
Hình 2.1: Biểu diễn ảnh index
Trang 112.5 Các Hàm Xử Lý Ảnh Cơ Bản Trong MatLab:
Đôi khi ảnh bị mờ, không nét, bị nhiễu cần phải xử lý hoặc cần phảitách một chi tiết nào đó ra khỏi ảnh Sau đây là một số hàm xử lý ảnh chophép thực hiện các công việc này một cách dễ dàng Chú ý là các hàm nàychỉ thực hiện độc lập, còn muốn thực hiện thời gian thực cần phải dùng cácngôn ngữ lập trình như VB, Delphi, ta cũng có thể biến đổi các hàm xử lýảnh m ra hàm c để giảm bớt thời gian lập trình, còn có một cách để xử lýthời gian thực là lập trình xử lý trong MATLAB, sau đó dùng ToolboxCom Builder biến chương trình thành COM Object rồi ghép vào các ngônngữ lập trình
2.5.1 Đổi màu và loại ảnh:
- rgb2gray: đổi ảnh màu RGB ra ảnh cường độ xám.
- gray2ind: đổi ảnh trắng đen (gray scale) thành ảnh indexed.
- im2bw: đổi sang ảnh nhị phân.
2.5.2 Xử lý hình học:
- Imcrop(A), imcrop(A.rec): xén ảnh A theo hình chữ nhật định bởi con
chuột hay bởi thông số kèm theo trong hàm
- Imresize (A, m, mothod): thay đổi kích thước ảnh A theo tỉ lệ m và theo
phương pháp nội suy method
- Imrotate (A, angle, method): quay ảnh A một góc angle và dùng phương
pháp nội suy method
Trang 122.5.4 Phân tích ảnh:
- Imhist (X, map): vẽ histogram của ảnh chỉ số X theo bảng màu Cường
độ ảnh từ 0 (đen) đến 255 (trắng) được chia thành n khoảng, histogram là
đồ thị cho biết số pixel có cường độ nằm trong khoảng tương ứng
- Histeq: cân bằng histogram ảnh cường độ để tăng độ tương phản.
- Edge: tách biên ảnh dùng các thuật toán Sobel, Prewitt, Canny, Laplace,
…
- Qtdecomp, qtgeblk, qtsetblk: các lệnh dùng trong phân vùng ảnh
quadtree
2.5.5 Biến đổi ảnh
- Fft2: biến đổi Fourier hai chiều nhanh
- Ifft2: biến đổi ngược hai chiều nhanh
- Dct2: biến đổi cosin rời rạc hai chiều
- Idct2: biến đổi ngược cosin rời rạc
2.5.6 Đọc, ghi và hiển thị ảnh:
: X=A./B chia các phần tử tương ứng với nhau
- Luỹ thừa : X = A^2
Trang 132.5.9 Điều kiện switch:
- Cú pháp của switch như sau :
switch <biểu thức>
case n1 : <lệnh 1>
case n2 : <lệnh 2>
.case nn : <lệnh n>
otherwise : <lệnh n+1>
end
2.5.10 Điều kiện while:
- Vòng lặp while dùng khi không biết trước số lần lặp Cú pháp của nónhư sau:
Trang 14a = (b ==c) a là 1 nếu b bằng c
a = (b ~=c) a là 1 nếu b không bằng c
a = ~ b Logic bù: a bằng 1 nếu b bằng 0
a = (b & c) Logic AND: a là 1 nếu a = True và b = True
a = (b | c) Logic OR: a là 1 nếu a = True hoặc b = True
2.6 Tạo Giao Diện Người Dùng Nhờ Công Cụ GUIDE.
Giao diện người dùng (graphical user interface GUI) cho phép thựchiện các lệnh trong Matlab thông qua menu, nút nhấn tương tự như cácngôn ngữ Visual Basic Lập trình GUI được thực hiện nhờ công cụ GUIDE(GUI Development Environnment) hoặc bằng cách soạn một file M
2.6.1 Khởi động giao diện GUI:
- Mở phần mềm Matlab, gõ lệnh sau vào cửa số Command
>> guide
- Trong cửa sổ GUIDE Quick Start có nhiều lựa chọn theo một trong cáckhung mẫu sau:
Hình 2.1 Cửa số GUIDE
- Create New GUI: Tạo hộp thoại GUI mới theo một trong các loại sau:
- Blank GUI (Default): Hộp thoại GUI trống không có một điều
Trang 15- GUI with Uicontrols: Hộp thoại GUI với một vài uicontrol như
button, … Chương trình có thể chạy ngay
- GUI with Axes and Menu: Hộp thoại GUI với một uicontrol axes
và button, các menu để hiển thị đồ thị
- Modal Question Dialog: Hộp thoại đặt câu hỏi Yes, No
- Open Existing GUI: mở một project có sẵn.Trong hướng dẫn này, các
bạn tạo một project mới nên sẽ chọn Blank GUI
2.6.2 Cửa số GUI hiện ra:
Hình 2.2 Cửa số biên soạn GUI
Giao diện rất giống với các chương trình lập trình giao diện nhưVisual Basic, Visual C++, … Các bạn di chuyển chuột qua các biểu tượng
ở bên trái sẽ thấy tên của các thanh công cụ điều khiển Xin nói qua một vàicông cụ điều khiển hay dùng:
- Push Button: Là một nút nhấn, giống như nút Command Button trong
VB Là các nút bấm như nút OK, Cancel mà ta vẫn bấm
Trang 16- Toggle button:Là một nút bật giống như push button nhưng có hiện thịtrạng thái thay đổi mỗi khi nhấn nút.
- Radio Button : Nút nhỏ hình tròn để chọn lựa
- Check Box: Là hộp kiểm tra cho phép đưa vào các chọn lựa khi bấmchuột vào nó
- Edit Text: Là hộp văn bản đưa chuỗi ký tự vào đó
- Static Text: Dòng văn bản dùn để đặt nhãn, tiêu đề, hướng dẫn
- Pop-up Menu: menu sổ xuống trình bày một bảng các chọn lựa khi nhấpchuột vào
- List Box: Gồm một bảng các mục có thể lựa chọn
- Axes: Vẽ hệ trục
- Slider : Thanh trượt dùng để đưa giá trị vào trong một vùng giới hạn
- Run (Ctr + T) : nhấn vào để chạy chương trình mà ta đã viết Có lỗi làhiện ra ngày
- Align Object: dùng để làm cho các điều khiển sắp xếp gọn đẹp theo ýmình như cùng căn lề bên trái, …
- Grid and Rulers : dùng để cấu hình về lưới trong giao diện vì nó sẽ coigiao diện như một ma trận các ô vuông nhỏ, ta sẽ thay đổi giá trị này đểcho các điều khiển có thể thả ở đâu tùy ý cho đẹp
- Menu Editor : trình này để tạo menu cho điều khiển
- Tab Order Editor : sắp xếp Tab order là thứ tự khi ta nhấn phím Tab
- Gui Options : lựa chọn cho giao diện GUI
- Các bạn save dưới tên: “ TÊN”, khi đó đồng thời xuất hiện cửa sổ Editor
và đang mở file TÊN.m của bạn Trong thư mục bạn save sẽ có 2 file là:
- TUT01.fig : file này chứa giao diện của chương trình
- TUT01.m : file chứa các mã thực thi cho chương trình như các hàmkhởi tạo, các hàm callback
Trang 172.6.3 Thay đổi thuộc tính điều khiển:
Nhấp chuột vào component trong vùng layout để soạn tính chất củacomponent Ví dụ: Nhấn chuột vào Edit text, sẽ hiện ra cửa sổ PropertyInspector
- Tag: dùng để đặt tên cho component
- BackgroundColor: màu nền của component
- ForegroundColor: màu chữ trên component
- FontName, fontAngle,fontSize, fontWeight: các đặt tính font chữ trêncomponent
- String: văn bản hiển thị trên component
- Enable: cho phép component hoạt động hay không
- Visible: hiển thị component hay không
Hình 2.3 Cửa sổ thuộc tính
Trang 18- Quan trọng nhất đối với các component là callback, tức là hàm con màfile áp dụng M sẽ gọi khi ta tác động vào component Để soạn thảocallback ở cửa số layout nhấp chuột phải vào component muốn soạn thảosau đó chọn View callbacks -> callback ta sẽ vào màn hình soạn thảocallback cho component đó Lưu ý rằng các dòng lệnh sẽ được viết saudòng “ function tên component_callback(hobject,eventdata, handles) Saukhi soạn thảo xong ta lưu, lập tức Matlab sẽ lưu thành hai file có cùng tênnhưng khác nhau về phần mở rộng:
- File có phần mở rộng.fig chứa nội dung của giao diện
- File có phần mở rộng.m chứa những đoạn mã liên quan đến giaodiện
Trang 19CHƯƠNG 3 PHÂN TÍCH THÀNH PHẦN CHÍNH(PRINCIPAL COMPONENT ANALYSIS - PCA)
3.1 Sơ Lược Về PCA:
- Phân tích thành phần chính (Principal Component Analysis - PCA) đượctrình bày theo nhiều quan điểm khác nhau.Với các nhà thống kê cổ điển thìPCA là tìm các trục chính của ellipsoid nhiều chiều bao hàm đám mây sốliệu phân phối chuẩn nhiều chiều, các trục đó được ước lượng từ một mẫu n
cá thể, trên mỗi cá thể người ta đo p chỉ tiêu Người đầu tiên đưa ra kỹthuật này là H.Hotelling (1933), sau đó là T.W.Anderson (1958) vàA.M.Kshirsagar (1972)
- Với các nhà nhân tố học cổ điển thì kỹ thuật này là phương pháp phântích nhân tố trong trường hợp đặc biệt, khi các phương sai bằng không hoặcxấp xỉ bằng không Phương pháp này thường được sử dụng trong phân tíchtâm lý, do Horst (1965) và Harman (1966) đề xuất
- Sau cùng, theo quan điểm phổ biến hơn cả của các nhà phân tích số liệuthì PCA là một kỹ thuật biểu diễn các số liệu một cách tối ưu theo một tiêuchuẩn đại số và hình học đặc biệt Khi sử dụng kỹ thuật này người ta khôngđòi hỏi một giả thuyết thống kê hoặc một mô hình đặc biệt nào Quan điểmnày trở nên phổ biến từ khi có máy tính điện tử, và là quan điểm mới nhất.Những tư tưởng của phương pháp này do K.Pearson (1901) đề xuất Trongcông trình của C.R.Rao (1964) nội dung lý thuyết của phương pháp PCAđược trình bày khá đơn giản và rõ ràng
- Lĩnh vực ứng dụng của PCA rất rộng trong công nghiệp, nông nghiệp,kinh tế, khoa học cơ bản… với bảng số liệu mà các cột là các biến và cácdòng là các cá thể, trên đó đo giá trị của biến
- Trong trồng trọt, chẳng hạn người ta đo giá trị của một số biến (lượngphân bón các loại, chi phí vật chất và lao động, năng suất hoặc sản lượng)
Trang 20trên một số mảnh ruộng Trong tài chính gia đình, chặng hạn đó có thể làchi phí nội trợ ở các nơi mua bán khác nhau; còn trong kinh tế đất nước,chẳng hạn đó là chi phí, thu nhập trong công nghiệp, nông nghiệp, chi phítrong giáo dục, y tế và mức sống trung bình của người dân… ở các vùngkhác nhau của đất nước
- Với các bảng số liệu cồng kềnh phức tạp khó tổng hợp, và khó thấynhững thông tin chứa trong đó Vì vậy mục đích của PCA là rút ra thông tinchủ yếu chứa trong bảng số liệu bằng cách xây dựng một biểu diễn đơngiản hơn, sao cho trong biểu diễn đó đám mây số liệu thể hiện rõ nhất, màthông tin không bị sai lệch
- Khác với phân tích hồi qui và phân tích đường, ở đó có một biến cầngiải thích và nhiều biến giải thích, trong PCA vai trò các biến là như nhautrong phân tích Sau đó nếu quan tâm đến một biến nào đó, xem như biến
đó cần giải thích thì ta xét khoảng cách và góc giữa biến đó với các biếncòn lại Đặc biệt của phương pháp là quan sát các biến trên một số ít mặtphặng chính để phân tích
3.2 Phân Tích Thành Phần Chính (PCA):
- PCA được định nghĩa một cách toán học như sau: là quá trình biến đổituyến tính trực giao nhằm tìm ra các thành phần chính của dữ liệu Thànhphần chính của dữ liệu là tập hợp các hình chiếu của dữ liệu lên trục chínhcủa nó (hay là không gian con sinh ra dữ liệu ban đầu).Trục chính là trục điqua trọng tâm và “gần” đám mây dữ liệu nhất( đây là thành phần chình của
dữ liệu) và được tìm từng bước như sau:
X X
(3.1)
Trang 21Trong đó xij là các giá trị mà biến xjj= 1 , p; nhận trên cá thể i; i =
n
,
1 Các biến Xj là biến loại đại lượng, tức là xij là các số thực
- Ta có một đám mây n điểm trong không gian Rn, trong đó điểm xi; i =
Và gọi là điểm – cá thể i Không gian RP gọi là không gian các cá thể
- Tương tự, ta có không gian Rn các điểm – biến, trong đó:
XT
i = (x1j + x2j,….,xjp),j = 1 , p (3.3)tất cả có p điểm biến
- Giả sử các biến Xj đều được qui tâm, tức là mỗi giá trị xij của nó đềubằng giá trị ban đầu thứ i (i=1 ,n ) của biến Xj trừ đi trung bình x*j của
nó Khi đó: n1
n i ij
- Với p biến trong Rn Về ý nghĩa hình học đơn thuần thì hai biến “gầnnhau” nếu n tọa độ của chúng gần nhau Tuy nhiên, về ý nghĩa vật lý thì dothứ nguyên đo (đơn vị đo), nên bài toán sau đây đươc đặt ra: Làm sao tínhđược khoảng cách giữa hai biến, khi biến này là độ dài, còn biến kia làtrọng lượng của các cá thể ?
- Mặt khác, với cả các cá thể trong Rp, cũng như các biến trong Rn, câuhỏi đặt ra là: có phải chúng được gọi là “gần nhau” nếu mọi thành phần
Trang 22tương ứng của chúng gần nhau, hay chúng chỉ gần nhau với một số cặpthành phần, còn xa nhau với những cặp còn lại
- PCA giúp ta trả lời những câu hỏi đó Nội dung của nó là tìm trongRn(trong Rp) những không gian con (siêu phẳng) số chiều ít hơn “thâutóm” tốt nhất đám mây điểm – biến (điểm – cá thể), sao cho hình ảnh củađám mây số liệu được thể hiện một cách rõ ràng nhất trong đó, tức lànhững xấp xỉ đo trong không gian con phản ánh tốt nhất các khoảng cáchthực
- Từ đó, một mặt, có thể loại bỏ những biến không quan trọng, mặt khác,bằng cách phi thứ nguyên hóa các biến, ta xét được khoảng cách giữachúng Nếu biểu diễn đám mây điểm trong siêu phẳng một chiều, thì ta cầntìm đường thẳng gần đám mây nhất, và đám mây sẽ được biểu diễn bằnghình chiếu của các điểm trên đường thẳng đó Sự “gần gũi” của đám mâyvới đường thẳng được đo bằng quán tính của nó theo đường thẳng đó.Muốn vậy, trong không gian đang xét, cần xác định một tích vô hướng gắnvới một ma trận nào đó
- Vì quán tính là tổng bình phương khoảng cách từ các điểm đến đườngthẳng, nên quán tính càng nhỏ thì đường thẳng càng gần đám mây điểm, vàngược lại
Hình 3.1 Không gian đám mây điểm
Trang 23- Gọi trục chính thứ nhất là trục mà quán tính nhỏ nhất, tức là đường thẳngqua tâm gần đám mây điểm nhất
- Tìm tiếp trục chính thứ hai là trục qua tâm trực giao với trục chính thứnhất, và quán tính của đám mây theo nó nhỏ nhất Hai trục chính này tạothành mặt phẳng chính thứ nhất, mặt phẳng mà quán tính của đám mâytheo nó nhỏ nhất Khi đó đám mây điểm thể hiện trên nó rõ nhất so với mọimặt phẳng khác
- Tiếp tục, tìm trục chính thứ ba là đường thẳng qua tâm, trực giao với haitrục chính trên vả gần đám mây nhất sau hai trục chính thứ nhất và thứ hai.Với sự có mặt của trục này ta được thêm hai mặt phẳng chính nữa, đượctạo nên do trục 1 và trục 3, trục 2 và trục 3
- Nếu việc tìm các trục chính được tiến hành đến trục chính thứ q (q ≤ p,n) thì ta được một hệ q vector trực giao, tạo thành siêu phẳng (không giancon) q chiều, mà đám mây điểm thể hiện trên nó rõ nhất
u x
u x
T n T T
2 1 (3.6)
Trang 24là vector n chiều mà phần tử thứ i (i=1 ,n ) của nó là độ dài hình chiếu củavector xT
i trên Δ
Hình 3.2 Vector thành phần trình chiếu trên trục tọa độ
- Theo tiêu chuẩn bình phương nhỏ nhất, ta cần tìm:
2 1
min
n i
max
n i
Trang 25- Từ phương trình 3.7 và 3.8 ta có phương trình tương đương như sau:Tìm u1 sao cho:
uT
1 M0 u1 - (uT
1 u1 – 1) max (3.9)trong đó là nhân tử Lagrange
- Muốn vậy, phải có:
Trang 26Giá trị riêng lớn nhất λ1 của M0 bằng quán tính giải thích N bởiđường thẳng Δ1 gần đám mây điểm N nhất, và u1 là vector riêng của M0
nằm trên Δ1 Đường thẳng Δ1 là trục chính thứ nhất
Tìm tiếp trục chính thứ hai Δ2, trực giao Δ1, sao cho IN(Δ2) nhỏ nhất
Muốn vậy ta giải hệ:
1 2
2 2
2 0 2
u u
u u
u M u
T T T
Bằng phương pháp nhân tử Lagrange, ta buộc:
Nhân trái với u1, ta được: 2u1T M0u2 2 u1T u2 u1T u1 0
1 2
2 2
2 0 2
u u
u u
u M u
T T T
Với mọi j=1,2,… q-1Kết quả lại có λq là nghiệm của: |M0 - I| = 0
Tương tự ta có:I N j j, j=1 ,q
Chú ý: Thực ra, để tìm các trục chính chỉ cần dựa vào tính chất 1 của
ma trận đối xứng (vì ma trận phương sai – hiệp phương sai M0 đối xứng)
Trang 27Với q trục chính (q<p, n) ta lập được siêu phẳng F của RP, sao cho
IN(F) nhỏ nhất Siêu phẳng này có một cơ sở trực chuẩn là q vector riênggán với q giá trị riêng lớn nhất λ1≥ λ2 ≥….≥λq của Mo
3.3 Bài Toán Nhận Dạng Mặt Người Dùng Thuật Toán PCA:
Hơn một thập kỷ qua có rất nhiều công trình nghiên cứu về bài toánxác định khuôn mặt người từ ảnh đen trắng, xám đến ảnh màu như ngàyhôm nay Các nghiên cứu đi từ bài toán đơn giản, mỗi ảnh chỉ có mộtkhuôn mặt người nhìn thẳng vào thiết bị thu hình và đầu ở tư thế thẳngđứng trong ảnh đen trắng Cho đến ngày hôm nay bài toán mở rộng cho ảnhmàu, có nhiều khuôn mặt trong cùng một ảnh, có nhiều tư thế thay đổitrong ảnh Không những vậy mà còn mở rộng cả phạm vi từ môi trườngxung quanh khá đơn giản (trong phòng thí nghiệm) cho đến môi trườngxung quanh rất phức tạp (như trong tự nhiên) nhằm đáp ứng nhu cầu thật
sự của con người
3.3.1 Xác định khuôn mặt người:
- T là một ma trận kích thước M*NxP chứa tất cả ảnh trong csdl, mỗi ảnh
- Ta cần tìm Eigenface là những vector riêng của ma trận A*A’, những
ma trận A*A’ kích thước M*NxM*N quá lớn, ta sẽ tìm những vector riêng
cả ma trận A’*A kích thước PxP Ta sẽ tìm những vector riêng bằng hàmeig trong MatLab
- Giả sử v là một vector riêng của ma trận A’*A, khi đó A*v là vectorriêng của ma trận A*A’
- Tập hợp những vector riêng của ma trận A*A’ gọi là Eigenfaces
Trang 28i u u
- uk là vector riêng của AAT
- k là trị riêng tương ứng của AAT
- H là bức ảnh M x N suy ra H là vector M*N chiều K = H –m
- Xác định khuôn mặt giống nhau của cùng một người
- s= K K f là khoảng cách từ H đến không gian mặt
Trang 29- Như ta thấy nếu bức ảnh là khuôn mặt người thì hình chiếu sẽ khá giốngvới ảnh gốc, còn khi bức ảnh không phải là khuôn mặt thì hình chiếu sẽkhác ảnh gốc rất nhiều, do đó khoảng cách từ bức ảnh mặt người tới khônggian mặt sẽ nhỏ hơn rất nhiều so với khoảng cách từ bức ảnh không phảimặt người tới không gian mặt
- Cho bảng số liệu với rất nhiều cột và dòng, mỗi cột là một biến, mỗidòng là một cá thể, trên đó đo đồng thời giá trị các biến Ta cần biết mốiquan hệ giữa các biến, giữa các cá thể qua thể hiện rõ nhất trong một khônggian con số chiều ít hơn
1 5 1
3 2 6
5 4 1
2 3 2
1.6667 -
2.3333
1.3333 -
2.6667 1.3333
-0.6667 -
1.6667 -
2.3333
1.6667 0.6667
2.3333
-0.3333 -
0.6667 0.3333
-Theo công thức: Ai = Ti - m, i= 1….P, A =[A1 A2 … AP]
Bước 2: Ma trận phương sai – hiệp phương sai.
Trang 30, 1 3333 , 0
6667 , 1 6667 , 2 6667 , 1 6667 , 0 6667 , 0
3333 , 2 3333 , 1 3333 , 2 3333 , 2 3333 , 0
1,6667 -
2,3333
1,3333 -
2,6667 1,3333
-0,6667 -
1,6667 -
2,3333
1,6667 0,6667
2,3333 -
0,3333 -
0,6667 0,3333
4444 , 0 5556 , 13 1111 , 13
1111 , 5 1111 , 13 2222
, 18
Trong đó: A’ là ma trận chuyển vị của ma trận A
n
p p
a a
a
a a
a
a a
1 22
21
1 12
p
n n
a a
a
a a
a
a a
2 22
21
1 12
11
Bước 3: Quá trình tìm vector riêng và trị riêng:
- Phương trình phương sai và hiệp phương sai
0889 , 0 71111 , 2 6222 , 2
0222 , 1 6222 , 2 6444
, 3
,
1
0889 , 0 71111
, 2 6222 ,
2
0222 , 1 6222
, 2 6444
00243 , 0
94 , 5
3 2 1
Trang 31- Ứng với trị riêng 1 5 , 94 ta có phương trình:
, 5 1111 , 1 0889 , 0 0222
, 1
0889 , 0 94
, 5 71111 , 2 6222 , 2
0222 , 1 6222
, 2 94
, 5 6444 , 3
3 2 1
V V V
0 089 , 0 24 , 3 62 , 2
0 02 , 1 62 , 2 3 , 2
3 2
1
3 2
1
3 2
1
V V
V
V V
V
V V
0 02 , 1 62 , 2 3 , 2
3 2
1
3 2
1
V V
V
V V
V
- Từ đó rút ra:
1 3
1 2
1974 , 0
803 , 0
V V
V V
- Suy ra, vector riêng thứ nhất là:
Trang 32Dễ dàng thử được rằng: zT
3z1 ≈ 0, tức là z1, z2 và z3 tạothành hệ trực giao
Bước 4: Tìm tọa độ hình chiếu.
- Ta có: Z= A*V
- Tọa độ các cá thể trên trục thứ nhất:
Z11 = A1 V1 = -0,3333 (- 0,7705) + 0,6667 0,6192 – 0,3333 0,1513 = 0,1056
Z21 = A2 V1 = -2,3333 (- 0,7705) + 0,6667 0,6192 – 1,6667 0,1513 = 2,462
Z31 = A1 V1 = 2,3333 (- 0,7705) -1,6667 0,6192 – 0,6667 0,1513
= - 1.6937
Z41 = A1 V1 = -1,3333 (- 0,7705) + 2,6667 0,6192 – 1,3333 0,1513 = 2,4768
Z51 = A1 V1 = 2,3333 (- 0,7705) – 1,6667 0,6192 – 0,6667 0,1513 = - 2,9307
- Tọa độ các cá thể trên trục thứ hai:
1,6667 -
2,3333
1,3333 -
2,6667 1.3333
-0,6667 -
1,6667 -
2,3333
1,6667 0,6667
2,3333 -
0.3333 -
0,6667 0,3333
5322 , 0
2701 , 0
1289 , 2
2782 , 0
6128 , 1
5322 , 0
Trang 33Hình 3.4 Tọa độ điểm trên cùng không gian
CHƯƠNG 4 GIAO TIẾP VỚI MÁY TINH QUA CỔNG NỐI TIẾP4.1 TỔng Quan Về Giao Tiếp Máy Tính
- Để có thể tiến hành điều khiển hoặc giám sát các quá trình thực hiệnbằng máy tính, trước hết phải có mối liên hệ cần thiết giữa máy tính và thếgiới bên ngoài Cổng giao lưu với thế giới bên ngoài được mở rộng bằnggiao diện.Đối với máy tính PC tuân theo chuẩn công nghiệp có thể thựchiện các khả năng ghép nối sau:
- Sử dụng card mở rộng được cắm vào máy tính ( phương pháp này đạtđược tốc độ truy nhập lớn nhất nhưng chi phí cao)
Trang 34- Các giao diện đã được tiêu chuẩn hóa đóng vai trò ghép nối máy tínhvới các mạch điện bên ngoài.Cách ghép nối qua cổng nối tiếp thường đượclựa chọn vì chi phí thấp.
- Ghép nối với một bộ vi xử lý riêng để thực hiện những bài toán khác màkhông cần trao đổi dữ liệu với máy tính
- Các giao diện có trên máy tính PC như giao diện nối tiếp,giao diện songsong và cả cổng trò chơi (game port) cho phép sử dụng trực tiếp làm giaodiện
4.2 Cấu Trúc Cổng Nối Tiếp ( cổng COM):
Cổng nối tiếp có các ưu điểm sau:
- Khoảng cách truyền xa hơn cổng song song
- Số dây kết nối ít
- Có thể truyền không dây dùng hồng ngoại
- Có thể ghép nối với vi điều khiển hay PLC
- Cho phép nối mạng
- Có thể tháo lắp thiết bị trong lúc máy tính đang làm việc
- Có thể cung cấp nguồn cho các mạch điện đơn giản
Trang 35Hình 4.1 Cấu trúc cổng nối tiếp( cổng COM)
4.3.Các Chuẩn Giao Tiếp Nối Tiếp
Thường sử dụng nhiều nhất là chuẩn RS-232 và RS-485 Ở đồ ánnày chỉ sử dụng chuẩn RS-232
- Chuẩn RS -232: Tín hiệu truyền theo chuẩn RS-232 của EIA
(Electronics Industry Associations) Chuẩn RS-232 qui định mức logic 1ứng với điện áp từ -3V đến -25V, mức logic 0 ứng với điện áp từ 3V đến25V và có khả năng cung cấp dòng từ 10mA đến 20mA Ngoài ra, tất cảcác ngõ ra đều có đặc tính chống chập mạch
- Chuẩn RS-232 cho phép truyền tín hiệu với tốc độ đến 20.000 bpsnhưng nếu cáp truyền đủ ngắn có thể lên đến 115.200 bps Chuẩn RS-232chỉ có thể kết nối nhiều nhất hai thiết bị, với khoảng cách dài nhất (12,7 mđến 25,4 m)
- Chuẩn RS-485: có thể kết nối tối đa là 32 thiết bị, khoảng cách dài hơntối đa là (1016m đến hơn 1km) gấp 40 lần RS-232 Tốc độ cao 10Mbs/s
- Các đặc tính kỹ thuật của chuẩn RS-232:
Trang 36Các tốc độ truyền dữ liệu thông dụng trong cổng nối tiếp là: 1200bps,4800bps, 9600bps, 19200 bps.
4.4 Định Dạng Dữ Liệu
Sau đây giới thiệu về cách định dạng dùng trong truyền thông nối tiếp
- Định dạng đồng bộ: Trong truyền đồng bộ, mọi thiết bị dùng một xungđồng hồ được phát ra bởi một thiết bị hoặc từ một nguồn xung ngoài Xungđồng hồ có thể có một tần số cố định hoặc có thể chốt tại những khoảngthời gian không đều Mọi bít truyền đi được đồng bộ với đồng hồ
- Định dạng không đồng bộ: Trong truyền không đồng bộ, liên kết khôngbao gồm đường xung đồng hồ, bởi vì mỗi điểm đầu cuối của liên kết đã cóxung đồng hồ cho riêng từng cái Mỗi điểm sẽ cần phải đồng ý cùng mộttần số của đồng hồ và mọi đồng hồ chỉ khác nhau một vài % Mỗi bytetruyền đi bao gồm bít Start để đồng bộ đồng hồ và một hoặc nhiều bít Stopcho tín hiệu kết thúc việc truyền trong mỗi một từ được truyền đi CổngRS-232 trong PC dùng định dạng không đồng bộ để giao tiếp với modems(thiết bị mã hoá, giải mã dữ liệu) và các thiết bị khác Dù RS-232 có thểtruyền dữ liệu đồng bộ nhưng liên kết không đồng bộ vẫn được dùng phổbiến 485 hơn
- Truyền thông nối tiếp sử dụng hai phương pháp đồng bộ và dị bộ.Phương pháp đồng bộ truyền một khối dữ liệu ( các ký tự) tại cùng thờiđiểm trong khi đó truyền dị bộ chỉ truyền từng byte một Có thể viết phầnmềm để sử dụng một trong hai phương pháp này
4.5 MAX 232:
Trang 37MAX232 thuộc họ IC MAX220 ÷ MAX249 được sản xuất cho truyềnthông EIA/TIA – 232E và V.28/V.24, cụ thể là cho những ứng dụng màkhông có sẵn điện áp ±12V.
4.5.1 Sơ đồ chân:
H
Hình 4.2 : Sơ đồ chân của MAX232
4.5.2 Chức năng các chân:
- Chân 1, 2, 3, 4, 5, 6: mắc với 4 tụ bên ngoài để biến đổi điện áp từ 0 ÷5V thành điện áp -12V ÷ +12V để phù hợp cho truyền thông theo tiêuchuẩn RS232
- Chân 7, 8, 9, 10, 11, 12, 13, 14: là các chân vào, ra của 4 bộ khuyếch đạiđảo nhằm chuyển từ mức TTL ra chuẩn RS232 và ngược lại
- Chân 15: nối mass
- Chân 16: nối nguồn
Trang 38Hình 4.3 Sơ đồ khối bên trong MAX232 và các linh kiện mắc bên ngoài
theo dạng chuẩn
4.5.3 Nối Ghép 89V51RB2 Với RS232:
- Nội dung chính của phần này là nói về nối ghép 89C51 với các đầu nốiRS232 thông qua chip MAX232 Chíp 89C51 có hai chân được dùngchuyên cho truyền và nhận dữ liệu nối tíêp Hai chân này được gọi là TxD
và RxD và là một phần của cổng P3 ( P3.0 và P3.1) Chân 11 của 89C51 làP3.1 được gán cho TxD và chân 10 (P3.0) được dùng cho RxD Các chânnày tương thích với mức logic TTL Do vậy chúng đòi hỏi một bộ điềukhiển đường truyền để chúng tương thích với RS232 Một bộ điều khiểnnhư vậy là chip MAX232
- Bộ điều khiển đường truyền MAX232: MAX232 chuyển đổi từ các mứcđiện áp RS232 sẽ về mức điện áp TTL và ngược lại Một điểm mạnh củachip MAX232 là nó dùng điện áp ngưỡng +5V cùng với điện áp nguồn của89C51