Có thể nói tất cả những gì mà con người tạo ra đều mang một ý nghĩa thiế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ển củ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ển hơ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ủi vớ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 đóng hoặc mở cửa ra vào.
77 trang |
Chia sẻ: ngtr9097 | Lượt xem: 2244 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đồ án Hệ thống bảo mật, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
PHẦN A
CƠ SỞ LÝ THUYẾT
CHƯƠNG I
DẪN NHẬP
Đặ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ĩa thiế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ển củ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ển hơ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ủi vớ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 đóng hoặ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ết quý 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.3 Giới Hạn Đề Tài:
- Đề tài hoạt động tương đối vì kỹ năng kết hợp giữa ngôn ngữ lập trình MatLab chúng em còn kém cộng thêm xuất dữ liệu ra cổng COM.
- Do kiến thức của chúng em còn hạng hế nên việc thực hiện đề tài không tránh những sai xót trong tính toán và thi công. Vì vậy mong quý Thấy (Cô) chỉ dẫn và đóng góp ý kiến thêm.
1.4 Mục Đích Nghiên Cứu:
- Sử dụng những kiến thức đã học để ứng dụng trong thực tế.
- Để hiểu sâu hơn những kiến thức đã học, kiểm tra kiến thức lý thuyết vớ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ức riêng nhằm phục vụ lợi ích cá nhân.
CHƯƠNG 2
TỔNG QUAN VỀ MATLAB
2.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ôi trườ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ưới dạ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ợi cho 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 cho phé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ác giả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ác chươ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ện vector và ma trận dưới dạng đồ thị cũng như ký hiệu và in ấn chung. Matlab 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 cho phép người dùng tạo ra những chương trình bằng ngôn ngữ C hoặc Fortran tươ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ếp máy tính với các thiết bị như modem, máy in, các thiết bị đo lường điều khiể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 1 tươ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ân DSR, 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ượng cổng nối tiếp, port là tên cổng COM1, COM2...,Property name là các thuộc tí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ác giá 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ỏ đối tượ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.
2.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àm của MATLAB có nhiệm vụ thu thập và xử lý hình ảnh số từ các thiết bị thu hì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ên dù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 xuất).
- Xem thử hình ảnh video trên máy tính thông qua phần mềm của nhà sản xuất.
- Khởi động matlab.
Bước 2:
- 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ùng loạ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..
- Để liệt kê xem loại winvideo có bao nhiêu thiết bị gắn vào máy tính, ta cũng dùng lệnh imaqhwinfor với đối số là winvideo:
>> imaqhwinfo('winvideo')
ans =
AdaptorDllName: [1x81 char]
AdaptorDllVersion: '3.3 (R2009a)'
AdaptorName: 'winvideo'
DeviceIDs: {[1]}
DeviceInfo: [1x1 struct]
- Có một thiết bị với DeviceID = 1. Ta có thể tìm hiểu thêm thông tin về thiết bị này.
>> imaqhwinfo('winvideo',1)
ans =
DefaultFormat: 'RGB24_320x240'
DeviceFileSupported: 0
DeviceName: 'USB PC Camera (SN9C120)'
DeviceID: 1
ObjectConstructor: 'videoinput('winvideo', 1)'
SupportedFormats: {1x11 cell}
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.
Grabbing 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.
Ví dụ: hinh = getsnapshot(vid);
Imwrite(hinh,’d.jpg’);
Bước 6: Làm sạch bộ nhớ
Sau khi lấy dữ liệu hình ảnh ta có thể giải phóng bớt bộ nhớ bằng các lệnh sau:
Delete(vid)
Clear
Close(gcf)
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 lường điều khiển. Một khung dữ liệu truyền đi ở chân TXD và nhận ở chân RXD.
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).
2.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ận mà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ần thuộ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ết mà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
2.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ải tách một chi tiết nào đó ra khỏi ảnh. Sau đây là một số hàm xử lý ảnh cho phé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ày chỉ 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ác ngô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 Toolbox Com Builder biến chương trình thành COM Object rồi ghép vào các ngôn ngữ lập trình.
Đổ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.
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.
2.5.3 Lọc nhiễu:
Các hàm lọc nhiễu dùng để tăng chất lượng ảnh. Có các phương pháp lọc tuyến tính, lọc trung vị và lọc thích nghi.
- Lọc tuyến tính: pixel ảnh biến đổi là tổ hợp tuyến tính các pixel lân cận của pixel gốc, các hàm thường dùng là conv2 (tích chập), concn, filter2.
- Lọc trung vị: là loại lọc phi tuyến, gồm các hàm medfilt2, ordfilt2.
- Lọc thích nghi: wiener2.
2.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
Đọc, ghi và hiển thị ảnh:
- Imread: đọc ảnh
- Imwrite: ghi ảnh.
- Imshow: hiển thị ảnh
- Imview: ảnh cho phép hiển thị ảnh trên các cửa sổ riêng.
Các hàm xử lý ma trận:
- Cộng : X= A + B.
- Trừ : X= A – B.
- Nhân : X= A * B.
- Chia : X = A/B lúc đó X*B = A
: X = A\B lúc đó A*X = B
: X=A./B chia các phần tử tương ứng với nhau
- Luỹ thừa : X = A^2.
- Nghịch đảo : K = inv(A).
- Định thức : d = det(A)
2.5.8 Điều kiện if, else, elseif:
- Cú pháp của if:
if
end.
- Nếu cho kết quả đúng thì phần lệnh trong thân của if được thực hiện. Các phát biểu else và leseif cũng tương tự.
2.5.9 Điều kiện switch:
- Cú pháp của switch như sau :
switch
case n1 :
case n2 :
. . . . . . . . . . . . . . .
case nn :
otherwise :
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:
while
end.
2.5.11 Toán tử logic và biểu thức quan hệ:
Lệnh
Kết quả
a = (b>c)
a là 1 nếu b lớn hơn c. Tương tự với =,<=.
a = (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ực hiện các lệnh trong Matlab thông qua menu, nút nhấn.. tương tự như các ngô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ác khung 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 khiển uicontrol nào cả.
- 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ài cô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.
- 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ấm chuộ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ấp chuộ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ẽ coi giao 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àm khởi tạo, các hàm callback.
2.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ủa component. Ví dụ: Nhấn chuột vào Edit text, sẽ hiện ra cửa sổ Property Inspector.
- 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ên component.
- 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
- 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ảo callback ở cửa số layout nhấp chuột phải vào component muốn soạn thảo sau đó chọn View callbacks -> callback ta sẽ vào màn hình soạn thảo callback cho component đó. Lưu ý rằng các dòng lệnh sẽ được viết sau dòng “ function tên component_callback(hobject,eventdata, handles). Sau khi soạn thảo xong ta lưu, lập tức Matlab sẽ lưu thành hai file có cùng tên như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 giao diện.
CHƯƠ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) được trì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ân tích nhân tố trong trường hợp đặc biệt, khi các phương sai bằng không hoặc xấp xỉ bằng không. Phương pháp này thường được sử dụng trong phân tích tâ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ệu thì 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êu chuẩ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ểm nà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. Trong cô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ố l