Để đạt kết quả tốt nhất, đối với ảnh chụp thẳng, đối tƣợng đƣợc chụp phải hƣớng thẳng vào camera và camera nằm ngang với gƣơng mặt ngƣời đƣợc chụp. Đối với ảnh bên, ngƣời chụp nghiêng một góc 90 độ so với camera (chụp lấy mặt bên phải) và camera cũng nằm ngang với gƣơng mặt ngƣời đƣợc chụp. Các bức ảnh phải đƣợc chụp đủ gần và ánh sáng đƣợc điều chỉnh để nắm bắt đƣợc toàn bộ chi tiết gƣơng mặt. Biểu hiện của gƣơng mặt ngƣời chụp ở dạng bình thƣờng (không cƣời, nói, …). Khoảng cảnh từ camera đến ngƣời chụp ở cả 2 góc chụp là bằng nhau.
Hình 3.11: Nạp ảnh và xác định một số vị trí trên gương mặt
Ta nhấn biểu tƣợng “Load” nằm trên vùng Photo Lineup để nạp ảnh chụp thẳng và chụp bên. Poser 5 sẽ yêu cầu ta xác định một số vị trí trên gƣơng mặt (theo mũi tên hƣớng dẫn nhƣ Hình 3.11) để giúp phần mềm sắp xếp vị trí hình học của gƣơng mặt cho phù hợp với cái đầu 3D mặc định. Kết quả hiển thị ở Hình 3.12.
Ta điều chỉnh thủ công bằng chuột hoặc sử dụng các công cụ hỗ trợ trong Photo
LineUp để thay đổi vị trí các điểm định dạng khuôn mặt. Kết quả thu đƣợc hiển thị tại
cửa sổ Face Sculpting. Sau khi đạt đƣợc khuôn mặt nhƣ mong muốn, ta lƣu lại các thay đổi này và xuất ra file định dạng VRML.
3.7.1.2 Sử dụng công cụ Face Shaping và Texture Variation để tạo khuôn mặt 3D
Một cách khác để thu đƣợc khuôn mặt nhƣ ta mong muốn là sử dụng công cụ
Face Shaping để tạo hình dạng và Texture Variation để tạo chất liệu cho khuôn mặt
(Hình 3.13).
Hình 3.13: Texture Variation và công cụ Face Shaping
Để thay đổi chất liệu của khuôn mặt, ta có thể điều chỉnh các thông số của một số thành phần trong mục Texture Variation nhƣ: lông mày (Eyebrows), hốc mắt (Eye sockets), độ tuổi (Age), giới tính (Gender), … Với công cụ Face Shaping, ta có thể điều chỉnh trực tiếp khuôn mặt bằng cách lựa chọn và di chuyển các điểm trên khuôn mặt bằng chuột hoặc thay đổi các thông số của các thành phần trên khuôn mặt, nhƣ đỉnh mày (Brow Ridge), xƣơng gò má (Cheekbones), gò má (Cheek), cằm (Chin), mắt (Eyes), … Đặc biệt, tính năng Caricature cho phép ta cƣờng điệu các đặc điểm trên khuôn mặt. Kết quả cũng đƣợc ta lƣu lại và xuất ra file định dạng VRML để làm đầu vào cho công cụ biến đổi đƣợc mô tả ở phần sau.
3.7.2 Công cụ biến đổi
3.7.2.1 Thiết kế hệ thống
Tôi tiến hành phát triển một công cụ biến đổi khuôn mặt 3D bằng ngôn ngữ Mircosoft Visual C++ chạy trên nền Mircosoft Visual Studio 6.0. Công cụ này sử dụng mô hình khuôn mặt đã đƣợc xây dựng theo các phƣơng pháp đƣợc mô tả ở chƣơng 1 [7, 8] làm mô hình khuôn mặt nguồn, sau đó biến đổi theo hình dạng mô hình khuôn mặt mục tiêu đƣợc xuất ra từ phần mềm Poser. Hệ thống cơ trên mô hình khuôn mặt nguồn cũng đƣợc biến đổi tƣơng ứng. Nhƣ vậy, công cụ sẽ bao gồm 3 lớp chính sau: một lớp điều khiển mô hình khuôn mặt nguồn, một lớp điều khiển mô hình khuôn mặt mục tiêu và một lớp điều khiển các thao tác biến đổi mô hình khuôn mặt. Từ đó, tôi đƣa ra biểu đồ lớp thiết kế của hệ thống nhƣ Hình 3.14.
Hình 3.14: Biểu đồ lớp thiết kế của hệ thống
Ý nghĩa của từng lớp nhƣ sau:
- CMainFrame: Là lớp điều khiển khung hình (frame) chính của công cụ, trong
đó bao gồm 3 khung hình “con” (lớp CchildFrame). Lớp có một số hàm nhƣ:
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 công cụ. Có 3 khung hình “con” trong công cụ, đó là: khung hình hiển thị mô hình khuôn mặt nguồn, khung hình hiển thị mô hình khuôn mặt mục tiêu và khung hình hiển thị các thao tác biến đổi.
- CSFace: là lớp điều khiển mô hình khuôn mặt nguồn của công cụ. Lớp gọi hàm
OnCreate() để khởi tạo mô hình khuôn mặt nguồn.
- CControl: là lớp điều khiển của giao diện các thao tác biến đổi, với một số hàm nhƣ:
o DisplayVerticesInfo(): hiển thị danh sách điểm đánh dấu trên khuôn mặt
nguồn.
o OnSelchangeListVertices(): hiển thị vị trí điểm tƣơng ứng trên khuôn mặt nguồn khi ta lựa chọn điểm đánh dấu trong danh sách.
o OnButtonMorph(): thực hiện thao tác biến đổi mô hình khuôn mặt nguồn
theo mô hình khuôn mặt mục tiêu.
- CMeshDoc: vì mô hình khuôn mặt mục tiêu lấy dữ liệu đƣợc xuất ra từ phần
mềm Poser, nên đây là lớp phân tích dữ liệu để chuyển tới lớp CMeshView.
Hàm OnOpenDocument() thực hiện công việc phân tích này.
- CMeshView: là lớp điều khiển mô hình khuôn mặt mục tiêu, dữ liệu đƣợc lấy từ
lớp CMeshDoc. Lớp gọi hàm OnPaint() để hiển thị mô hình khuôn mặt mục tiêu.
- MGene: là lớpđiều khiển các xử lý liên quan đến gen, với một số hàm nhƣ:
o randomGenerate(): tạo ra ngẫu nhiên một gen.
o toChromosome(): đƣa gen vào trong nhiễm sắc thể.
- MGA: là lớp điều khiển thuật toán di truyền học, với một số hàm nhƣ:
o toChromosome(): kế thừa từ lớp MGene.
o lifeCycle(): xử lý một vòng đời, tạo ra một tổng thể mới từ tổng thể trƣớc đó.
o crossover(): hàm lai ghép, cho phép chọn 2 nhiễm sắc thể để tạo ra các
nhiễm sắc thể “con”.
o mutate(): hàm đột biến, thay đổi ngẫu nhiên một gen trong nhiễm sắc thể.
o to_fitness(): hàmlựa chọn ra những nhiễm sắc thể thích nghi.
- MRBF: là lớp điều khiển việc biến đổi khuôn mặt bằng mạng RBF, với một số
hàm nhƣ:
o searchFeatures(): hàm tìm kiếm các điểm đánh dấu dễ nhận thấy nhất nhƣ đỉnh đầu, chóp mũi, ….
o fillMesh(): hàm tìm kiếm các điểm đánh dấu xung quanh các “lỗ” nhƣ hốc mắt.
o morphFace(): hàmbiến đổi từ khuôn mặt nguồn thành khuôn mặt đích.
3.7.2.2 Kết quả thực nghiệm
Công cụ sau khi phát triển có giao diện nhƣ Hình 3.15.
Hình 3.15: Giao diện công cụ biến đổi khuôn mặt 3D
Công cụ bao gồm các thành phần chính sau:
- Danh sách các điểm đánh dấu (1): đây là danh sách các điểm đánh dấu đã đƣợc
mô tả trên Khuôn mặt nguồn (3) hiển thị bằng chấm màu đỏ. Với mỗi lựa chọn điểm đánh dấu trên khuôn mặt nguồn, tôi chọn vị trí tƣơng ứng trên Khuôn mặt
mục tiêu (4). Trong danh sách này, chỉ có một số điểm đánh dấu đƣợc gán tên.
Tôi chỉ cần chọn và thiết lập vị trí các điểm đánh đánh dấu này trên khuôn mặt mục tiêu.
- Tìm kiếm điểm đánh dấu (2): đây là tính năng để công cụ tự động tìm các điểm
đánh dấu còn lại (các điểm đánh dấu không đƣợc gán tên) trong Danh sách các
điểm đánh dấu. Số vòng lặp tìm kiếm tƣơng ứng với số thế hệ trong thuật toán di
truyền học mà tôi đã nghiên cứu ở trên. Số vòng lặp tôi thiết lập mặc định là 10.
- Khuôn mặt nguồn (3): đây là khuôn mặt đã đƣợc xây dựng theo phƣơng pháp
của Bùi Thế Duy và cộng sự [7, 8], bao gồm 2.480 đỉnh và 4.744 đa giác.
- Khuôn mặt mục tiêu (4): đây là khuôn mặt đƣợc xuất ra từ phần mềm Poser 5.
Để đƣa khuôn mặt vào chƣơng trình, nhấn chọn danh mục File/Open.
- Một số nút lệnh (5): Sau khi đã thiết lập xong các điểm đánh dấu trên khuôn mặt mục tiêu, để xem kết quả ta nhấn nút “Morph”. Kết quả khuôn mặt biến đổi
sẽ hiển thị tại vị trí khuôn mặt nguồn. Nhấn “Reset face” để thiết lập lại cấu hình khuôn mặt mặc định ban đầu của chƣơng trình.
- Thông số liên quan (6): Có 2 thông số Score và VertexID. VertexID hiển thị giá trị của vị trí mà ta chọn trên khuôn mặt mục tiêu. Score cho biết mức độ khác biệt giữa khuôn mặt sau khi biến đổi và khuôn mặt mục tiêu.
Tiến hành chạy thử nghiệm công cụ, đầu tiên tôi đƣa vào một khuôn mặt mục tiêu đƣợc xuất ra từ phần mềm Poser 5 (Hình 3.16).
Hình 3.16: Đưa vào khuôn mặt mục tiêu
Bƣớc tiếp theo, tôi chọn các điểm đánh dấu trong Danh sách sách các điểm
đánh dấu, điểm màu đỏ trên khuôn mặt nguồn sẽ hiển thị ở vị trí tƣơng ứng. Tôi tiến
hành chọn vị trí tƣơng ứng trên khuôn mặt mục tiêu (Hình 3.17). Lƣu ý rằng tôi chỉ cần chọn các điểm đánh dấu đƣợc gán tên trong Danh sách các điểm đánh dấu.
Đối với các điểm đánh dấu còn lại, tôi sử dụng tính năng tự động tìm kiếm của công cụ, bằng cách nhập số vòng tìm kiếm và nhấn nút “Search”. Sau khi công cụ đã đánh dấu xong toàn bộ các điểm đánh đấu trên khuôn mặt mục tiêu, tôi nhấn nút
“Morph” và thu đƣợc kết quả nhƣ hình 3.18.
Hình 3.18: Kết quả thực nghiệm khi sử dụng công cụ biến đổi khuôn mặt 3D
Mô hình khuôn mặt biến đổi có hình dạng tổng thể, bề mặt má và trán, hình dạng cằm giống nhƣ mô hình khuôn mặt mục tiêu. Mắt, mũi và miệng nằm ở vị trí đúng. Tuy nhiên, hình dạng môi của mô hình khuôn mặt biến đổi không hoàn toàn phù hợp với hình dạng môi của mô hình khuôn mặt mục tiêu. Điều này là do rất khó đo đƣợc sự khác biệt giữa hai cặp môi, ngay cả khi chúng trông rất khác nhau.
KẾT LUẬN
Luận văn này đã trình bày các vấn đề liên quan đến việc xây dựng quy trình và một công cụ nhân bản chuyển động khuôn mặt trên các mô hình khuôn mặt 3D khác nhau. Trong chƣơng 1, tôi tìm hiểu một mô hình khuôn mặt 3D dựa trên hệ thống cơ đơn giản và có thể tạo đƣợc những biểu hiện khuôn mặt chân thực trong thời gian thực [7, 8]. Mô hình khuôn mặt này bao gồm một mô hình cơ và một lƣới mặt, cho phép ta đạt đƣợc những biểu hiện khuôn mặt rất thực với chất lƣợng cao. Bên cạnh đó, mô hình khuôn mặt vẫn đủ đơn giản để giữ đƣợc hoạt ảnh thời gian thực. Tôi cũng nghiên cứu cách vận hành của các cơ vòng miệng, cơ vòng mắt và xoay quai hàm trong thực tế. Trong chƣơng 2, tôi đã tiến hành nghiên cứu một số phƣơng pháp biến đổi khuôn mặt đã có nhƣ: phép “nhân bản biểu hiện” của Noh và Neumann [28]; công trình của Mani và Ostermann [26] và công trình của Kahler và cộng sự [20]. Đồng thời tôi cũng xem xét thêm mạng RBF của Broomhead và Lowe [6] và các thuật toán di truyền học. Trong chƣơng 3, tôi mô tả phƣơng pháp nhân bản do Bùi Thế Duy và cộng sự [9] đã phát triển dựa trên các nghiên cứu trƣớc. Đây là cơ sở để tôi đƣa ra quy trình và một công cụ để kiểm nghiệm lại phƣơng pháp này.
Kết quả đạt đƣợc của luận văn nhƣ sau:
- Hệ thống hoá đƣợc cơ sở lý thuyết và các nghiên cứu thực nghiệm liên quan đến việc xây dựng khuôn mặt 3D, xây dựng hệ thống cơ và cách thức chuyển hoạt ảnh từ một mô hình khuôn mặt cho trƣớc sang một mô hình khuôn mặt mới đƣợc tạo lập. - Xây dựng quy trình tổng quát cho việc chuyển hoạt ảnh khuôn mặt.
- Phát triển một công cụ nhân bản chuyển động từ một mô hình khuôn mặt 3D nguồn đã có sẵn các thông số và hệ thống cơ, sang một mô hình khuôn mặt 3D mới. Công cụ cho phép lựa chọn một số điểm đánh dấu để làm tập huấn luyện cho mạng RBF, và sau đó kết hợp với thuật toán GA để công cụ tự động tìm kiếm ra các điểm đánh dấu còn lại. Từ các điểm đánh dấu đã đƣợc xác định vị trí trên mô hình khuôn mặt mục tiêu tƣơng ứng với mô hình khuôn mặt nguồn, công cụ sẽ tiếp tục sử dụng mạng RBF theo phƣơng pháp của Bùi Thế Duy và cộng sự [9] để biến đổi khuôn mặt nguồn thành một khuôn mặt 3D mới.
Do hạn chế về thời gian và điều kiện nghiên cứu, nên luận văn mới dừng lại ở mức nghiên cứu cơ sở lý thuyết cũng nhƣ các công trình thực nghiệm liên quan đến việc chuyển hoạt ảnh khuôn mặt 3D, và kiểm chứng phƣơng pháp nhân bản của Bùi Thế Duy và cộng sự [9] thông qua việc xây dựng quy trình và một công cụ biến đổi. Hƣớng nghiên cứu tiếp theo của đề tài này là:
- Khắc phục hạn chế còn tồn tại: mô hình môi của khuôn mặt sau khi biến đổi còn nhiều khác biệt so với khuôn mặt mục tiêu.
TÀI LIỆU THAM KHẢO
1. Ahlberg, J. (2001), “Candide-3 – an updated parameterized face”, Technical Report
Report No. LiTH-ISY-R-2326, Dept. of Electrical Engineering, Linkping,
University, Sweden.
2. André, E., Herzog, G., and Rist, T. (1997), “Generating multimedia presentations for robocup soccer trò chơis”, In Kitano, H., editor, RoboCup ’97: Robot Soccer
World Cup I, pages 200–215. Springer-Verlag, New York.
3. Bishop, C. M. (1995), Neural Networks for Pattern Recognition. Oxford University Press, Oxford.
4. Blumberg, B., Downie, M., Ivanov, Y. A., Berlin, M., Johnson, M. P., and
Tomlinson, B. (2002), “Integrated learning for interactive synthetic characters”, In
SIGGRAPH 2002, pages 417–426.
5. Bors, A. G., Gabbouj, G. (1994), “Minimal topology for a radial basis function neural network for pattern classification”, Digital Signal Processing: a review jounal, vol. 4, no. 3, pp. 172-188.
6. Broomhead, D. S. and Lowe, D. (1988), “Multivariable functional interpolation and adaptive networks”, Complex Systems, vol. 2, pages 321-355.
7. Bui The Duy, Heylen, D., and Nijholt, A. (2003a), “Improvements on a simple muscle-based 3d face for realistic facial expressions”, In 16th International
Conference on Computer Animation and Social Agents (CASA-2003), pages 33–40,
Los Alamos, CA. IEEE Computer Society.
8. Bui The Duy, Heylen, D., Poel, M., and Nijholt, A. (2003b), “Exporting vector muscles for facial animation”. In Butz, A., Krger, A., and Olivier, P., editors,
Proceedings International Symposium on Smart Graphics 2003, Berlin, Lecture Notes
in Computer Science, Springer.
9. Bui The Duy, Poel, M., Heylen, D., and Nijholt, A. (2003c), “Automatic face
morphing for transferring facial animation”, In Proceedings 6th IASTED International
Conference on Computers, Graphics, and Imaging (CGIM 2003),
Anaheim/Calgary/Zurich, ACTA Press.
10. Bui Tuong Phong (1975), “Illumination for computer generated pictures”,
Communications of the ACM, 18(6).
11. Cassell, J., Sullivan, J., Prevost, S., and Churchill, E., editors (2000), Embodied
Conversational Agents, The MIT Press.
12. Chen, S., Cowan, C. F. N., Grant, P. M. (1991), “Orthogonal least squares learning algorithm for radial basis function networks”, IEEE Trans. On Neural Networks, vol. 2, no. 2, pp. 302-309.
13. Cohen, M. M. and Massaro, D. W. (1993), “Modeling coarticulation in synthetic visual speech”, In Magnenat Thalmann, N. and Thalmann, D., editors, Models and
Techniques in Computer Animation, pages 139–156, Springer, Tokyo.
14. Eck, M. (1991), “Interpolation methods for reconstruction of 3d surfaces from sequences of planar slices”, CAD und Computergraphik, 13(5).
15. Ekman, P. and Friesen, W. V. (1978), “Facial Action Coding System”, Consulting
Psychologists Press, Palo Alto, CA.
16. Goldberg, D. E. (1989), Genetic Algorithms in Search, Optimization, and Machine
Learning, Addison-Wesley, Reading, MA.
17. Gouraud, H. (1971), Computer display of curved surfaces. PhD thesis, Dept. of Electrical Engineering, University of Utah.
18. Hoch, M., Fleischmann, G., and Girod, B. (1994), “Modeling and animation of facial expressions based on b-splines”, Visual Computer, 11.
19. Kahler, K., Haber, J., and Seidel, H. P. (2001), “Geometry-based muscle modeling for facial animation”. In Watson, B. and Buchanan, J. W., editors, Proceedings of
Graphics Interface 2001, pages 37–46.
20. Kahler, K., Haber, J., Yamauchi, H., and Seidel, H. P. (2002), “Head shop: Generating animated head models with anatomical structure”, In Spencer, S. N., editor, Proceedings of the 2002 ACM SIGGRAPH Symposium on Computer
Animation (SCA-02), pages 55–64, New York, ACM Press.
21. Kalra, P., Mangili, A., Magnenat-Thalmann, N., and Thalmann, D. (1992),
“Simulation of facial muscle actions based on rational free form deformations”, In Kilgour, A. and Kjelldahl, L., editors, Computer Graphics Forum (EURO-
GRAPHICS ’92 Proceedings), volume 11 (3), pages 59–69.
22. King, S. A., Parent, R. E., and Olsafsky, B. (2000), “An anatomically-based 3d parametric lip model to support facial animation and synchronized speech”, In
Proceedings of Deform 2000, pages 7–19.
23. Laird, J. E. and van Lent, M. (2000), “Human-level ai’s killer application: Interactive computer trò chơis”, In Proceedings of the Seventeenth National Conference on Artificial Intelligence and Twelfth Conference on Innovative Applications of Artificial Intelligence, AAAI Press / The MIT Press.