In this thesis, we present a novel method for synthesizing a realistic facial animation taking as input a single video which captures various facial expressions and the 3D template mesh for a head model. In the capture process, we do not employ any markers or structured light on the face as it obstructs the natural performance of the actor or actress. Our basic idea is to use the temporal coherency between consecutive frames and model the facial skin physically to drive the 3D facial animation. To do that, we first estimate the camera matrix using interactively specified corresponding point pairs between the given mesh and the image at the initial frame. At the same time, the temporal coherency between all pairs of consecutive images is estimated using optical flow algorithm. Then, the head motion is estimated to extract the local motion from the optical flow. We refine the given template mesh using the local motion with modeling a facial skin. After that, we apply the estimated head motion to the template mesh for a natural animation. To estimate the error of deformed mesh, we first synthesize an image by projecting the texture-mapped mesh onto the image plane. The error map is constructed by subtracting the synthesized image from the image of the next frame. Then, we locally compute the optical flow using the error map. Only the part of the mesh is refined again where the optical flow is updated. We iterate this process until the error reduces below the predefined threshold or with fixed number of times.
본 논문에서는, 얼굴 표정 연기를 찍은 하나의 비디오와 첫 프레임에 대한 3차원 얼굴 메쉬 모델이 주어지면, 첫 프레임 이후의 모든 프레임에 대한 메쉬를 계산하여 3차원 얼굴 애니메이션을 생성하는 방법을 제시한다. 기존의 방법들과는 달리, 표정 연기를 포착할 때 얼굴에 텍스쳐(Texture)를 주기 위한 구조가 있는 빛(Structured light)이나 효율적으로 특징점(Feature point)을 추적하기 위한 마커(Marker)를 사용하지 않는다. 기본적인 아이디어는, 매 프레임마다 3차원 위치 정보를 독립적으로 얻는 것이 아니라, 시간상으로 연속하는 이미지들간의 연관성(Temporal coherency)와 얼굴 피부에 대한 물리적 모델링(Physical modeling of facial skin)을 이용하여 매 프레임마다 다음 프레임의 3차원 위치 정보를 예측하는 것이다.
이를 위해, 우선 사용자가 템플릿 메쉬와 첫 프레임의 이미지에 대해서 충분히 많은 수의 대응점을 지정해 주어 카메라 행렬(Camera matrix)를 구하고, 모든 연속하는 프레임들의 이미지 쌍에 대한 광흐름(Optical flow)를 계산한다. 그리고, 템플릿 메쉬상에서 국소적으로 잘 움직이지 않는 꼭지점(Vertex)들을 미리 지정하고, 이에 대한 이미지에서의 위치를 카메라 행렬로 부터 얻는다. 미리 지정된 꼭지점들의 이미지 좌표에 해당하는 광흐름 값으로부터, 해당 꼭지점들의 다음 이미지에서의 위치를 알 수 있다. 미리 지정한 꼭지점들의 3차원 위치, 그 꼭지점들의 현재 이미지에서의 좌표와 다음 이미지에서의 좌표로부터 머리의 움직임을 예측할 수 있다. 예측한 머리의 움직임을 이용하여, 광흐름에서 머리의 움직임으로 인한 흐름들을 제거하고 국소적인 표정 변화로 인한 흐름들만을 얻는다. 결과로 얻은 광흐름과 피부에 대한 탄성 이론을 도입하여 국소적인 표정변화만을 갖는 메쉬를 예측(Mesh refinement)한다. 제거했던 머리의 움직임을 예측한 메쉬에 재적용한 후, 이 메쉬를 이미지 평면(Image plane)에 투영(Projection)하여 생성한 이미지와 다음 프레임의 이미지간의 차이로부터 에러맵(Error map)을 계산한다. 이 에러맵을 바탕으로, 국소 탐색(Local search)를 통해 광흐름을 수정(Local refinement)한다. 수정된 광흐름으로부터 다음 프레임의 메쉬를 다시 예측하고, 에러가 충분히 작아질 때까지 이를 반복한다. 모든 프레임에 대해서 계산하고 나면, 입력 이미지들에 나타난 얼굴 표정 연기를 반영하는 3차원 얼굴 애니메이션을 얻는다.