Chương 3:PHÂN TÍCH VÀ XÂY DỰNG HỆ THỐNG
3.2 Phân tích – thiết kế hệ thống phát hiện mặt người
3.2.1 Phân tích:
Hình 10: sơ đồ use-case mô tả chức năng của camera và server
Hình 11: sơ đồ use-case mô tả chức nắng của bộ nhận giảng viên.
Nhiệm vụ chính của chương trình là dò tìm khuôn mặt từ một bức ảnh, một file video hoặc từ webcam, sau đấy lưu khuôn mặt vào csdl để phục vụ cho các mục đích khác (sẽ được phát triển sau).
Hình 12: Biểu đồ ngữ cảnh của hệ thống Như vậy các chức năng chương trình bao gồm:
Kết nối đến webcam, đọc các file ảnh và video.
Phát hiện các nhiều khuôn mặt có trong bức ảnh, video, webcam ...
Lưu ảnh khuôn mặt được phát hiện vào cơ sở dữ liệu.
Nhận diện khuôn mặt và thay đổi trạng thái điểm danh.
3.2.1 Thiết kế hệ thống:
Với các chức năng ở trên, chương trình được chia thành thành 3 phần chính: Phần xử lý đầu vào, phần phát hiện khuôn mặt và phần xử lý đầu ra.
a. Xử lý đầu vào:
Chương trình nhận đầu vào là file ảnh, video hoặc webcam, tuy nhiên, việc phát hiện khuôn mặt được thực hiện trên các bức ảnh, do đó, với đầu vào là webcam hay file video, ta phải chuyển thành các ảnh tĩnh và xử lý trên từng ảnh tĩnh. Sau khi đã có ảnh đầu vào rồi thì sẽ chuyển ảnh cho giai đoạn xử lý tiếp theo, đó là phát hiện các khuôn mặt có trong ảnh.
b. Phát hiện khuôn mặt:
Phần này xử lý chính nghiệp vụ của hệ thống. Sau khi có ảnh truyền vào, hệ thống sẽ thực hiện chức năng phát hiện khuôn mặt có trong ảnh.
Việc phát hiện khuôn mặt được thực hiện nhanh bằng thuật toán adaboost thông qua hàm cvHaarDetectObjects() của OpenCV. Hàm này thực hiện việc phát hiện đối tượng dựa trên các đặc trưng haar-like, cụ thể là nhờ vào một bộ Cascade được truyền vào cho hàm. Bộ Cascade được xây dựng theo dạng cây (tree-node) và đã được huấn luyện từ trước.
Việc huấn luyện bộ Cascade có thể thực hiện từ những dữ liệu thu thập được để phục vụ cho quá trình nhận dạng. Ví dụ, muốn nhận dạng một người A, ta thu thập các ảnh khuôn mặt của người A với nhiều tư thế, góc chụp và điều kiện chụp khác nhau, sau đấy cho bộ nhận dạng học theo thuật toán Cascade training.
Sau khi đã training xong, hệ thông sẽ lưu lại thành một file có đuôi.yml, bao gồm nhiều đặc điểm, nhiều tư thế của người dùng, giúp hệ thống có thể nhận diện
Lấy các đặc trưng và huấn luyện nhận dạng
Hình 13: Sơ đồ hệ thống
c. Xử lý đầu ra:
Khuôn mặt sau khi được phát hiện sẽ được tách ra khỏi bức ảnh và lưu dưới dạng ảnh bitmap với phần mở rộng là *.jpg.
Đối với đầu vào là các file ảnh, dữ liệu đầu ra cũng là file ảnh đấy nhưng có lưu vị trí khuôn mặt đã được phát hiện trên bức ảnh, đồng thời tách các riêng khuôn mặt và lưu vào cơ sở dữ liệu.
Đối với đầu vào là các file video hoặc webcam. Các khuôn mặt sẽ được tách ra và lưu lại thành các file ảnh riêng rẽ, và được đánh số thứ tự theo tên file video. Ví dụ như file video test.avi thì ảnh các khuôn mặt phát hiện được sẽ được đánh số theo thứ tự như sau: test.avi_1.jpg, test.avi_2.jpg …
3.2.3 Thiết kế cơ sở dữ liệu:
Lưu trữ cơ sở dữ liệu là một phần quan trọng của ứng dụng. Việc xây dựng, tổ chức cơ sở dữ liệu ảnh hướng lớn đến tốc độ của chương trình. Do đó tôi đã xây dựng và quản cơ sở dữ liệu bằng hệ quản trị cơ sở dữ liệu SQL Lite, đây là hệ quản trị cơ sở dữ liệu mạnh, đáp ứng được nhiều yêu cầu về quản lý cơ sở dữ liệu của các doanh nghiệp lớn, đặc biệt là các ngân hàng hay kho bạc. Tuy hiện tại, chương trình chỉ dừng lại ở mức phát hiện khuôn mặt trong ảnh, nhưng việc xây dựng một cơ sở dữ liệu tốt sẽ là tiền đề để có thể phát triển chương trình thành các ứng dụng lớn hơn sau này.
Hệ thống cần lưu trữ các dữ liệu: Ảnh khuôn mặt sau khi đã được phát hiện trên webcam.
Như vậy các thông tin trong cơ sở dữ liệu bao gồm 2 thực thể sau:
ID: Mã ảnh, kiểu Integer, là khóa chính và có ràng buộc là tự tăng.
Name: Tên của sinh viên, kiểu dữ liệu text (255).
Teacher: Tên Giảng viên và user password đăng nhập.
Hình 14: Tổng quan về các bảng trong cơ sở dữ liệu