BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NHA TRANG
KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
BẮT CỬ ĐỘNG KHUÔN MẶT QUA
VIDEO VÀ ÁP LÊN MÔ HÌNH 3D
Giảng viên hướng dẫn:
NGUYỄN ĐÌNH CƯỜNG
Sinh viên thực hiện:
NGUYỄN HOÀI NAM
Lớp: 51TH-2
MSSV: 51130953
Tháng 6/2013
1
LỜI MỞ ĐẦU
Nền công nghiệp giải trí ngày càng phát triển, đặc biệt trong lĩnh vực điện ảnh và
game, đòi hỏi công nghệ đồ họa phải phát triển tương ứng để đáp ứng được nhu cầu
ngày càng cao của người sử dụng. Ta có thể kiểm chứng sức mạnh của công nghệ
đồ họa hiện tại qua những hình ảnh hết sức chân thực của các bộ phim bom tấn
trong những năm gần đây. Và một trong những điều tác động đến thị giác người
xem là khả năng diễn hoạt cử động uyển chuyển của các mô hình nhân vật 3D trong
phim. Để làm được những chuyển động như vậy, một công nghệ hỗ trợ cho việc xử
lí chuyển động đã ra đời, đó là công nghệ MoCap (Motion Capture – bắt giữ chuyển
động). Qua việc thu nhận sự chuyển động của các điểm đánh dấu hoặc cảm biến
được gắn trên người diễn viên, công nghệ MoCap giúp các nhà làm phim tái hiện
được những chuyển động thật đến đáng kinh ngạc lên các mô hình nhân vật trong
sản phẩm của mình. Với lịch sử phát triển lâu đời, công nghệ MoCap đã và đang
ngày càng hoàn thiện để phục vụ cho nhiều mục đích khác nhau ngoài phim ảnh ra.
Tuy nhiên, một trong những trở ngại khi tiếp xúc với công nghệ này là chi phí thực
hiện đắt đỏ cho các thiết bị chuyên dụng cũng như xây dựng môi trường thực hiện
kĩ thuật này. Đặc biệt, việc MoCap khuôn mặt khá phức tạp vì các điểm đánh dấu
khá nhiều. Với mong muốn cung cấp một giải pháp hiệu quả và tiết kiệm chi phí
cho các tổ chức vừa và nhỏ, em xin được thực hiện một phương pháp MoCap khuôn
mặt không cần sử dụng cảm biến cũng như các thiết bị chuyên dụng đắt tiền. Với
phương pháp này, tất cả những gì ta cần chỉ là một webcam thông dụng là đủ để
thực hiện MoCap. Ý tưởng cơ bản của phương pháp là bắt các điểm đánh dấu trên
khuôn mặt một cách tự động dưới sự kết hợp của hai thuật toán: thuật toán phát hiện
khuôn mặt Viola-Jones và thuật toán chiết xuất các điểm đặc trưng ASM (Active
Shape Model).
Vì thời gian thực hiện có hạn, cùng những khó khăn phát sinh trong quá trình thực
hiện, nên đồ án không tránh khỏi những thiếu sót. Kính mong thầy cô góp ý và sửa
chữa để đồ án ngày càng được hoàn thiện hơn.
Chân thành cảm ơn giáo viên hướng dẫn thầy Nguyễn Đình Cường, các thầy Lê
Hoàng Thanh, Trần Minh Văn, các thầy cô khác trong khoa CNTT cũng như nhà
trường đã tạo điều kiện và giúp đỡ em trong quá trình thực hiện đồ án.
2
MỤC LỤC
Mở đầu 1
CHƯƠNG 1. TỔNG QUAN VỀ CÔNG NGHỆ MOCAP 8
1.1 Lịch Sử Ra Đời Của Công Nghệ MoCap 8
1.2 Các Kĩ Thuật MoCap 12
1.3 Đánh Giá 15
1.4 Định Hướng Đề Tài 16
Chương 2. CƠ SỞ LÍ THUYẾT CỦA PHƯƠNG PHÁP MOCAP SỬ DỤNG
HỆ THỐNG QUANG HỌC KHÔNG ĐÁNH DẤU 18
2.1 Thuật Toán Phát Hiện Khuôn Mặt Viola-Jones 18
2.1.1 Đặc trưng Haar-Like 19
2.1.2 Máy phân lớp Adaboost 20
2.1.2 Hoạt động của thuật toán Viola-Jones 21
2.2 Thuật Toán Chiết Xuất Các Điểm Đặc Trưng ASM 21
2.2.1 Một số điều cần biết 22
2.2.2 Sơ lược về ASM 23
2.1.2 Profile model và shape model 24
Chương 3. KINH NGHIỆM THỰC HIỆN TRONG QUÁ TRÌNH TRIỂN
KHAI PHƯƠNG PHÁP 29
3.1 Quá Trình Thực Hiện Viola-Jones 29
3.1.1 Huấn luyện 29
3.1.2 Sử dụng Viola-Jones trong OpenCV 37
3.2 Quá Trình Thực Hiện ASM 39
3.2.1 Vài điều cần chuẩn bị trước khi huấn luyện 39
3.2.2 Huấn luyện 46
3.2.2 Tìm điểm đặc trưng của khuôn mặt trên ảnh 48
3.2.2 Xử lí dữ liệu chuyển động và áp lên mô hình 3D 53
3
Chương 4. ĐÁNH GIÁ PHƯƠNG PHÁP VÀ PHƯƠNG HƯỚNG PHÁT
TRIỂN TRONG TƯƠNG LAI 55
4.1 Đánh Giá Thuật Toán Viola-Jones 55
4.2 Đánh Giá Thuật Toán ASM 57
4.3 Đánh Giá Chung Về Phương Pháp MoCap Và Phương Hướng Phát
Triển Trong Tương Lai 59
PHỤ LỤC 62
Phụ Lục A: Tìm Các Tham Số Của Phép Align 62
Phụ Lục B: Tạo Dữ Liệu Huấn Luyện Bằng Tay 63
TÀI LIỆU THAM KHẢO 66
4
DANH MỤC CÁC BẢNG, SƠ ĐỒ, HÌNH
Bảng 2.1: Thuật toán align shape 23
Bảng 2.2: Thuật toán tạo thành shape kiểm thử 26
Bảng 4.1: Kết quả đánh giá thuật toán Viola-Jones 56
Bảng 4.2: Kết quả đánh giá thuật toán ASM 59
Hình 1.1: Animal locomotion 9
Hình 1.2: Zoopraxiscope 9
Hình 1.3: Chuyển động được bắt bằng máy quay tốc độ cao Stroboscope 9
Hình 1.4: Thiết bị rotoscope cổ điển 10
Hình 1.5: Thực hiện kĩ thuật rotoscoping 10
Hình 1.6: Chiếc mũ bắt cử động và Mike the talking head 11
Hình 1.7: Dozo 11
Hình 1.8: Alive! System 12
Hình 1.9: MoCap trong phim “Avatar” 12
Hình 1.10: Đánh dấu các điểm sáng màu lên cơ thể diễn viên 13
Hình 1.11: Đánh dấu bằng đèn LED 13
Hình 1.12: Các cảm biến từ 14
Hình 1.13: Bắt chuyển động bằng cảm biến âm dùng cho máy chơi game gia
đình 14
Hình 1.14: Bộ xương cơ học 15
Hình 1.15: Sợi quang dành cho việc bắt cử động của bàn tay 15
Hình 2.1: Quá trình MoCap khuôn mặt 18
Hình 2.2: Đặc trưng Haar-Like 19
Hình 2.3: 19
Hình 2.4: 19
Hình 2.5: Bộ phân lớp AdaBoost 20
Hình 2.6: Nguyên lí hoạt động của thuật toán Viola-Jones 21
Hình 2.7: Các điểm landmark 22
Hình 2.8: Bên trái: Một shape cơ bản với 3 điểm Giữa: Shape được biểu diễn
với mảng Bên phải: Shape được biểu diễn dưới dạng vector 22
Hình 2.9: Align các hình chữ nhật có kích thước khác nhau 22
Hình 2.10: Đánh dấu các điểm landmark trong tập huấn luyện 23
5
Hình 2.11: Whisker được thể hiện dưới các đường thẳng màu trắng 25
Hình 2.12: Màu vàng là cạnh khuôn mặt Màu trắng là whisker 25
Hình 2.13: Bên trái: shape kiểm thử Bên phải: shape được sinh ra từ shape
model dựa trên shape kiểm thử cho ra kết quả tốt hơn 28
Hình 3.1: 29
Hình 3.2: Positive Image 30
Hình 3.3: Negative Image 30
Hình 3.4: Thông tin về vùng ảnh được bắt 31
Hình 3.5: File info.txt 31
Hình 3.6: Quá trình huấn luyện ảnh 32
Hình 3.7: Các đặc trưng Haar-Like được sử dụng 34
Hình 3.8: Result window 39
Hình 3.9: AR landmark 40
Hình 3.10: XM2VTS landmark 41
Hình 3.11: BioID landmark 41
Hình 3.12: Tạo file mô tả 43
Hình 3.13: File mô tả 43
Hình 3.14: Cạnh khuôn mặt được thể hiện dưới đường thẳng màu
đen.Whisker là đường thẳng màu vàng.Các điểm landmark là các điểm màu
đỏ 44
Hình 3.15: Bên trái: cách vẽ whisker đúng Bên phải: cách vẽ whisker sai 44
Hình 3.16: H1. Vẽ đoạn thẳng vuông góc với cạnh kề nó H2. Vẽ đoạn thằng đi
qua landmark và trọng tâm của shape H3. Vẽ đoạn thẳng đi qua landmark và
trung điểm của 2 landmark kề 2 bên 45
Hình 3.17: Đường thẳng vẽ bằng phương trình tổng quát trên màn hình 46
Hình 3.18: Đường thẳng vẽ bằng thuật toán trong đồ họa 46
Hình 3.19: Ma trận hiệp phương sai của tất cả các điểm landmark 48
Hình 3.20: Shape khởi tạo quá tệ có thể dẫn đến kết quả lỗi 48
Hình 3.21: Khuôn mặt tổng thể 49
Hình 3.22: Xác định hình chữ nhật bao quanh shape trung bình 49
Hình 3.23: Align hình chữ nhật bao quanh shape trung bình lên khuôn mặt
tổng thể 50
Hình 3.24: Màu đỏ là khuôn mặt khởi tạo Màu xanh dương là hình chữ nhật
bao quanh khuôn mặt trung bình Màu vàng là khuôn mặt trung bình 50
Hình 3.25: Chỉnh lại phép align 51
6
Hình 3.27: Xử lí file c3d với Autodesk Motion Builder 54
Hình 4.1: 56
Hình 4.2:
Kết quả bị sai lệch với khuôn mặt đeo kính và nghiêng 57
Hình 4.3: ‘s’ là khoảng cách giữa 2 trọng tâm ‘d’ là khoảng cách giữa các
điểm tương ứng 58
Hình 4.4:
Thuật toán ASM không ổn định với nhiều kiểu khuôn mặt khác nhau
59
Hình 4.5: Triển khai kĩ thuật MoCap không đánh dấu 61
Hình B.1: 63
Hình B.2: 63
Hình B.3: 64
Hình B.4: 64
Hình B.5: 64
Hình B.6: 55
7
KÍ HIỆU CÁC CỤM TỪ VIẾT TẮT
Từ viết tắt Giải thích
ASM Active Shape Model
MoCap
2D
3D
Motion Capture – Bắt giữ chuyển động
2 dimension – 2 chiều
3 dimension – 3 chiều
8
CHƯƠNG 1:
TỔNG QUAN VỀ CÔNG NGHỆ MOCAP
MoCap (Motion Capture – bắt giữ chuyển động) là kĩ thuật thu lại chuyển động thật
của đối tượng được sử dụng trong các lĩnh vực như điện ảnh, quân đội, giải trí, thể
thao, y tế, robot và thị giác máy tính (computer vision). Phần này xin được phép
giới thiệu một cách tổng quát về công nghệ MoCap trong lĩnh vực được sử dụng
nhiều nhất là điện ảnh.
MoCap là kĩ thuật bắt chuyển động của diễn viên, sau đó biểu diễn hoạt họa lại
chuyển động đó lên diễn viên số được dựng bằng máy tính là các mô hình 2D hoặc
3D. Ý tưởng cơ bản của kĩ thuật MoCap là thu lại chuyển động của một hay nhiều
diễn viên bằng cách lấy mẫu chuyển động nhiều lần trong một giây. Các kĩ thuật sơ
khai sử dụng hình ảnh từ nhiều webcam và chuyển thành dữ liệu 3D. Kĩ thuật
MoCap chỉ đơn thuần bắt lại chuyển động của đối tượng mà không quan tâm tới bề
ngoài của đối tượng đó [21][23].
1.1 Lịch Sử Ra Đời Của Công Nghệ MoCap:
Ta có thể thấy rằng, MoCap là một trong những kĩ thuật được ứng dụng trong
những bộ phim và game bom tấn hiện nay cùng các lĩnh vực liên quan nhằm mang
đến cho con người những trải nghiệm thị giác chân thực nhất. Và thật khó có thể tin
rằng, kĩ thuật này đã được manh nha từ rất sớm, trước khi cả máy tính điện tử ra
đời. Cùng điểm qua những mốc thời gian nổi bật trong quá trình hình thành và phát
triển của MoCap:
- Năm 1830, khi điện ảnh thế giới còn trong sự thống trị của những thước phim
trắng đen, Eadweard Muybridge đã cho ra đời những đoạn phim MoCap đầu tiên.
Ông sử dụng các máy quay cơ cổ điển để thu lại những chuyển động của các loại
động vật (animal locomotion) và ghi chúng trong một loại đĩa đặc biêt để phát lại
với thiết bị gọi là Zoopraxiscope. Một vài năm sau đó, những thước phim MoCap
được trình chiếu bởi Zoopraxiscope ra đời. Các kĩ thuật tương tự được phát triển
sau này được ứng dụng trong bộ phim hoạt hình nổi tiếng “nàng bạch tuyết và bảy
chú lùn” của Walt Disney. Trong bộ phim, kĩ thuật này được sử dụng để thể hiện
bước chân của nàng Bạch Tuyết [22][24][25].
9
Hình 1.1 Animal locomotion [24]
Hình 1.2 Zoopraxiscope [25]
- Năm 1903, Harold Edgerton sử dụng máy quay tốc độ cao Stroboscope để bắt
chuyển động của đối tượng. Nhờ sử dụng Stroboscope mà những thước phim của
ông cho chất lượng tốt hơn nhiều [21][22].
Hình 1.3 Chuyển động được bắt bằng máy quay tốc độ cao Stroboscope [23]
10
- Năm 1915, Max Fleischer đề xuất một kĩ thuật MoCap mới được sử dụng trong
diễn hoạt 2D với tên gọi “rotoscoping”. Trong kĩ thuật này, ông tiến hành thu lại
đoạn phim chuyển động của diễn viên. Sau đó, ông đánh dấu các điểm bao quanh
rìa của đối tượng cần MoCap trong mỗi frame của video. Tiếp theo, ông ánh xạ các
điểm này lên đối tượng hoạt hình trong kịch bản cần thể hiện chuyển động. Nói
cách khác, ông vẽ các nhân vật hoạt hình theo các điểm mốc đã đánh dấu trong các
frame của đoạn phim đã quay từ trước. Ông thực hiện kĩ thuật này trên thiết bị cùng
tên “rotoscope”. Bộ phim đầu tiên sử dụng kĩ thuật này là “Out of Inkwell” do ông
làm họa sĩ. Một bộ phim nổi tiếng khác cũng được ứng dụng kĩ thuật này là “Nàng
bạch tuyết và bảy chú lùn” của Walt Disney năm 1937.
Đây là một kĩ thuật khá cổ điển nhưng rất mạnh vẫn còn được sử dụng cho đến
ngày nay và được tích hợp trong bộ công cụ làm phim của Adobe. Kĩ thuật này
khắc phục được điểm yếu của MoCap thời kì đầu là chỉ thể hiện được chuyển động
của đối tượng mẫu mà không tùy biến sang các nhân vật khác được. Ngày nay, với
sự trợ giúp của máy tính loại bỏ được thiết bị rotoscope cồng kềnh, cùng các thuật
toán dò vết, việc triển khai kĩ thuật này được thực hiện đơn giản hơn bao giờ hết
[21][22][26].
Hình 1.4 Thiết bị rotoscope cổ điển [26]
Hình 1.5 Thực hiện kĩ thuật rotoscoping
- Năm 1988, khi máy tính điện tử ra đời cùng với sự xuất hiện của đồ họa 3D,
deGraf và Wahrman
sử dụng kĩ thuật MoCap trong một ứng dụng với tên gọi là
“Mike the talking head”. Bằng cách sử dụng một chiếc mũ đặc biệt bắt từng cử
động nhỏ của khuôn mặt, ứng dụng này có chức năng áp cử động lên một khuôn
11
mặt 3D và làm nó “nói chuyện”. Đây thực sự là một bước tiến lúc bấy giờ. Ứng
dụng này giúp cho các nhà làm phim hoạt hình thể hiện được những cử động chân
thực nhất của khuôn mặt nhân vật bằng cách thu trực tiếp thay vì thể hiện bằng tay
như lúc trước [21][22].
Hình 1.6 Chiếc mũ bắt cử động và Mike the talking head [22]
- Năm 1989, Kleiser và Walczak sản xuất một đoạn phim hoạt hình 3D ngắn với
tên gọi “Dozo”. Đoạn phim mô tả cảnh một ca sĩ ảo đang biểu diễn trước micro. Ở
trong đoạn phim này, 2 tác giả đã sử dụng kĩ thuật MoCap sử dụng hệ thống quang
học (optically system motion capture) với các camera thu chuyển động thật của diễn
viên. Dựa trên sự ghi nhận chuyển động của các đoạn băng dính phản quang trên
người diễn viên. Hệ thống sẽ tự động biểu diễn lại chuyển động ấy lên mô hình 3D.
Đây là một phương pháp mới thay cho kĩ thuật dùng khung xương kim loại cồng
kềnh để bắt chuyển động như trước. Tuy nhiên, kĩ thuật này vẫn còn nhiều vướng
mắc trong việc bắt các đoạn băng dính phản quang cũng như tốc độ xử lí còn chậm
[22].
Hình 1.7 Nhân vật trong đoạn phim Dozo [22]
- Năm 1992, deGraf tiếp nối thành công của “Mike the talking head” bằng việc
phát triển một hệ thống dùng cho việc MoCap toàn bộ cơ thể người với tên gọi
Alive!. Hệ thống gồm các bộ khung cơ khí được chế tạo dành cho việc MoCap đầu,
hông, bàn chân và bàn tay với độ chi tiết cao. Hệ thống được cải tiến so với người
tiền nhiệm để bắt chuyển động với độ chính xác cao nhất trên toàn bộ cơ thể người
[22].
12
Hình 1.8 Hệ thống bắt giữ chuyển động Alive! system
Những năm sau đó, dưới sự phát triển vượt bậc của công nghệ đồ họa máy tính,
MoCap đã được ứng dụng một cách rộng rãi trong các bộ phim bom tấn như “Lord
Of Ring”, “Avatar”, “Transformer”…
Hình 1.9 MoCap trong phim “Avatar”
1.2 Các Kĩ Thuật MoCap:
Ta có thể thấy, MoCap là một kĩ thuật đồ họa có bề dày lịch sử lâu đời với rất nhiều
phương pháp được cải tiến theo thời gian. Dựa vào điểm chung về thiết bị cũng như
quy trình thực hiện, ta có thể phân loại các phương pháp MoCap được dùng phổ
biến hiện nay như sau:
- Optical Passive (hệ thống quang học bị động): Là hệ thống MoCap bắt giữ
chuyển động bằng cách thu dữ liệu từ các điểm đánh dấu trên đối tượng. Để thực
hiện phương pháp này cần một bộ áo đặc biệt được gắn sẵn các điểm đánh dấu và
hệ thống các camera độ nét cao. Bộ áo được thiết kế chỉ với một màu (thường là
màu đen) với các điểm đánh dấu màu sáng nổi bật (thường là màu trắng). Tại đây,
camera sẽ được bố trí ở nhiều góc độ khác nhau để thu lại cử động của đối tượng.
Máy tính sẽ xử lí phần nền, da người ,chỉ lấy các điểm đánh dấu màu sáng và
chuyển dữ liệu 2D sang 3D. Phương pháp này cho chuyển động trên mô hình 3D
với chất lượng cao. Các điểm đánh dấu rất linh hoạt, có thể thay đổi tùy vào đối
tượng và mục đích cụ thể. Tuy nhiên, để phương pháp này đạt được hiệu quả cao
13
nhất, cần thực hiện nó trong nhà với một môi trường ánh sáng ít biến đổi. Với
những cử động phức tạp như cử động khuôn mặt, số lượng điểm đánh dấu phải tăng
lên tương ứng và việc gắn chúng cũng là một vấn đề [22].
Hình 1.10 Đánh dấu các điểm sáng màu lên cơ thể diễn viên [22]
- Optical Active (hệ thống quang học chủ động): Tương tự như kĩ thuật optical
passive nhưng thay các điểm đánh dấu bằng các đèn LED có độ sáng như nhau.
Bằng việc đo cường độ sáng của các đèn LED, việc tính toán vị trí của các điểm
đánh dấu trở nên dễ dàng hơn nhiều. Phương pháp này cho ra chất lượng chuyển
động tốt hơn hẳn so với kĩ thuật trên và thường dùng để bắt cử động thời gian thực
[22].
Hình 1.11 Đánh dấu bằng đèn LED[22]
- Electromagetic (hệ thống cảm biến từ): Phương pháp này thay các điểm đánh
dấu quang học bằng các cảm biến từ. Các cảm biến này sẽ thu thập tần số của từ
trường phát ra từ một nguồn phát. Bằng cách đo thời gian phản hồi cũng như cường
độ từ trường đến các cảm biến, ta có thể tính toán được vị trí của các điểm đánh dấu
và thể hiện nó lên không gian 3D. Phương pháp này cũng cho độ nhạy khá cao và
được dùng trong các ứng dụng đòi hỏi thời gian thực. Nhược điểm của phương pháp
14
là bộ áo gắn cảm biến khá cồng kềnh và chỉ thực hiện trong môi trường ít nhiễu từ
(ít kim loại). Thậm chí cả cốt sắt trong tường bê tông cũng có thể ảnh hưởng đến kết
quả của phương pháp này [22].
Hình 1.12 Các cảm biến từ [22]
- Acoustic (hệ thống cảm biến âm thanh): Phương pháp này sử dụng các cảm biến
âm thanh để đánh dấu lên cơ thể người. Tương tự như dùng cảm biến từ, phương
pháp này đo thời gian phản hồi, cũng như cường độ âm từ một nguồn phát lên các
cảm biến. Sử dụng cảm biến âm thanh nên nó loại bỏ được sự ảnh hưởng của môi
trường nhiễu từ so với phương pháp từ. Đây là một phương pháp mới đang được
nghiên cứu để ứng dụng vào các máy chơi game gia đình [22].
Hình 1.13 Bắt chuyển động bằng cảm biến âm dùng cho máy chơi game gia đình [22]
15
- Electromechanical (hệ thống cảm biến cơ học): Hệ thống thu chuyển động của
đối tượng dựa trên một bộ khung xương cơ học. Đối tượng sẽ mặc bộ khung cơ học
này lên người và dữ liệu chuyển động sẽ được thu trực tiếp dựa trên chuyển động
của bộ khung. Kĩ thuật này có ưu điểm là độ chính xác cao, không phụ thuộc vào
môi trường hoạt động, giá thành khá rẻ. Tuy nhiên, cử động của đối tượng bị hạn
chế bởi bộ khung cơ học và không linh hoạt trong việc thay đổi các điểm cử động
[22].
Hình 1.14 Bộ xương cơ học [22]
- Optical Febric (hệ thống cảm biến sợi quang): Tương tự như phương pháp
dùng bộ xương cơ học, phương pháp này thay bộ xương cơ học bằng các sợi quang
chạy khắp cơ thể. Phương pháp này loại trừ được khiếm khuyết khi cử động của bộ
xương cơ học và không bị ảnh hưởng bởi môi trường bên ngoài [22].
Hình 1.15 Sợi quang dành cho việc bắt cử động của bàn tay [22]
1.3 Đánh Giá:
Với bề dày lịch sử cùng những sản phẩm điện ảnh bom tấn được thực hiện, công
nghệ MoCap đã phát huy được những thế mạnh tuyệt vời của nó. Có thể liệt kê một
số ưu, khuyết điểm của nó trong lĩnh vực điện ảnh sau đây [22]:
- Ưu:
o Cho kết quả biểu diễn chuyển động rất nhanh thậm chí làm việc trên thời
gian thực.
o Hiệu quả và có chi phí thấp hơn nhiều so với biểu diễn hoạt họa bằng tay.
16
o Không làm kéo dài thời gian làm việc hơn so với các công nghệ truyền
thống. Thậm chí, việc biểu diễn chuyển động có thể được kiểm thử với nhiều
phong cách ứng với các diễn viên khác nhau. Việc này tiết kiệm chi phí hơn
so với chỉ làm việc với một diễn viên nổi tiếng.
o Thể hiện được chuyển động các chuyển động phức tạp với độ chính xác cao.
o Các chương trình xử lí chuyển được làm bởi các hãng phát triển thứ 3 hoặc
miễn phí giúp giảm chi phí rất nhiều.
- Khuyết:
o Cần phải có các phần cứng chuyên dụng cũng như các phần mềm xử lí
chuyên dụng khi thực hiện.
o Chi phí cho việc mua phần mềm, phần cứng là quá lớn cho các hãng phát
triển nhỏ.
o Hệ thống MoCap đôi khi cần phải được thực hiện trong các trường quay
được thiết kế đặc biệt với hệ thống chiếu sáng và môi trường đáp ứng đủ
điều kiện thực hiện.
o Khi có vấn đề xuất hiện, việc thực hiện lại cảnh quay sẽ đơn giản hơn so với
việc xử lí dữ liệu lỗi.
o Các cử động không tuân theo định luật vật lí không thể bắt được. Điển hình
là các động tác bay, nhảy xa,… trong các bộ phim điện ảnh vẫn cần phải có
dụng cụ hỗ trợ.
o Các kĩ thuật biểu diễn hoạt họa truyền thống như “squash and stretch” (biến
dạng vật thể theo chuyển động) không thể được thực hiện bằng MoCap và
phải được thêm vào sau khi quá trình MoCap được thực hiện.
o Khi thực hiện MoCap với những nhân vật máy tính đặc biệt như: khổng lồ, tí
hon, quái vật,… diễn viên cần hết sức lưu ý trong khi thể hiện các cử động
vật lí. Ví dụ như một con quái vật lưng gù không thể đứng thẳng được.
1.4 Định Hướng Đề Tài:
Qua phần tổng quan trên, ta có thể thấy, MoCap thực sự là một công nghệ hấp dẫn
đối với bất kì nhóm phát triển nào. Tuy nhiên, để thực hiện MoCap cần cung cấp
những thiết bị phần cứng hết sức chuyên dụng. Và việc đánh dấu các điểm mốc
cũng là một thách thức với những người mới lần đầu thực hiện MoCap. Với những
cử động phức tạp như khuôn mặt, số điểm đánh dấu có thể lên tới vài trăm điểm.
Điều này thực sự gây khó khăn cho những công ty nhỏ hoặc các nhóm phát triển
nhỏ lẻ. Với mong muốn công nghệ MoCap được phổ biến rộng rãi kẻ cả đối với các
cá nhân có ý định xây dựng sản phẩm ứng dụng công nghệ này, em xin được đề
xuất nghiên cứu và thực hiện một phương pháp MoCap không cần sử dụng điểm
đánh dấu vật lí và chỉ cần một webcam thông dụng, đó là phương pháp “Optical
Maskless” (hệ thống quang học không cần đánh dấu). Phương pháp được thực hiện
để thu lại cử động khuôn mặt và áp chuyển động đó lên mô hình 3D.
Ý tưởng cơ bản của phương pháp này là sử dụng webcam thu lại khuôn mặt người.
Sau đó, sử dụng một thuật toán để chiết xuất ra các điểm mốc đánh dấu của khuôn
mặt. Thu lại chuyển động của khuôn mặt đó rồi áp nó lên một mô hình 3D đã được
17
dựng sẵn. Như vậy, phương pháp này sẽ bắt các điểm đánh dấu một cách tự động
chỉ với một webcam đơn giản. Việc áp chuyển động lên mô hình có thể được thực
hiện khá dễ dàng nhờ các phần mềm xử lí chuyển động chuyện nghiệp.
Để thực hiện được điều này, phương pháp sử dụng phối hợp 2 thuật toán chính: một
thuật toán cho việc bắt khuôn mặt và một cho chiết xuất các điểm đánh dấu. Với
việc bắt khuôn mặt, ta sử dụng thuật toán Viola – Jones kkhá phổ biến và được cài
đặt sẵn trong OpenCV. Với việc chiết xuất các điểm đánh dấu, ta sử dụng thuật toán
ASM (active shape model). Dữ liệu chuyển động được đóng gói thành file *.c3d và
xử lí trên phần mềm “Autodesk Motion Builder”.
18
CHƯƠNG 2:
CƠ SỞ LÍ THUYẾT CỦA PHƯƠNG PHÁP
MOCAP SỬ DỤNG HỆ THỐNG QUANG HỌC
KHÔNG ĐÁNH DẤU
Cách thức bắt giữ chuyển động được thực hiện dựa trên phương pháp của Abraham
Ranardo Sumarsono và Iping Supriana Suwardi [18].
Để bắt giữ chuyển động khuôn mặt, hai tác giả thực hiện theo mô hình sau:
Hình 2.1 Quá trình MoCap khuôn mặt
Như ta thấy ở trên, để bắt giữ chuyển động của khuôn mặt, ta thu khuôn mặt bằng
một máy quay thông dụng (ở đây ta dùng webcam). Với mỗi frame ảnh của video,
ta dùng một thuật toán phát hiện khuôn mặt để xác định vùng ảnh cần xử lí cho
công đoạn kế tiếp. Sau khi xác định được vùng ảnh chứa khuôn mặt, ta dùng một
thuật toán để chiết xuất ra các điểm đặc trưng trên khuôn mặt. Các điểm đặc trưng
này được thay thế cho việc gắn các điểm đánh dấu vật lí trực tiếp lên khuôn mặt
như phần tổng quan đã trình bày. Số lượng các điểm đặc trưng cũng như vị trí đánh
dấu phụ thuộc vào người thực hiện và được thể hiện thông qua quá trình huấn
luyện. Sau đó, ta ghi lại dữ liệu chuyển động qua các frame của các điểm đặc trưng
này, kết xuất thành một file dữ liệu. Với file dữ liệu chuyển động ghi được, ta sử
dụng một phần mềm xử lí chuyển động để áp nó lên một mô hình 3D. Cuối cùng, ta
được một mô hình khuôn mặt 3D với chuyển động giống như chuyển động khuôn
mặt trên video.
Vì công việc bắt chuyển động được thực hiện online thông qua webcam, nên ta sử
dụng thuật toán bắt khuôn mặt Viola-Jones và thuật toán chiết xuất các điểm đặc
trưng ASM. Hai thuật toán được chọn vì những ưu thế trong tốc độ cũng như độ
chính xác tương đối cao phù hợp với xử lí thời gian thực.
2.1 Thuật Toán Phát Hiện Khuôn Mặt Viola-Jones:
19
Đây là phương pháp phát hiện khuôn mặt của Paul Viola và Michael Jones đề xuất
vào năm 2001. Phương pháp sử dụng đặc trưng Haar-Like kết hợp với máy phân
lớp Ada Boost giúp tăng tốc độ của chương trình [13].
2.1.1 Đặc trưng Haar-Like:
Các đặc trưng Haar-like là các hình chữ nhật đen trắng để xác định khuôn mặt
người. Gồm 4 đặc trưng cơ bản:
Hình 2.2 Đặc trưng Haar-Like
Sử dụng các đặc trưng này, ta tính được giá trị đặc trưng Haar-Like chính là độ
chênh lệnh của tổng các giá trị điểm ảnh của 2 vùng trắng và đen theo công thức:
f(x) = Tổng
vùng đen
(các mức xám của pixel) - Tổng
vùng trắng
(các mức xám của pixel)
(2.1)
Để tăng tốc độ tính toán và xử lí, Viola-Jones đề xuất một khái niệm mới là
Intergral Image (tích phân ảnh). Intergral Image là một mảng hai chiều có kích
thước bằng kích thước của ảnh đang xét. Khi đó, tổng mức xám của 1 vùng được
tính như sau:
Hình 2.3
D = A + B + C + D – (A+B) – (A+C) + A
= P1(x1, y1) + P2(x2, y2) + P3(x3, y3) + P4(x4, y4) – (P1(x1, y1)+P2(x2, y2)) – (P1(x1,
y1)+P3(x3, y3)) + P1(x1, y1)
Trong đó:
Hình 2.4
20
Để sử dụng đặc trưng HaarLike cho việc phát hiện khuôn mặt, ta phải xây dựng một
bộ huấn luyện cho mỗi đặc trưng này. Cụ thể, đặt mỗi đặc trưng HaarLike lên vùng
mặt trên hàng nghìn bức ảnh huấn luyện. Tính toán các giá trị đặc trưng Haarlike, ta
được một bộ huấn luyện dùng để phát hiện khuôn mặt. Khi tiến hành detect khuôn
mặt với 1 ảnh đầu vào, ta quét ảnh với một vùng có kích thước cố định. Tính giá trị
đặc trưng HaarLike của vùng này và so khớp với bộ huấn luyện theo một ngưỡng
sai lệch, ta sẽ tìm ra vùng nào có chứa khuôn mặt người [1][13][14][17].
2.1.2 Máy phân lớp AdaBoost:
Adaboost là một phương pháp máy học hoạt động trên nguyên tắc kết hợp các bộ
phân loại yếu ( weak classifiers) để hình thành một bộ phân loại mạnh (strong
classifier).
Là một cải tiến của tiếp cận boosting, AdaBoost sử dụng thêm khái niệm trọng số
(weight) để đánh dấu các mẫu khó nhận dạng. Trong quá trình huấn luyện, cứ mỗi
weak classifiers được xây dựng, thuật toán sẽ tiến hành cập nhật lại trọng số để
chuẩn bị cho việc xây dựng weak classifier kế tiếp: tăng trọng số của các mẫu bị
nhận dạng sai và giảm trọng số của các mẫu được nhận dạng đúng bởi weak
classifier vừa xây dựng. Bằng cách này weak classifer sau có thể tập trung vào các
mẫu mà các weak classifiers trước nó làm chưa tốt. Sau cùng, các weak classifers sẽ
được kết hợp tùy theo mức độ tốt của chúng để tạo nên strong classifier.
Hình 2.5 Bộ phân lớp AdaBoost
Trong đó, hk là các bộ phân loại yếu, được biểu diễn như sau:
(2.2)
x: cửa sổ con cần xét
O
k
: ngưỡng (O = teta)
f
k
: giá trị của đặc trưng Haar-like
p
k
: hệ số quyết định chiều của phương trình
21
2.1.3 Hoạt động của thuật toán Viola-Jones:
Viola Jones hoạt động theo sơ đồ sau:
Hình 2.6 Nguyên lí hoạt động của thuật toán Viola-Jones [17]
Như trong hình trên, từ ảnh gốc ban đầu, ta sẽ được tính Integral Image, là mảng 2
chiều với phần tử (x, y) sẽ được tính bằng tổng của các phần tử (x', y') với x' < x và
y' < y, mục đích là để tính nhanh tổng của các giá trị mức xám của một vùng hình
chữ nhật bất kỳ trên ảnh gốc. Các vùng ảnh con này sẽ được đưa qua các hàm Haar
cơ bản để ước lượng đặc trưng, kết quả ước lượng sẽ được đưa qua bộ điều chỉnh
AdaBoost để loại bỏ nhanh các đặc trưng không có khả năng là đặc trưng của khuôn
mặt người. Chỉ có một tập nhỏ các đặc trưng mà bộ điều chỉnh AdaBoost cho là có
khả năng là đặc trưng của khuôn mặt người mới được chuyển sang cho bộ quyết
định kết quả. Bộ quyết định sẽ tổng hợp kết quả là khuôn mặt người nếu kết quả của
các bộ phân loại yếu trả về là khuôn mặt người.
Mỗi bộ phân loại yếu sẽ quyết định kết quả cho một đặc trưng Haar-like, được xác
định ngưỡng đủ nhỏ sao cho có thể vượt được tất cả các bộ dữ liệu mẫu trong tập dữ
liệu huấn luyện (số lượng ảnh khuôn mặt trong tập huấn luyện có thể rất lớn). Trong
quá trình xác định khuôn mặt người, mỗi vùng ảnh con sẽ được kiểm tra với các đặc
trưng trong chuỗi các đặc trưng Haar-like, nếu có một đặc trưng Haar-like nào cho
ra kết quả là khuôn mặt người thì các đặc trưng khác không cần xét nữa. Thứ tự xét
các đặc trưng trong chuỗi các đặc trưng Haar-like sẽ được dựa vào trọng số (weight)
của đặc trưng đó do AdaBoost quyết định dựa vào số lần và thứ tự xuất hiện của các
đặc trưng Haar-like [17].
2.2 Thuật Toán Chiết Xuất Các Điểm Đặc Trưng ASM:
Thuật toán ASM (Active Shape Model) là thuật toán chiết xuất các điểm đặc trưng
của một đối tượng cụ thể, do Cootes và Taylor đề xuất vào năm 2004 [19][20].
Phục vụ cho mục đích MoCap khuôn mặt, thuật toán được sử dụng để tự động chiết
xuất các điểm đặc trưng của khuôn mặt thay cho các điểm đánh dấu vật lí của
phương pháp MoCap truyền thống. Các điểm đặc trưng được quyết định và đánh
dấu bởi người phát triển.
22
Hình 2.7 Các điểm landmark [19]
2.2.1 Một Số Điều Cần Biết:
a. Shape:
Hình 2.8 Bên trái: Một shape cơ bản với 3 điểm
Giữa: Shape được biểu diễn với mảng
Bên phải: Shape được biểu diễn dưới dạng vector [19]
Phục vụ cho mục đích của bài toán, một shape được biểu diễn dưới dạng một vector
kích thước 2n × 1 với n là số điểm của shape, nửa đầu chứa các giá trị x và nửa sau
chứa các giá trị giá trị y. Các cạnh giữa các điểm không cần thiết phải được lưu trữ
vì bài toán chỉ cần quan tâm đến các điểm của shape (shape point).
Đỉnh của một shape (shape point) cũng là điểm đánh dấu (landmark) hay các điểm
đặc trưng (feature point). Shape dùng trong bài được hiểu là hình dạng của khuôn
mặt (face shape).
b. Align shape:
Align shapes (phép dóng shape) là một phép biến hình có tác dụng thu hẹp khoảng
cách giữa các shape đến mức nhỏ nhất. Hay nói cách khác, phép align shape có
nhiệm vụ xếp chồng các shape có số đỉnh bằng nhau lên nhau. Đồng thời, tỉ lệ và
xoay các shape sao cho chúng khớp nhau nhất.
Hình 2.9 Align các hình chữ nhật có kích thước khác nhau [19]
23
Theo định nghĩa trên, ta có thể thấy, phép align shape là sự kết hợp giữa 3 phép biến
hình: tịnh tiến, xoay, tỉ lệ. Tuy nhiên, không phải lúc nào ta cũng thực hiện đồng
thời cả 3 phép này. Phép align shape còn được gọi là phép biến đổi tương tự
(similarity transform).
Cụ thể, một phép biến đổi tương tự T lên một điểm với tọa độ (x, y), góc quay θ, tỉ
lệ s và tịnh tiến một khoảng x
translate
, y
translate
có thể được biểu diễn bằng công thức:
(2.3)
Bảng 2.1 Thuật toán align shape
Cách thức tìm các tham số cho phép align được trình bày ở phần phụ lục A.
2.2.2 Sơ lược về ASM:
Phần này cung cấp một cái nhìn tổng quan nhất về cấu trúc hoạt động của thuật toán
ASM và giới thiệu 2 mô hình tạo nên thuật toán: shape model, profile model.
ASM làm việc với tập huấn luyện với các điểm landmark đã được đánh dấu trước.
Việc đánh dấu được thực hiện bằng tay trước khi quá trình huấn luyện bắt đầu.
Hình 2.10 Đánh dấu các điểm landmark trong tập huấn luyện [19]
Input: Tập các shape chưa align
1. Chọn một shape làm chuẩn (thường lấy shape đầu tiên)
2. Repeat:
a. Áp dụng phép biến đổi tương đương T lên các
shape chưa align còn lại so
3. Until: Duyệt hết các shape trong tập shape chưa align
Output: Tập các shape đã align
24
Sau khi kết thúc quá trình huấn luyện, ta dùng ASM để tìm kiếm các điểm đặc trưng
của khuôn mặt trên ảnh đầu vào. Ý tưởng cơ bản của thuật toán là xác định các
điểm đặc trưng của khuôn mặt bằng cách mô tả vùng ảnh xung quanh nó và chỉ ra
mối quan hệ của nó với các điểm khác. Để làm được điều này, ASM cung cấp 2 mô
hình:
- Profile model: Có nhiệm vụ mô tả vùng ảnh xung quanh mỗi điểm landmark.
Nói cách khác, mô hình này chỉ ra rằng, vùng ảnh sẽ “trông như thế nào?” tương
ứng với mỗi điểm landmark. Trong quá trình huấn luyện, ta tạo thành các profile
training cho mỗi điểm landmark bằng cách lấy mẫu ảnh xung quanh mỗi điểm
landmark trong tập ảnh huấn luyện. Trong quá trình tìm kiếm, ta lấy mẫu vùng ảnh
của các điểm xung quanh landmark khởi tạo. Điểm được chọn là điểm khớp với các
profile training nhất. Tập hợp các điểm tìm được dựa trên landmark khởi tạo, ta có
tập các điểm kiểm thử (suggested point) tạo thành shape kiểm thử (suggested
shape) [19].
- Shape model: Có nhiệm vụ định nghĩa mối quan hệ của mỗi điểm landmark so
với các điểm còn lại. Trong quá trình tìm kiếm, shape kiểm thử tìm ra được có thể
không đúng với hình dạng khuôn mặt, shape model sẽ giúp bóp méo lại shape kiểm
thử sao cho đúng với hình dạng khuôn mặt nhất. Lấy ví dụ, nếu shape kiểm thử là
một khuôn mặt có một cái mũi rất dài thì shape model sẽ giúp co ngắn cái mũi đó
lại [19].
Chi tiết về profile model và shape model sẽ được trình bày ở phần sau.
2.2.3 Profile model và shape model:
a. Profile model:
Profile model có nhiệm vụ trích xuất ra khuôn mặt trung bình từ tập huấn luyện và
sinh ra shape kiểm thử bằng cách di chuyển các điểm landmark của shape khởi tạo
được tạo ra từ khuôn mặt trung bình đến vị trí thích hợp nhất. Ta bắt đầu việc tìm
kiếm với khuôn mặt khởi tạo, align và định vị nó với khuôn mặt tổng thể lấy từ
chương trình phát hiện khuôn mặt.
Trong nội dung đồ án này, ta sẽ làm việc với profile 1 chiều (1D profile). Có thể
tham khảo về profile 2 chiều (2D profile) tại phần 5.5 của [19].
Tạo profile:
1D Profile của một điểm landmark được tổ chức thành một vector kích thước n × 1.
Để tạo thành một profile vector g tại một điểm landmark, ta lấy mẫu cường độ điểm
ảnh dọc theo một vector một chiều đi qua điểm landmark gọi là whisker. Whisker là
một vector một chiều đi qua điểm landmark và vuông góc với cạnh khuôn mặt tại
điểm đó [19].