đặt vấn đề dẫn nhập lý do chọn đề tài, mục tiêu, nội dung nghiên cứu, các giới hạn thông số và bố cục đồ án. Chƣơng 2: Cơ sở lý thuyết. Giới thiệu về kit Arduino, giới thiệu về cách cài đặt thƣ viện cho Arduino và camera webcam trên phần mềm Matlab. Giới thiệu về phép phân tích thành phần chính PCA và áp dụng vào bài toán nhận dạng cảm xúc trên khuôn mặt ngƣời.
Chƣơng 3: Thiết kế và Tính toán BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 2 CHƢƠNG 1. TỔNG QUAN Phân tích, xây dựng sơ đồ khối, sơ đồ phần cứng, thiết kế về chƣơng trình cho hệ thống nhận dạng cảm xúc trên khuôn mặt ngƣời đƣợc viết trên phần mềm Matlab, sử dụng thƣ viện của Matlab cho kit Arduino. Chƣơng 4: Thi công hệ thống Xây dựng chƣơng trình hoàn chỉnh cho toàn hệ thống, các hàm, các lƣu đồ, các chƣơng trình đƣợc sử dụng. Tạo tập tin huấn luyện, lắp ráp và test cho chƣơng trình.
Viết tài liệu hƣớng dẫn sử dụng, quy trình thao tác. Chƣơng 5: Kết quả, Nhận xét và đánh giá Nêu các kết quả đạt đƣợc khi thực hiện chƣơng trình, phân tích, nhận xét, đánh giá kết quả thực thi đƣợc. Chƣơng 6: Kết luận và Hƣớng phát triển Tóm tắt những kết quả đạt đƣợc, những hạn chế và nêu lên các hƣớng phát triển trong tƣơng lai. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 3 CHƢƠNG 2.
CƠ SỞ LÝ THUYẾT Chƣơng 2.1 Kit Arduino Arduino ra đời tại thị trấn Ivrea – Italy, đƣợc giới thiệu vào năm 2005 nhƣ một công cụ cho sinh viên tìm tòi, học hỏi, phát triển, nhƣng đến nay Arduino đã đƣợc sử dụng rộng rãi trên thế giới và chứng tỏ đƣợc hiệu quả thông qua vô số ứng dụng từ ngƣời dùng. Arduino là một board mạch vi xử lý đƣợc dùng để tƣơng tác với các thiết bị phần cứng nhƣ cảm biến, động cơ, đèn hay các thiết bị khác. Một board Arduino bao gồm một vi điều khiển AVR với nhiều linh kiện bổ sung đã làm nên board mạch với nhiều thế mạnh hơn so với các vi điều khiển khác nhƣ: chạy đƣợc trên nhiều hệ điều hành khác nhau (Windows, Linux.), dễ dàng lắp ráp và mở rộng phần cứng, phát triển dựa trên nguồn mở, dễ dàng chia sẻ mã nguồn với nhau mà không phải lo lắng ngôn ngữ hay hệ điều hành đang sử dụng… Arduino thƣờng sử dụng các dòng chip megaAVR, đặc biệt là ATmega8, ATmega168, ATmega328, ATmega1280 và ATmega2560. Hầu hết các mạch gồm một bộ điều chỉnh tuyến tính 5V và một thạch anh dao động 16 MHz, các board Arduino hiện tại đƣợc lập trình thông qua cổng USB.
Kit Arduino Uno Kit Arduino có nhiều phiên bản với tính năng và mục đích sử dụng khác nhau. Board Arduino Uno là một trong những phiên bản đƣợc sử dụng rộng rãi nhất bởi chi phí và tính linh động của nó. Arduino Uno [3] là một board mạch vi điều khiển dựa trên chip Atmega328 với 14 chân vào/ra bằng tín hiệu số đƣợc đánh số từ 0 đến 13, trong đó 6 chân có thể tạo xung PWM đƣợc đánh dấu “~” trƣớc mã số của chân, 6 chân nhận tín hiệu analog đƣợc đánh dấu từ A0 đến A5, có thể sử dụng nhƣ là 6 chân I/O số. Có 2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 30 mA.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 1 CHƢƠNG 2. CƠ SỞ LÝ THUYẾT Bảng 2. Thông số kỹ thuật Arduino Uno. Vi điều khiển Atmega328P họ 8 bit Điện áp hoạt động 5V Điện áp đầu vào 7-12V Điện áp đầu vào giới hạn 6-20V Số chân Digital I/O 14 (có 6 chân PWM) Số chân Analog 6 ( độ phân giải 10bit) DC current per I/O pin 20mA DC current for 3.3V pin 50mA Flash Memory 32KB (ATmega328P) SRAM 2KB (Atmega328P) EEPROM 1KB (Atmega328P) Clock Speed 16MHZ Length 68.4 mm Weight 25 g Hình 2.1 Cấu trúc phần cứng của Arduino Uno.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 2 CHƢƠNG 2. CƠ SỞ LÝ THUYẾT Cổng USB(1): Cổng USB dùng để kết nối với máy tính và thông qua đó để upload chƣơng trình cho Arduino từ máy tính, đồng thời cung cấp nguồn cho Arduino. Nguồn (2 và 4): Sử dụng jack cấm nguồn 2.1mm (cực dƣơng ở giữa) hoặc có thể dùng chân Vin và GND để cấp nguồn cho Arduino. Board mạch hoạt động ở điện áp ngoài khoảng 5-20V, nhƣng nếu cấp nguồn lớn hơn 5V thì ngõ ra chân 5V sẽ lớn hơn, không nên cấp nguồn lớn hơn 12V vì board sẽ nóng và dễ bị hỏng.
Chân 5V và chân 3.3v là 2 chân lấy nguồn từ Arduino ra ngoài, không đƣợc cấp nguồn vào nó, sẽ làm hỏng. Chip Atmega328P(6): Có 32KB bộ nhớ flash trong đó có 0.5KB dùng cho bootloader, 2KB SRAM, 1KB EEPROM. Output và input(3 và 5): Arduino có 14 chân Digital với các chức năng Input và Output. PHẦN MỀM MATLAB.
Matlab (Matrix Laboratory ) là một môi trƣờng tính toán số và lập trình, đƣợc thiết kế bởi công ty MathWorks. Matlab [4] là ngôn ngữ lập trình thực hành bậc cao đƣợc sử dụng nhiều để giải các bài toán kỹ thuật. Matlab tích hợp việc tính toán thể hiện kết quả cho phép lập trình, giao diện làm việc rất dễ dàng cho ngƣời 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 dùng có đƣợc những ứng dụng nhƣ: Tính toán các phép toán học thông thƣờng, tính toán ma trận, 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, hiển thị dữ liệu. Matlab đƣợc sử dụng trong nhiều lĩnh vực, bao gồm xử lý tín hiệu và ảnh, truyền thông, thiết kế điều khiển tự động, đo lƣờng kiểm tra, phân tích mô hình tài chính, hay tính toán sinh học. Matlab cung cấp giải pháp chuyên dụng gọi là Toolbox.
Toolbox là một tập hợp toàn diện các hàm của Matlab (M-file). Hệ thống Matlab gồm 5 phần chính: BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 3 CHƢƠNG 2. CƠ SỞ LÝ THUYẾT Môi trƣờng làm việc: bao gồm các phƣơng tiện cho việc quản lý các biến trong không gian làm việc Workspace cũng nhƣ xuất nhập dữ liệu. Nó cũng bao gồm các công cụ phát triển, quản lý, gỡ rối và định hình M-file.
Xử lý đồ họa: bao gồm các lệnh cao cấp cho trực quan hóa dữ liệu hai chiều và ba chiều, xử lý ảnh, ảnh động. Cung cấp các giao diện tƣơng tác giữa ngƣời sử dụng và máy tính. Thƣ viện toán học: các hàm cơ bản nhƣ cộng, trừ, nhân, chia, sin, cos.các hàm phức tạp nhƣ tính ma trận nghịch đảo, trị riêng, chuyển đổi fourier, laplace, symbolic library. Giao diện ngƣời dùng (Application Program Interface): cho phép viết chƣơng trình tƣơng tác với các ngôn ngữ khác C, C++.
Simulink là một chƣơng trình đi kèm với Matlab, là một hệ thống tƣơng tác với việc mô phỏng các hệ thống động phi tuyết, mô phỏng mạch.CÁC CẢM XÚC TRÊN KHUÔN MẶT Cảm xúc trên khuôn mặt là một quy luật rất quan trọng trong giao tiếp giữa ngƣời với ngƣời. Những công nghệ giao tiếp tiến bộ nhanh chóng gần đây cùng với sựu phát triển của khoa học máy tính đã cho chúng ta những hi vọng rằng cảm xúc trên khuôn mặt sẽ trở thành một giải pháp then chốt trong lĩnh vực giao diện ngƣời máy và các hƣớng phát triển giao tiếp khác trong tƣơng lai. Trong các cách biểu đạt ngôn ngữ cơ thể, cảm xúc là nơi thể hiện rõ nhất những gì mà ngƣời khác cảm nhận đƣợc. Qua nghiên cứu của nhà tâm lý học Mehrabian năm 1968 đã chỉ ra rằng khi một thông điệp từ một ngƣời chuyển tới ngƣời khác, phần từ ngữ chỉ chiếm 7% ảnh hƣởng, 38% âm lƣợng của giọng nói, trong khi ngôn ngữ cơ thể của ngƣời nói chiếm tới 55% ảnh hƣởng của thông điệp đó [5].
Nhận dạng cảm xúc đƣợc ứng dụng trong rất nhiều lĩnh vực khác nhau nhƣ y học [6], tƣơng tác giao diện giữa ngƣời và máy [7], chuyển động thân ngƣời [8]… Trong đề tài đồ án tốt nghiệp này, chúng em xây dựng một hệ thống nhận dạng cảm xúc dựa trên 3 cảm xúc cơ bản trên đó là: vui, buồn, ngạc nhiên. Các dấu hiệu nhận biết cảm xúc: Vui: Cảm xúc này thể hiện qua nét mặt rạng rỡ trên khuôn mặt. Nụ cƣời chính là dấu hiệu đơn giản nhất để nhận biết cảm xúc này. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 4 CHƢƠNG 2.
CƠ SỞ LÝ THUYẾT Buồn: Biểu hiện của cảm xúc này thông qua khuôn mặt là vùng trán nhăn lại, đôi mắt trùng xuống, không có thần thái, vẻ mặt biểu lộ rõ sự buồn khổ, sầu não kèm theo những tiếng thở dài. Nhìn vào dễ dàng tạo cảm giác lặng lẽ, trầm buồn. Ngạc nhiên: Đây là trạng thái dễ gây cảm giác thú vị khi nhìn vào. Sự ngạc nhiên thể hiện qua lông mày nhô cao, mắt mở to, phần hàm dƣới trề xuống, miệng mở tròn ra.
PHƢƠNG PHÁP NHẬN DẠNG PCA - EIGENFACES. Phƣơng pháp nhận dạng PCA Phân tích thành phần chính PCA (Principal Component Analysis) là một thuật toán sử dụng phép biến đổi trực giao để biến đổi một tập hợp dữ liệu từ một không gian nhiều chiều sang một không gian mới ít chiều hơn (2 hoặc 3 chiều) nhằm tối ƣu hóa việc thể hiện sự biến thiên của dữ liệu. PCA một trong những ứng dụng hữu ích trong việc nhận dạng mặt và nén ảnh, là phƣơng pháp phân tích dữ liệu nhiều biến đơn giản nhất. Phép biến đổi tạo ra những ƣu điểm nhƣ: Giảm sổ chiều của không gian chứa dữ liệu: tạo ra một ảnh mới từ ảnh ban đầu, ảnh này có kích thƣớt nhỏ hơn nhiều so với ảnh ban đầu nhƣng vẫn giữ lại những nét đặc trƣng nhất từ ảnh ban đầu.
Thay vì giữ lại các trục tọa độ của không gian cũ. PCA xây dựng những trục tọa độ mới nhƣng có khả năng biểu diễn dữ liệu tƣơng đƣơng, và đảm bảo độ biến thiên của dữ liệu trên mỗi chiều mới. Trong không gian mới, các liên kết tiềm ẩn của dữ liệu có thể đƣợc khám phá, mà nếu đặt trong không gian cũ thì khó phát hiện hơn vì những liên kết này không thể hiện rõ. Các trục tọa độ trong không gian mới là tổ hợp tuyến tính của không gian cũ.
Các trục này luôn đƣợc trực giao đôi một với nhau mặc dù trong không gian ban đầu các trục có thể không trực giao. Nói một cách ngắn gọn, mục tiêu của PCA là tìm một không gian mới với số chiều nhỏ hơn không gian cũ. Các trục tọa độ không gian mới đƣợc xây dựng sao cho trên mỗi trục, độ biến thiên của dữ liệu trên đó là lớn nhất.