Ở bước đầu tiên này, hệ thống nhận đầu vào là tọa độ 3 chiều của các điểm đặc trưng trên khuôn mặt đích. Tập tọa độ này được trích xuất ra bằng phương pháp đo độ dày mô trên hộp sọ hoặc từ các ảnh 2 chiều nên chúng được đặt ở trong một hệ trục tọa độ khác. Chúng tôi sử dụng một số phép biến đổi trong không gian ba chiều để đưa tập tọa độ này về hệ tọa độ tương đương với hệ tọa độ mà chúng tôi dùng để biểu diễn mô hình khuôn mặt nguồn.
3.2.1 Các phép biến đổi trong không gian ba chiều đƣợc sử dụng
Chúng tôi sử dụng các phép biến đổi: phép tịnh tiến, phép tỉ lệ và phép quay trong không gian ba chiều. Tọa độ các điểm được biểu diễn theo tọa độ đồng nhất, nghĩa là chúng tôi sẽ dùng tọa độ (x, y, z, 1) thay cho tọa độ (x, y, z). Bằng cách này chúng tôi có thể dễ dàng biểu diễn các phép biến đổi ở dạng các phép tính với ma trận.
Giả sử chúng ta cần biến đổi điểm P về điểm P’ theo:
Phép tịnh tiến theo vec-tơ tịnh tiến là (tx, ty, tz). Khi đó phương trình phép tịnh tiến như sau (T là ma trận của phép tịnh tiến):
P’ = 𝑥′ 𝑦′ 𝑧′ 1 = T. P = 1 0 0 𝑡𝑥 0 1 0 𝑡𝑦 0 0 1 𝑡𝑧 0 0 0 1 . 𝑥 𝑦 𝑧 1 Phép tỉ lệ: S là ma trận của phép tỉ lệ theo hệ số (sx, sy, sz): P’ = 𝑥′ 𝑦′ 𝑧′ 1 = S. P = 𝑠𝑥 0 0 0 0 𝑠𝑦 0 0 0 0 𝑠𝑧 0 0 0 0 1 . 𝑥 𝑦 𝑧 1
Phép quay: Khi thực hiện phép quay trong không gian ba chiều, ta cần phải biết trục quay và góc quay. Chiều của góc quay được xác định theo chiều cùng chiều kim đồng hồ (chiều âm) và ngược chiều kim đồng hồ (chiều dương) khi mắt nhìn dọc theo trục quay (ta sẽ gọi đó là hướng nhìn). Ví dụ phép quay minh họa ở Hình 16 là phép quay theo chiều dương, trục quay Ox và hướng nhìn là theo hướng âm của trục Ox.
35
Hình 16. Phép quay chiều dương, trục quay Ox, hướng nhìn là hướng âm trục Ox Phép quay quanh các trục tọa độ
Ta xét các phép quay một góc θ theo các trục Ox, Oy, Oz khi hướng nhìn là hướng âm của trục đó.
o Phép quay quanh trục Ox 𝑥′ = 𝑥 𝑦′ = 𝑦. 𝑐𝑜𝑠θ − z. sinθ z′ = y. sinθ + z. cosθ Vì vậy P’ = 𝑥′ 𝑦′ 𝑧′ 1 = 𝑅𝑂𝑥 θ . P = 1 0 0 0 0 𝑐𝑜𝑠θ −𝑠𝑖𝑛θ 0 0 𝑠𝑖𝑛θ 𝑐𝑜𝑠θ 0 0 0 0 1 . 𝑥 𝑦 𝑧 1 o Phép quay quanh trục Oy 𝑥′ = 𝑥. 𝑐𝑜𝑠θ + z. sinθ 𝑦′ = 𝑦 z′ = −x. sinθ + z. cosθ Vì vậy P’ = 𝑥′ 𝑦′ 𝑧′ 1 = 𝑅𝑂𝑦 θ . P = 𝑐𝑜𝑠θ 0 𝑠𝑖𝑛θ 0 0 1 0 0 −𝑠𝑖𝑛θ 0 𝑐𝑜𝑠θ 0 0 0 0 1 . 𝑥 𝑦 𝑧 1 o Phép quay quanh trục Oz
36 𝑥′ = 𝑥. 𝑐𝑜𝑠θ − y. sinθ 𝑦′ = 𝑥. 𝑠𝑖𝑛θ + y. cosθ z′ = z Vì vậy P’ = 𝑥′ 𝑦′ 𝑧′ 1 = 𝑅𝑂𝑧 θ . P = 𝑐𝑜𝑠θ −𝑠𝑖𝑛θ 0 0 𝑠𝑖𝑛θ 𝑐𝑜𝑠θ 0 0 0 0 1 0 0 0 0 1 . 𝑥 𝑦 𝑧 1 Phép quay quanh một trục song song với trục tọa độ
Giả sử trục quay song song với trục Ox (các trường hợp còn lại tương tự), ta thực hiện lần lượt các phép biến đổi sau:
1. Áp dụng phép tịnh tiến T để đưa trục quay về trục Ox 2. Áp dụng phép quay R(θ) quanh trục Ox với góc θ
3. Áp dụng phép tịnh tiến T-1 để đưa trục quay về vị trí ban đầu
Phép quay quanh một trục bất kì
Giả sử trục quay là một đường thẳng d đi qua hai điểm P1(x1, y1, z1) và P2(x2, y2, z2). Để thực hiện phép quay R(θ)quanh đường thẳng d một góc θ theo hướng nhìn từ điểm P2 tới P1. Ta thực hiện lần lượt các phép biến đổi sau:
1. Áp dụng phép tịnh tiến để đưa trục quay về vị trí đi qua gốc tọa độ. 2. Áp dụng phép quay để đưa trục quay về vị trí trùng với một trục tọa
độ, ví dụ là Oz.
3. Áp dụng phép quay vật thể quanh trục quay (trục tọa độ). 4. Áp dụng phép quay đưa trục quay về vị trí tại bước (ii). 5. Áp dụng phép quay đưa trục quay về vị trí ban đầu. Quá trình được minh họa trong Hình 17:
37
Hình 17. Phép quay quanh một trục bất kì
Ta cần tìm ma trận biến đổi của từng phép biến đổi theo từng bước
Bước 1: Tịnh tiến đưa điểm P1 về gốc tọa độ bằng cách tịnh tiến theo vec-tơ (-x1, -y1, -z1), đoạn thẳng P1P2 chuyển thành P1’P2’. Ma trận phép biến đổi là: T = 1 0 0 −𝑥1 0 1 0 −𝑦1 0 0 1 −𝑧1 0 0 0 1
Bước 2: Đây là bước phức tạp nhất, đưa trục quay P1’P2’ về trùng với một trục tọa độ, ta chọn đó là trục Oz. Để thuận tiện ta sẽ chọn vec-tơ đơn vị 𝑢 thuộc đường thẳng P1’P2’ và có hướng trùng với hướng của vec-tơ 𝑣 = P1’P2’ như sau:
𝑣 = P1’P2’= P1P2 = (x2-x1, y2-y1, z2-z1). 𝑢 = 𝑣
38
Mục đích bây giờ là ta phải đưa 𝑢 về trục Oz bằng cách áp dụng hai phép quay sau:
i. Quay một góc α quanh trục Ox đưa 𝑢 về vị trí vec-tơ 𝑢′′ nằm trên mặt phẳng xOz.
ii. Quay một góc β quanh trục Oy đưa 𝑢′′ về vị trí u z thuộc trục Oz. Quá trình được minh họa trong Hình 18
Hình 18. Quay vec-tơ 𝑢 về trục Oz
Độ lớn của góc α chính bằng góc giữa vec-tơ 𝑢 (0, 𝑏, 𝑐)′ (hình chiếu của 𝑢 lên mặt phẳng yOz)và chiều dương trục Oz như trong Hình 19
39
Hình 19. Cách tính góc α Dễ thấy cos𝛼 = 𝑐
𝑑, 𝑠𝑖𝑛𝛼 =𝑏
𝑑 với 𝑑 = 𝑢′ = 𝑏2 + 𝑐2. Sau phép quay một góc 𝛼 quanh trục Ox (Hình 18) 𝑢 thành 𝑢′′ . Hoành độ của 𝑢′′
bằng x (vì phép quay quanh Ox không làm thay đổi hoành độ), tung độ của 𝑢′′ bằng 0 và cao độ của 𝑢′′ bằng d (chính là độ dài của 𝑢′ ). 𝑅𝑂𝑥 θ = 1 0 0 0 0 𝑐𝑜𝑠𝛼 −𝑠𝑖𝑛𝛼 0 0 𝑠𝑖𝑛𝛼 𝑐𝑜𝑠𝛼 0 0 0 0 1 = 1 0 0 0 0 𝑐 𝑑 −𝑏 𝑑 0 0 𝑏 𝑑 𝑐 𝑑 0 0 0 0 1 Tương tự ta có 𝑐𝑜𝑠𝛽 = 𝑢′′ u z 𝑢′′ u z = 𝑑 (chú ý: 𝑢′′ = u = 1z ). Theo định nghĩa tích có hướng của hai vec-tơ ta có:
𝑢′′ . 𝑢 = 𝑢𝑧 . 𝑢′′ 𝑦 . 𝑢 . 𝑠𝑖𝑛𝛽𝑧 Mặt khác 𝑢′′ . 𝑢 = 𝑢𝑧 . (−𝑎)𝑦 do đó 𝑠𝑖𝑛𝛽 = −𝑎. Từ đó, ta có: 𝑅𝑂𝑦 β = 𝑐𝑜𝑠𝛽 0 𝑠𝑖𝑛𝛽 0 0 1 0 0 −𝑠𝑖𝑛𝛽 0 𝑐𝑜𝑠𝛽 0 0 0 0 1 = 𝑑 0 −𝑎 0 0 1 0 0 𝑎 0 𝑑 0 0 0 0 1
40
Bước 3: Áp dụng phép quay một góc θ quanh trục Oz
𝑅𝑂𝑧 θ =
𝑐𝑜𝑠θ −𝑠𝑖𝑛θ 0 0 𝑠𝑖𝑛θ 𝑐𝑜𝑠θ 0 0
0 0 1 0
0 0 0 1
Bước 4 và bước 5: Áp dụng các phép biến đổi ngược, đưa đường thẳng d về vị trí ban đầu.
Tóm lại ta có phương trình ma trận kết hợp các phép biến đổi như sau: 𝑅 θ = T−1. R−1Ox α . ROy−1 β . 𝑅𝑂𝑧 θ . 𝑅𝑂𝑦 β . 𝑅𝑂𝑥 α . T
3.2.2 Sử dụng các phép biến đổi để chuẩn hóa dữ liệu
Mục đích của chúng tôi là đưa các điểm đặc trưng bên khuôn mặt đích về hệ tọa độ và theo đúng hướng nhìn chính diện tới khuôn mặt ở bên khuôn mặt nguồn. Chúng tôi chọn 3 điểm Su, Sv, Sk (điểm đỉnh mũi, điểm đỉnh trán, điểm đỉnh cằm) trong tập S là tập các điểm đặc trưng nguồn và 4 điểm Tu, Tv, Tk, Tt (điểm đỉnh mũi, điểm đỉnh trán, điểm đỉnh cằm và điểm ở thái dương) trong tập T là tập các điểm đặc trưng đích làm mốc. Các điểm này được khoanh tròn xanh như ở Hình 20.
41
Sử dụng các phép biến đổi trong không gian ba chiều ở trên, chúng tôi tiến hành các bước như sau:
Bước 1 dùng phép tịnh tiến: Tịnh tiến cả tập điểm T theo 𝑇𝑢 𝑆𝑢 , chúng tôi sẽ có tập điểm mới trong đó điểm Tu có cùng tọa độ với Su.
Bước 2 dùng phép tỉ lệ: Lấy điểm Tu làm mốc, chúng tôi đưa tất cả các điểm Ti còn lại theo hướng 𝑇𝑢 𝑇𝑖 theo tỉ lệ 𝑆𝑢𝑆𝑣
𝑇𝑢𝑇𝑣 . Sau đó chúng tôi sẽ thu được tập các điểm mới sao cho 𝑇𝑢𝑇𝑣 = 𝑆𝑢𝑆𝑣 .
Bước 3 dùng phép quay: Chúng tôi xác định phép quay với trục là vec-tơ pháp tuyến của mặt phẳng (Tu, Tv, Sv) gốc tại Tu và xác định góc quay α sao cho nếu áp dụng với Tv thì Tv quay về trùng với Sv (lúc này đã có 𝑇𝑢𝑇𝑣 = 𝑆𝑢𝑆𝑣 sau bước trên). Sau khi xác định được phép quay chúng tôi áp dụng phép quay này cho tất cả các điểm Ti của tập T. Sau bước này chúng tôi có thêm Tv trùng Sv.
Bước 4 dùng phép quay: Chúng tôi xác định phép quay với trục là 𝑇𝑢𝑇𝑣 và xác định góc quay β sao cho nếu áp dụng với Tk thì Tk quay về nằm lên trên mặt phẳng 𝑇𝑢𝑇𝑣𝑆𝑘, tọa độ z của Tk < tọa độ z của Tu và áp dụng với Tt thì tọa độ z của Tt < tọa độ z của Tu. Sau khi xác định được phép quay chúng tôi áp dụng phép quay này cho tất cả các điểm Ti của tập điểm T.
Cuối cùng chúng tôi có được tập các điểm có tọa độ được chuẩn hóa theo hệ tọa độ mà hệ thống sử dụng. Dữ liệu tọa độ này được đưa vào bước biến đổi khuôn mặt.
3.3 Biến đổi khuôn mặt
Ở bước này, chúng tôi sử dụng một mô hình khuôn mặt chuẩn làm mô hình khuôn mặt nguồn. Đơn vị biến đổi dùng mô hình đa mạng hàm cơ sở bán kính, Radial Basis Functions (RBF). Đơn vị này nhận đầu vào là mô hình khuôn mặt nguồn cùng các điểm đặc trưng trên khuôn mặt nguồn và các điểm đặc trưng trên khuôn mặt đích tương ứng. Các mạng RBF được huấn luyện bởi 2 tập điểm đặc trưng này. Sau đó, chúng ánh xạ mô hình khuôn mặt nguồn qua các hàm RBF được xây dựng để có mô hình khuôn mặt đích.
42
3.3.1 Mô hình khuôn mặt nguồn
Chúng tôi sử dụng phương pháp biểu diễn mô hình khuôn mặt với lớp da là lưới tam giác như đã trình bày ở mục 2.2.1. Ưu điểm của việc biểu diễn bằng lưới đa giác là các tính toán về bề mặt lưới đa giác như xác định một phần hay toàn bộ một vật thể nằm trong một khoảng không gian, tìm ra các bề mặt ẩn, và xác định độ bóng của các bề mặt nhìn thấy đã được giải quyết bởi nhiều thuật toán đồ họa (Mahl, 1972; Weiss, 1966) [23][35]. Và hơn nữa là về mặt tốc độ; các thuật toán này nhanh hơn, tiết kiệm hơn và mang đến hiệu quả dựng mô hình nhanh chóng với máy tính thông thường với dung lượng, tốc độ xử lý thấp.
Cụ thể hơn chúng tôi xây dựng lớp da một khuôn mặt nguồn với các đa giác là các tam giác. Để biểu diễn khuôn mặt, hệ thống sử dụng 2638 đỉnh và 5014 tam giác nối giữa các đỉnh. Với số lượng đỉnh và tam giác khá lớn như vậy lớp da khuôn mặt được biểu diễn khá mịn, đẹp và đủ cho việc đánh dấu tất cả các điểm đặc trưng tại mọi vị trí. Vì mặt người gần như đối xứng nên chúng tôi xây dựng nửa mặt bên trái rồi lấy đối xứng để hoàn thiện nốt bên phải. Nửa bên trái Hình 20 biểu hiện mô hình khuôn mặt nguồn hệ thống sử dụng.
Việc sử dụng mô hình khuôn mặt biến đổi để thể hiện một mô hình khuôn mặt mới thay cho việc sử dụng chính bản thân mô hình mới có nhiều ưu điểm:
Giữ được một mô hình khuôn mặt cố định với số đỉnh và số đa giác xác định trước.
Sử dụng lại được các thông số trên mô hình khuôn mặt cố định trước.
Sử dụng lại những thông tin về các vùng trên mô hình khuôn mặt để nâng cao hiệu quả của biến đổi.
3.3.2 Biến đổi mô hình khuôn mặt
Chọn và huấn luyện mô hình đa mạng RBF:
Chúng tôi sử dụng ba mạng RBF để lấy ánh xạ một đỉnh trên mô hình khuôn mặt nguồn sang một đỉnh trên mô hình khuôn mặt đích cần xây dựng với ba giá trị tọa độ trong không gian 3 chiều. Các mạng này được huấn luyện bằng tập các điểm đặc trưng.
43 Mỗi RBF có dạng là một hàm f như sau:
f(𝑝 𝑖) = 𝑛𝑗 =1𝑤𝑗 ℎ𝑗(𝑝 )𝑖 (1) Trong đó:
n: là số lượng các đầu vào của tập huấn luyện. 𝑝 𝑖: là vector 𝑂𝑝 𝑖, O là gốc tọa độ
𝑤𝑗: là trọng số của mạng, cần được xác định dựa vào tập huấn luyện.
ℎ𝑗: là hàm cơ bản, áp dụng phương pháp rất thành công của Noh và Neumann [25].
ℎ𝑗(pi) = 𝑝 − 𝑝𝑖 𝑗 2 + 𝑠𝑗2. Với:
𝑠𝑗: khoảng cách ngắn nhất từ các điểm 𝑝𝑗 đến điểm 𝑝𝑖, 𝑠𝑗 = 𝑚𝑖𝑛𝑗 ≠𝑖 𝑝 − 𝑝𝑖 𝑗 , (Eck[14] đề xuất)
Như vậy ta có thể thấy các ℎ𝑗 là tính được ngay ban đầu từ 2 tập điểm đặc trưng. Bây giờ chúng ta cần tính các 𝑤𝑗 để xác định được hàm f.
Tính các 𝑤𝑗 bằng cách huấn luyện mạng 3 lần với các tọa độ 3 chiều của các điểm đặc trưng trên khuôn mặt gốc với tọa độ 3 chiều của các điểm đặc trưng trên khuôn mặt đích.
Ta xét 𝑤 = (𝑤1, 𝑤2, … , 𝑤𝑛 ). Gọi C(𝑤 ) là hàm chi phí của 𝑤 . Phương pháp này sử dụng thêm một hệ số λ để cực tiểu hóa hàm chi phí C(𝑤 ):
C(𝑤 ) = 𝑒 𝑇𝑒 + 𝜆𝑤 𝑇𝑤 (2) Trong đó:
𝑒 : là vector sai số của chênh lệch giữa giá trị thực tế và giá trị tính toán được, 𝑒 = 𝑦 − 𝐻𝑤 và 𝐻𝑖𝑗 = ℎ𝑗(𝑥 )𝑗 .
Tham số quy tắc được thêm vào để tránh trọng số vượt quá mức. Thay 𝑒 vào trong đẳng thức (2) và lấy đạo hàm của C(𝑤 ) theo 𝑤 ta có:
𝑤 = 𝐴−1𝐻𝑇𝑦 (3) Trong đó A = 𝐻𝑇𝐻 + 𝜆𝐼 với I là ma trận đơn vị.
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:
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