LUẬN VĂN:TÁI TẠO MÔ HÌNH KHUÔN MẶT TỪ CÁC ĐIỂM ĐẶC TRƯNG
3,505
262
72
Chương 3. Hệ thống tái tạo mô hình khuôn mặt từ các điểm đặc trưng Nguyễn Đình
Tư
44
Vậy ta tính được A, sau đó dùng công thức (3) để tính được
.
Biến đổi:
Một khi các ẩn đã được tính ra, mạng RBF nội suy đẹp trên tất cả các điểm còn
lại và biến mô hình khuôn mặt gốc thành mô hình khuôn mặt đích. Lúc này hệ thống
dùng ba mạng RBF với các hệ số ẩn đã tính được để biến tất cả các tọa độ của
đỉnh
trên khuôn mặt gốc thành một đỉnh có tọa độ mới, các tam giác kết nối các đỉnh
vẫn
giữ nguyên như vậy, ta sẽ có được mô hình khuôn mặt đích, hay là khuôn mặt cần
tái
tạo.
3.4 Chỉnh sửa khuôn mặt
Mô hình khuôn mặt sau khi được tái tạo bằng cách biến đổi khuôn mặt nguồn
bằng các mạng RBF ở bước trên có thể còn những đặc điểm trên khuôn mặt còn chưa
hợp lý, do đó chúng tôi phát triển thêm mô-đun chỉnh sửa khuôn mặt để cho ra một
khuôn mặt tốt hơn. Thành phần chỉnh sửa gồm mô-đun:
Chỉnh sửa theo điểm: cho phép chỉnh sửa tọa độ từng điểm đặc trưng trên
khuôn mặt.
Chỉnh sửa theo vùng: cho phép chỉnh sửa một vùng của khuôn mặt theo các
điểm đặc trưng trên vùng đó.
3.4.1 Chỉnh sửa theo điểm
Hình 21. Mô-đun chỉnh sửa khuôn mặt theo từng điểm đặc trưng
Mô-đun chỉnh sửa khuôn mặt theo từng điểm cho phép thay đổi tọa độ theo (x, y,
z) từng điểm đặc trưng trên khuôn mặt cần tái tạo. Hình 21 ở trên minh họa thành
phần
này:
Chương 3. Hệ thống tái tạo mô hình khuôn mặt từ các điểm đặc trưng Nguyễn Đình
Tư
45
Bước 1: Chọn điểm đặc trưng trên danh sách các điểm đặc trưng (1).
Bước 2: Chỉnh tham số về độ thay đổi tọa độ (increment) bằng cách kéo
thanh trượt ở phía dưới (2).
Bước 3: Tùy ý điều chỉnh tọa độ (x, y, z) bằng các nút +x, -x, +y, -y, +z và
–z (3).
Tọa độ điểm đặc trưng được thay đổi sẽ được cho vào huấn luyện lại mạng RBF
và sau khi biến đổi sẽ cho ra mô hình khuôn mặt đích mới.
3.4.2 Chỉnh sửa theo vùng
Hệ thống của chúng tôi cho phép chỉnh sửa 5 thành phần của mặt: Mắt, mũi,
cằm, tai và miệng. Mô -đun chỉnh sửa khuôn mặt theo vùng được quản lý theo các
tab
như ở Hình 22.
Hình 22. Mô-đun chỉnh sửa khuôn mặt theo vùng
Từng đặc điểm của từng vùng được quyết định bằng một số đo nhân trắc học
được tổng kết trong [1][2]. Chúng tôi chỉnh sửa đặc điểm của từng vùng bằng cách
thay đổi các số đo nhân trắc học đó theo một tỉ lệ nhất định. Để thay đổi các số
đo
nhân trắc, chúng tôi thay đổi khoảng cách giữa các cặp điểm đặc trưng tương ứng,
từ
đó một số tọa độ các điểm đặc trưng trên khuôn mặt cần tái tạo thay đổi và chúng
tôi
truyền lại cho mô-đun biến đổi khuôn mặt để cho ra mô hình khuôn mặt mới. Dưới
đây mô tả phương pháp chỉnh sửa một vài đặc điểm trên các vùng có trong hệ thống
chúng tôi phát triển.
Mắt
Chương 3. Hệ thống tái tạo mô hình khuôn mặt từ các điểm đặc trưng Nguyễn Đình
Tư
46
Hình 23. Chỉnh sửa mắt to nhỏ
Trên mắt có 8 điểm đặc trưng
1
,
2
,
3
,
4
,
5
,
6
,
7
và
8
như ở Hình 23.
Giả sử tọa độ trọng tâm của 8 điểm là P. Khi đó để chỉnh sửa mắt to lên hoặc nhỏ
đi,
chúng tôi co giãn khoảng cách giữa P tới 8 điểm trên. Lúc này điều chỉnh
thành
với điều kiện:
và
= trong đó i = 1→8, < 1 mắt nhỏ, > 1
mắt to.
Mũi
Hình 24. Chỉnh sửa mũi dài ngắn
Để chỉnh sửa mũi dài ngắn, chúng tôi dựa vào các điểm đặc trưng ,
1
,
2
,
3
,
Chương 3. Hệ thống tái tạo mô hình khuôn mặt từ các điểm đặc trưng Nguyễn Đình
Tư
47
4
như trên Hình 24. Chúng tôi điều chỉnh các điểm
thành
với điều kiện:
và
= trong đó i = 1→4, < 1 mũi ngắn, > 1 mũi dài.
Hình 25. Chỉnh độ rộng cánh mũi
Để chỉnh sửa độ rộng của cánh mũi, chúng tôi dựa vào hai khoảng cách
1
2
và
3
4
như trong Hình 25. Chúng tôi điều chỉnh
1
thành
1
và
2
thành
2
, với
1
2
1
2
,
2
1
2
1
và
1
2
1
2
=
2
1
2
1
= .
3
thành
3
và
4
thành
4
,
với
3
4
3
4
,
4
3
4
3
và
3
4
3
4
=
4
3
4
3
=
Trong đó < 1 cánh mũi hẹp, > 1 cánh mũi rộng.
Miệng
Hình 26. Chỉnh sửa miệng nhỏ, rộng
Chương 3. Hệ thống tái tạo mô hình khuôn mặt từ các điểm đặc trưng Nguyễn Đình
Tư
48
Dựa vào độ rộng của miệng là khoảng cách giữa 2 mép miệng
1
2
như ở Hình
26, chúng tôi điều chỉnh
1
thành
1
và
2
thành
2
. Với
1
2
1
2
,
2
1
2
1
và
1
2
1
2
=
2
1
2
1
= trong đó < 1 miệng nhỏ, > 1 miệng to.
Cằm
Hình 27. Chỉnh sửa cằm dài, ngắn
Để chỉnh sửa cằm dài ngắn, chúng tôi lấy P làm điểm mốc như ở Hình 27, chúng
tôi điều chỉnh
1
,
2
,
3
sao cho
và
= trong đó i = 1→3, < 1
mũi ngắn, > 1 mũi dài.
Tai
Hình 28. Chỉnh sửa tai to, nhỏ
Chương 3. Hệ thống tái tạo mô hình khuôn mặt từ các điểm đặc trưng Nguyễn Đình
Tư
49
Như trên Hình 28, chúng tôi lấy điểm P làm mốc, điều chỉnh các điểm P
i
thành
i
với điều kiện: PP
i
P
i
và
PP
i
P
i
= trong đó i = 1→5, < 1 tai nhỏ, > 1
tai to.
3.5 Thiết kế hệ thống
Hệ thống bao gồm 2 thành phần: Phần điều khiển, hiển thị mô hình khuôn mặt
(khuôn mặt nguồn và khuôn mặt đích) và phần điều khiển các thao tác biến đổi mô
hình khuôn mặt.
Phần điều khiển, hiển thị mô hình khuôn mặt nguồn và khuôn mặt đích: Các
lớp, các thuộc tính, phương thức của lớp và mối quan hệ giữa các lớp được mô
tả trong biểu đồ UML ở Hình 29.
Hình 29. Biểu đồ UML thể hiện thết kế phần điều khiển, hiển thị khuôn mặt
Phần này gồm 8 lớp chính:
- CMainFrame: là lớp điều khiển khung hình (frame) chính của hệ thống,
trong đó bao gồm 3 khung hình con (lớp CChildFrame). Một số hàm của
CDocument
CMeshDoc
m_Face: MHead*
MHead
CSFace
m_Face: MHead
CMeshView
GetDoc(): CMeshDoc
CView
GetDoc(): CDocument*
CChildFrame
CMainFrame
m_wndSFace: CChildFrame*
m_wndControl: CChildFrame*
m_wndToolbar: Ctoolbar
createAChildWindow(): CChildFrame*
OnCreate(): int
Chương 3. Hệ thống tái tạo mô hình khuôn mặt từ các điểm đặc trưng Nguyễn Đình
Tư
50
lớp như sau:
o OnCreate(): Khởi tạo khung hình ban đầu.
o createAChildWindow(): khởi tạo khung hình con.
- CChildFrame: là lớp điều khiển khung hình con của hệ thống. Có 3 khung
hình con là:
o Khung hình hiển thị mô hình khuôn mặt nguồn.
o Khung hình hiển thị mô hình khuôn mặt đích.
o Khung hình hiển thị các thao tác biến đổi.
- CDocument: là hiện thân ảo của CMeshDoc.
- MHead: là lớp chứa dữ kiện về một mô hình khuôn mặt. Có tọa độ các
đỉnh và chỉ số các đỉnh của một tam giác thuộc lưới tam giác biểu diễn lớp
da.
- CMeshDoc: đây là lớp phân tích dữ liệu để chuyển tới CMeshView. Hàm
OnOpenDocument() thực hiện đọc và phân tích dữ liệu.
- CView: là lớp có chức năng truyền các dữ liệu của mô hình khuôn mặt tới
các thành phần hiển thị của hệ thống. Có 2 lớp con đó là: CSFace và
CMeshView. CView có hàm GetDoc() để lấy dữ liệu từ CMeshDoc.
- CMeshView: là lớp điều khiển mô hình khuôn mặt đích, dữ liệu lấy từ lớp
CMeshDoc. Lớp gọi hàm OnPaint() để hiển thị mô hình khuôn mặt đích.
- CSFace: là lớp điều khiển mô hình khuôn mặt nguồn của hệ thống. Lớp
này có một thuộc tính là m_Face chứa dữ liệu về khuôn mặt nguồn và gọi
hàm OnCreate() để khởi tạo mô hình khuôn mặt nguồn.
Phần điều khiển các thao tác biến đổi mô hình khuôn mặt: Các lớp, thuộc tính,
phương thức và mối quan hệ giữa các lớp được mô tả trong biểu đồ UML ở
Hình 30.
Chương 3. Hệ thống tái tạo mô hình khuôn mặt từ các điểm đặc trưng Nguyễn Đình
Tư
51
Hình 30. Biểu đồ UML thể hiện thiết kế phần điều khiển các thao tác biến đổi mô
hình
khuôn mặt
Phần này bao gồm 6 lớp chính:
- CView: như đã mô tả ở phần điều khiển và hiển thị mô hình khuôn mặt.
- CFormView: lớp con của CView có chức năng nối kết các thành phần điều
khiển như TabBar, ScrollCtrl, …
- CDialog: là lớp hệ thống. Có các lớp con: CEyesTab, CEarsTab, CNoseTab,
CChinTab, CMouthTab. Các lớp con này chính là các tab để quản lý tính năng
chỉnh sửa khuôn mặt.
- CTabCtrl: là lớp hệ thống. Có lớp con là CMyTabCtrl.
- CMyTabCtrl: là khung quản lý các tab chỉnh sửa khuôn mặt.
CTabCtrl
CMyTabCtrl
m_tabPages[5]: CDialog*
m_tabCurrent: int
m_nNumberOfPages: int
Init(): void
SetRectangle(): void
CDialog
CEyesTab
CEarsTab
CNoseTab
CChinTab
CMouthTab
CView
CFormView
CControl
m_MyTabCtrl: CMyTabCtrl
m_Slider: CSliderCtrl
m_verticesList: CListBox
DisplayVerticesInfo(): void
UpdateListView(): void
OnSelChangeListVertices(): void
OnButtonMorph(): EventHandle
OnButtonAdd: EventHandle
OnButtonRemove: EventHandle
Chương 3. Hệ thống tái tạo mô hình khuôn mặt từ các điểm đặc trưng Nguyễn Đình
Tư
52
Thuộc tính:
o m_TabPages[5]: lưu các tab thông qua lớp hiện hình CDialog của chúng.
o m_TabCurrent: Tab hiện hành
o m_nNumberOfTabPages: số lượng tab
Phương thức:
o Init(): khởi tạo khung quản lý và các tab.
o SetRectangle(): phân vùng để hiển thị mỗi tab trên khung quản lý
- CControl: lớp điều khiển các tính năng trên giao diện thao tác biến đổi.
Thuộc tính:
o m_MyTabCtrl: thành phần quản lý các tab.
o m_Slider: thanh trượt
o m_VerticesList: danh sách các điểm đặc trưng.
Phương thức:
o DisplayVerticesInfo(): hiển thị danh sách các điểm đặc trưng trên khuôn
mặt.
o OnSelChangeListVertices(): hiển thị vị trí điểm tương ứng trên khuôn mặt
nguồn và đích khi ta chọn điểm đặc trưng trong danh sách m_VerticesList.
o UpdateListView(): cập nhật lại danh sách các điểm đặc trưng.
o OnButtonMorph(): bắt sự kiện ấn nút “Morph” và gọi hàm morphingFace()
để biến đổi mô hình khuôn mặt nguồn thành mô hình khuôn mặt đích.
o OnButtonAdd(): bắt sự kiện ấn nút “Add” để thêm điểm đặc trưng.
o OnButtonRemove(): bắt sự kiện ấn nút “Remove” để bỏ đi điểm đặc trưng.
Chương 3. Hệ thống tái tạo mô hình khuôn mặt từ các điểm đặc trưng Nguyễn Đình
Tư
53
Hệ thống sau khi phát triển có giao diện như Hình 31:
Hình 31. Giao diện của hệ thống tái tạo và chỉnh sửa mô hình khuôn mặt
Các thành phần trên giao diện của hệ thống:
1. Danh sách các điểm đặc trưng
2. Tọa độ của điểm đặc trưng hiện đang được chọn trong danh sách, ở Hình 31 ở
trên là đỉnh mũi.
3. Các chức năng thêm, xóa và đổi tên điểm đặc trưng
4. Chức năng chỉnh sửa khuôn mặt theo tọa độ của từng điểm đặc trưng
5. Chức năng chỉnh sửa khuôn mặt theo đặc điểm các bộ phận
6. Nút “Morph” để tái tạo khuôn mặt đích
7. Nút “Load” để nạp tọa độ các điểm đặc trưng trên khuôn mặt đích cần tái tạo
8. Mô hình khuôn mặt nguồn.
9. Mô hình hộp sọ cùng các điểm đặc trưng của khuôn mặt đích ứng với hộp sọ.
10. Chức năng lưu lại mô hình khuôn mặt nguồn (“Save Source”), lưu lại mô hình
khuôn mặt đích (“Save Target”) và chỉnh lại mô hình khuôn mặt nguồn về ban
đầu(“ResetFace”).