Chương 6 Xây dựng chương trình Mô Phỏng
6.2 Thiết kế hệ thống
Với các chức năng nêu trên, chương trình được chia thành 3 phần chính:
1.Xử lý ảnh đầu vào 2. Phát hiện khuôn mặt
3. Xử lý đầu ra. ( Ảnh đầu ra dùng để nhận dạng, hay lưu vafo CSDL, hay cả hai).
Hình sơ đồ khối thực hiện chương trình.
6.2.1 Xử lý ảnh đầu vào.
Đầu vào của hệ thống là 1 ảnh chứa khuôn mặt cần xử lý, ảnh này có thể là ảnh tĩnh, lấy từ trong bộ nhớ máy tính hoặc là frame ảnh bắt được từ dòng hình ảnh của camera. Sau khi có được ảnh đầu vào thì bắt đầu tiến hành tìm kiếm, phát hiện các khuôn mặt trong ảnh.
Hình : Lưu đồ giải thuật chọn ảnh đầu vào
Code thực hiện chức năng.
6.2.2 Phát hiện khuôn mặt trong ảnh.
Sau khi nhận được ảnh đầu 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. Như đã nói trong phần Giới Thiệu, bài toán phát hiện mặt người trong ảnh là một bài toán khó, nên ta không đi sâu tìm hiểu cách giải quyết bài toán này.
Ở đây, ta sử dụng phương pháp tiếp cận dựa trên diện mạo (appearance-based) được thực hiện nhanh bằng thuật toán adaboost thông qua hàm cvHaarObjects() của bộ thư viện 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 đó cho bộ nhận dạng học theo thuật toán Cascade training. Kết quả thu được là ta sẽ có một mô hình nhận diện, được sử dụng để nhận dạng các đối tượng
Code thực hiện chức năng:
Hàm thực hiện chức năng phát hiện mặt người trong dòng hình ảnh của camera
6.2.3 Xử lý đầu ra.
Các khuôn mặt sau khi được phát hiện sẽ được tách ra khỏi bức tranh, hiển thị lên picturebox. Người dùng có thể xem, di chuyển qua lại giữa các khuôn mặt được phát hiện ( Kể cả các ảnh bị nhận nhầm là khuôn mặt).
Các khuôn mặt trước khi được hiển thị lên picturebox sẽ được chỉnh lại kích thước và chuẩn hóa ( tăng chỉnh độ sáng, đưa về một kênh màu:
ảnh xám). Ảnh sau khi chuẩn hóa có thể được kiểm tra nhận dạng hoặc luuw vào CSDL dưới dạng nhị phân.
6.2.4 Thiết kế cơ sở dữ liệu
CSDL là trái tim của hệ thống, việc thiết kế, tổ chức CSDL ảnh hưởng lớn đến hoạt động của chương trình, bởi dữ liệu cần lưu trữ ở đây là các ảnh.
Dù kích thước mỗi ảnh có thể không lớn, nhưng số lượng ảnh cần lưu trữ lại rất lớn. Ảnh hưởng lớn đến tốc độ truy xuất dữ liệu. Do đó cần thiết kế, tổ chức CSDL một cách hợp lý, ngoài ra việc lựa chọn Hệ quản trị CSDL cũng rất quan trọng. Ở đây, Hệ quản trị SQL server được lựa chọn để xây dựng, quản lý CSDL. Đây là một hệ quản trị CSDL mạnh, đáp ứng được nhiều yêu cầu về quản lý các CSDL lớn.
Ta cần xác đinh các thông tin cần được lưu trữ:
3. Ảnh các khuôn mặt.
4. Tên người có khuôn mặt được phát hiện.
5. ID xác định các đối tượng.
1. Ảnh (FaceImage). Ảnh đầu vào.
a.Kiểu dữ liệu : Image.
b. Is null: true.
2. Tên người( FaceName).
c. Kiểu dữ liệu : nvarchar(200);
d. Is null: true;
3. Id(FaceID)
e. kiểu dữ liệu : Int.
f. Khóa chính.
g. Mã tự tăng.
h. Is null: false
6.2.5 Thiết kế giao diện chương trình
Giao diện chương trình được thiết kế đơn giản, dễ nhìn. Bố cục giao diện chia làm 3 phần. Phần 1, dành cho người dùng chọn đầu vào, có thể là một ảnh tĩnh từ trong máy tính, hoặc mở webcam để lấy hình ảnh. Phần 2 bao gồm phần điều chỉnh các thông số phát hiện khuôn mặt, thông số nhận dạng khuôn mặt. Và cuối cùng là phần nhận dạng khuôn mặt.
Phần 2: 1. Điều chỉnh thông số phát hiện khuôn mặt.
- Scale Increase Rate.
- Min Neighbors.
- Min Detection Scale (Window Size).
2. Điều chỉnh thông số nhận dạng khuôn mặt.
- Eigen Distance Threshold: Khoảng cách ngưỡng