매치 무빙

시각 효과에서 **매치 무빙**(match moving)은 실사 영화 영상에 2D 요소, 기타 실사 요소 또는 CG 컴퓨터 그래픽을 촬영된 사물의 정확한 위치, 크기, 방향, 움직임과 샷 내의 상대적 위치로 삽입할 수 있게 하는 기술이다. 또한 실사 샷에서 실사 요소를 제거하는 것도 가능하다. 이 용어는 영화에서 카메라 움직임 정보를 추출하는 여러 가지 다른 방법을 느슨하게 설명하는 데 사용된다. **모션 트래킹** 또는 **카메라 솔빙**이라고도 불리는 매치 무빙은 로토스코프 및 사진측량과 관련이 있다.

매치 무빙은 카메라가 아닌 사물, 주로 사람 배우의 움직임을 기록하는 모션 캡처와 혼동되기도 한다. 일반적으로 모션 캡처는 특수 카메라와 센서, 그리고 통제된 환경을 필요로 한다(비록 키넥트 카메라 및 애플의 Face ID와 같은 최근 발전은 이를 변화시키기 시작했지만). 매치 무빙은 또한 여러 동일한 카메라 움직임을 실행하기 위해 기계적 하드웨어를 사용하는 모션 컨트롤 사진술과도 구별된다. 이와 대조적으로 매치 무빙은 일반적으로 소프트웨어 기반 기술로, 일반 카메라로 통제되지 않은 환경에서 녹화된 일반 영상에 사후에 적용된다.

매치 무빙은 주로 샷을 통해 카메라의 움직임을 추적하여 3D 애니메이션 프로그램에서 동일한 가상 카메라 움직임을 재현할 수 있도록 사용된다. 새로운 애니메이션 요소가 원래 실사 영화 샷에 다시 합성될 때, 완벽하게 일치하는 원근법으로 나타나며 따라서 매끄럽게 보인다.

주로 소프트웨어 기반이기 때문에 컴퓨터 성능 비용이 하락함에 따라 매치 무빙은 점점 더 저렴해지고 있다. 이제는 확립된 시각 효과 도구이며, 라이브 TV 방송에서도 미식축구의 노란색 가상 다운 라인과 같은 효과를 제공하는 일부로 사용된다.

## 원리
매치 무빙 과정은 두 단계로 나눌 수 있다.

### 트래킹
첫 번째 단계는 특징을 식별하고 추적하는 것이다. **특징**은 트래킹 알고리즘이 여러 프레임(SynthEyes는 이를 블립이라고 부른다)을 통해 고정하고 따라갈 수 있는 이미지 내의 특정 지점이다. 종종 특징은 특정 트래킹 알고리즘에 따라 밝거나 어두운 점, 가장자리 또는 모서리이기 때문에 선택된다. 인기 있는 프로그램은 NCC 점수와 RMS 오차를 기반으로 하는 템플릿 매칭을 사용한다. 중요한 것은 각 특징이 실제 객체의 표면에서 특정 지점을 나타낸다는 것이다. 특징이 추적되면 여러 프레임에 걸쳐 특징의 위치를 나타내는 일련의 2차원 좌표가 된다. 이 일련의 좌표를 "트랙"이라고 한다. 트랙이 생성되면 즉시 2D 모션 트래킹에 사용되거나 3D 정보를 계산하는 데 사용될 수 있다.

### 캘리브레이션

두 번째 단계는 3D 움직임을 해결하는 것이다. 이 과정은 카메라의 위치에 대한 2D 경로의 역투영을 해결함으로써 카메라의 움직임을 도출하려고 시도한다. 이 과정을 캘리브레이션이라고 한다.

3차원 물체의 표면상의 한 점이 촬영될 때, 2D 프레임에서의 그 위치는 3D 투영 함수에 의해 계산될 수 있다. 우리는 카메라를 실제 또는 가상 세계에서 카메라를 모델링하는 데 필요한 모든 매개변수를 포함하는 추상화로 간주할 수 있다. 따라서 카메라는 카메라의 위치, 방향, 초점 거리 및 카메라가 필름 면에 빛을 초점시키는 방식을 정의하는 기타 가능한 매개변수를 요소로 포함하는 벡터이다. 이 벡터가 어떻게 구성되는지는 호환 가능한 투영 함수 P가 있는 한 중요하지 않다.

투영 함수 P는 카메라 벡터(camera로 표시)와 공간상의 3D 점의 위치를 나타내는 다른 벡터(xyz로 표시)를 입력으로 받아, 카메라 앞 평면에 투영된 2D 점(XY로 표시)을 반환한다. 이를 다음과 같이 표현할 수 있다.

:XY = P(camera, xyz)

[섬네일|right|특징 투영의 그림. 3D 구조의 렌더링 주변에 빨간 점은 트래킹 과정에서 선택된 점을 나타낸다. 프레임 i와 j의 카메라는 카메라의 매개변수에 따라 뷰를 평면에 투영한다. 이런 방식으로 2D로 추적된 특징은 3D 공간의 실제 점에 [대응 문제|대응한다. 이 특정 그림은 컴퓨터 생성 이미지이지만, 매치 무빙은 일반적으로 실제 객체에 대해 수행된다.]]

투영 함수는 3D 점을 변환하고 깊이 구성 요소를 제거한다. 깊이 구성 요소를 알지 못하면 역투영 함수는 노달 포인트에서 발산하여 투영된 2D 점을 통과하는 선을 형성하는 가능한 3D 점 집합만 반환할 수 있다. 역투영을 다음과 같이 표현할 수 있다.

:xyz  ∈ P'(camera, XY)

또는

:{xyz :P(camera, xyz) = XY}

우리가 추적하는 특징이 건물과 같은 강체 표면에 있다고 가정해 보자. 이미지의 한 프레임에서 다음 프레임으로 실제 지점 xyz가 실제 공간에서 같은 위치에 있을 것임을 알기 때문에 우리는 그것이 어디에 있는지 알지 못하더라도 그 지점을 상수로 만들 수 있다. 따라서:

:xyzi = xyzj

여기서 아래첨자 i와 j는 우리가 분석하는 샷의 임의의 프레임을 나타낸다. 이것이 항상 참이므로 우리는 다음을 알 수 있다:

:P'(camerai, XYi) &cap; P'(cameraj, XYj) ≠ {}

XYi 값은 특징이 트래킹 프로그램을 통해 추적되는 모든 프레임에 대해 결정되었기 때문에 P'(camerai, XYi) ∩ P'(cameraj, XYj)가 작은 집합인 한, 어떤 두 프레임 사이의 역투영 함수를 해결할 수 있다. i와 j에서 방정식을 해결하는 가능한 camera 벡터 집합(Cij로 표시).

:Cij = {(camerai,cameraj):P'(camerai, XYi) &cap; P'(cameraj, XYj) ≠ {})

따라서 두 점 XYi와 XYj의 역투영의 교집합이 비어 있지 않고, 이론적으로 정지된 점 xyz 를 중심으로 하는 작고 희망적인 집합인 카메라 벡터 쌍 Cij가 존재한다.

다른 말로, 흰색 공허 공간에 떠 있는 검은 점과 카메라를 상상해 보자. 우리가 카메라를 공간의 어떤 위치에 놓든지, 그 검은 점을 정확히 똑같이 촬영할 일련의 해당 매개변수(방향, 초점 거리 등)가 존재한다. C가 무한한 수의 멤버를 가지므로, 하나의 점만으로는 실제 카메라 위치를 결정하기에 충분하지 않다.

트래킹 포인트를 추가하기 시작하면 가능한 카메라 위치를 좁힐 수 있다. 예를 들어, 우리가 점 집합 {xyzi,0,...,xyzi,n}과 {xyzj,0,...,xyzj,n}을 가지고 있다면 (여기서 i와 j는 여전히 프레임을 나타내고 n은 우리가 추적하는 많은 트래킹 포인트 중 하나에 대한 인덱스이다), 우리는 카메라 벡터 쌍 집합 {Ci,j,0,...,Ci,j,n}을 도출할 수 있다.

이런 식으로 여러 트랙을 통해 가능한 카메라 매개변수를 좁힐 수 있다. 맞는 카메라 매개변수의 집합 F는 모든 집합의 교집합이다.

:F = Ci,j,0 &cap; ... &cap; Ci,j,n

이 집합에 포함된 요소가 적을수록 카메라의 실제 매개변수를 더 정확하게 추출할 수 있다. 실제로는 트래킹 과정에 도입된 오류 때문에 각 프레임에 대한 좋은 카메라 벡터를 결정하기 위해 보다 통계적인 접근 방식이 필요하며, 최적화 알고리즘과 번들 블록 조정이 자주 활용된다. 불행히도 카메라 벡터에는 너무 많은 요소가 있어 모든 매개변수가 자유로울 때 아무리 많은 특징을 추적하더라도 F를 단일 가능성으로 좁히지 못할 수도 있다. 다양한 매개변수, 특히 초점 거리를 더 많이 제한할수록 해결책을 찾아내기 더 쉬워진다.

결론적으로, 3D 솔빙 과정은 우리가 만들려고 하는 합성의 요구에 맞는 솔루션에 도달할 때까지 카메라 움직임에 대한 가능한 솔루션을 좁혀나가는 과정이다.

### 포인트 클라우드 투영
카메라 위치가 모든 프레임에 대해 결정되면 역투영을 통해 실제 공간에서 각 특징의 위치를 추정하는 것이 가능해진다. 결과로 얻은 점들의 집합은 원시적인 외관이 성운과 같기 때문에 종종 **점 구름**이라고 불린다. 점 구름은 종종 3D 장면의 일부 모양을 드러내기 때문에 합성 객체를 배치하는 참조로 사용되거나, **재구성** 프로그램에 의해 실제 장면의 3D 버전을 생성하는 데 사용될 수 있다.

### 지면 평면 결정
카메라와 점 구름은 어떤 종류의 공간에 정렬되어야 한다. 따라서 캘리브레이션이 완료되면 지면 평면을 정의해야 한다. 일반적으로 이것은 투영된 공간의 크기, 방향 및 원점을 결정하는 단위 평면이다. 일부 프로그램은 이를 자동으로 수행하려고 시도하지만, 더 자주 사용자가 이 평면을 정의한다. 지면 평면을 변경하는 것은 모든 점의 단순한 변환을 수행하기 때문에 평면의 실제 위치는 편의의 문제일 뿐이다.

### 재구성
**[[3D 재구성]]**은 추적 데이터를 사용하여 촬영된 객체를 재현하는 상호작용적인 과정이다. 이 기술은 사진측량과 관련이 있다. 이 특정 경우 우리는 우연히 촬영된 영상에서 장면을 재구성하기 위해 매치 무빙 소프트웨어를 사용하는 것을 말한다.

재구성 프로그램은 촬영된 장면에서 실제 물체를 모방하는 3차원 물체를 만들 수 있다. 포인트 클라우드와 사용자 추정치를 사용하여 프로그램은 가상 물체를 만들고, 그 다음 영상에서 텍스처를 추출하여 가상 물체에 표면 텍스처로 투영할 수 있다.

## 2D 대 3D
매치 무빙은 두 가지 형태를 가지고 있다. Shake, Adobe Substance, 어도비 애프터 이펙트, Discreet Combustion과 같은 일부 합성 프로그램에는 **2차원** 모션 트래킹 기능이 포함되어 있다. 2차원 매치 무빙은 카메라 움직임이나 왜곡에 대한 고려 없이 2차원 공간에서만 특징을 추적한다. 이는 영상에 모션 블러 또는 영상 흔들림 방지 효과를 추가하는 데 사용될 수 있다. 이 기술은 원본 영상에 카메라 원근법의 주요 변화가 포함되지 않을 때 사실적인 효과를 생성하기에 충분하다. 예를 들어, 샷 배경 깊숙이 있는 빌보드는 2차원 트래킹을 사용하여 종종 대체될 수 있다.

**3차원** 매치 무빙 도구는 2차원 사진에서 3차원 정보를 외삽하는 것을 가능하게 한다. 이 도구는 사용자가 임의의 영상에서 카메라 움직임 및 기타 상대적인 움직임을 도출할 수 있도록 한다. 트래킹 정보는 컴퓨터 그래픽스 소프트웨어로 전송되어 가상 카메라와 시뮬레이션된 객체를 애니메이션하는 데 사용될 수 있다. 3D 매치 무빙이 가능한 프로그램은 다음과 같다.
* Science.D.Visions의 3DEqualizer (아카데미 기술 공로상 수상)
* 블렌더 (오픈 소스, libmv 사용)
* Voodoo
* ACTS 이미지/비디오 시퀀스 처리를 위한 조밀한 깊이 복구 시스템을 갖춘 자동 카메라 트래킹
* LS-ACTS 대규모 이미지/비디오 시퀀스 데이터 세트를 거의 실시간으로 처리하고 어려운 경우(예: 루프백 시퀀스 및 다중 시퀀스)에도 강력하게 작동할 수 있는 견고하고 효율적인 구조-프롬-모션 시스템
* VISCODA VooCAT
* Icarus (맨체스터 대학교 연구 프로젝트, 현재는 중단되었지만 여전히 인기 있음)
* 마야 매치무버
* 픽셀 팜 PFTrack, PFMatchit, PFHoe (PFTrack 알고리즘 기반)
* KeenTools GeoTracker, PinTool
* Andersson Technologies의 SynthEyes
* Boujou (2002년 에미상 수상)
* The Foundry의 NukeX
* The Foundry의 CameraTracker (어도비 애프터 이펙트용 플러그인).
* Punchcard의 VideoTrace (비디오 및 이미지에서 3D 모델을 생성하는 소프트웨어)
*  3D 이퀄라이저, PFTrack, Boujou, SynthEyes, Matchmover, Movimento, Nuke, Shake, Fusion, After Effects, Combustion, Mocha, Silhouette와 같은 소프트웨어의 2D 트랙 및 마스크 파일을 생성할 수 있다.
* Imagineer Systems의 mocha Pro 후반 작업을 위한 평면 트래커 기반 유틸리티
* fayteq의 fayIN (어도비 애프터 이펙트용 플러그인, 2017년 페이스북에 인수됨)
* Alicevision의 Meshroom 무료 오픈 소스 사진측량 애플리케이션으로, 사용자가 장면의 3D 재구성과 함께 애니메이션 카메라를 내보낼 수 있다.

## 자동 대 대화형 트래킹
이미지에서 모션 정보를 추출하는 방법은 두 가지이다. 때로는 "감독 트래킹"이라고도 불리는 대화형 트래킹은 사용자가 장면을 통해 특징을 따라가도록 한다. 자동 트래킹은 컴퓨터 알고리즘에 의존하여 샷을 통해 특징을 식별하고 추적한다. 추적된 점의 움직임은 "솔루션"을 계산하는 데 사용된다. 이 솔루션은 카메라의 움직임, 초점 거리, 렌즈 왜곡과 같은 모든 카메라 정보로 구성된다.

자동 트래킹의 장점은 컴퓨터가 사람보다 빠르게 많은 점을 생성할 수 있다는 것이다. 많은 수의 점을 통계적으로 분석하여 가장 신뢰할 수 있는 데이터를 결정할 수 있다. 자동 트래킹의 단점은 알고리즘에 따라 컴퓨터가 장면을 통해 객체를 추적할 때 쉽게 혼동될 수 있다는 것이다. 자동 트래킹 방법은 핸드헬드 카메라 작업에서 볼 수 있는 빠른 카메라 움직임이 포함된 샷이나 작은 타일 또는 한 영역이 매우 뚜렷하지 않은 모든 종류의 규칙적인 패턴과 같이 반복적인 피사체가 있는 샷에서 특히 비효율적이다. 또한 이 트래킹 방법은 샷에 모션 블러가 많아 필요한 작은 세부 사항을 구별하기 어려울 때도 어려움을 겪는다.

대화형 트래킹의 장점은 사람이 장면 전체를 통해 특징을 따라갈 수 있고 강체가 아닌 특징에 혼동되지 않는다는 것이다. 또한 사람은 모션 블러가 심한 샷에서 특징이 어디에 있는지 파악할 수 있다. 자동 트래커가 높은 모션 블러가 있는 특징을 정확하게 찾는 것은 극히 어렵다. 대화형 트래킹의 단점은 사용자가 장면을 통해 객체를 따라가면서 불가피하게 작은 오류를 유발할 수 있으며, 이는 "드리프트"라고 불리는 현상으로 이어질 수 있다는 것이다.

전문적인 수준의 모션 트래킹은 일반적으로 대화형 및 자동 기술의 조합을 사용하여 달성된다. 예술가는 명백히 비정상적인 점을 제거하고 "트래킹 매트"를 사용하여 자동 트래킹 과정에서 혼란스러운 정보를 차단할 수 있다. 트래킹 매트는 배우나 회전하는 천장 선풍기와 같이 움직이는 요소가 포함된 샷의 영역을 가리는 데도 사용된다.

### 트래킹 매트
트래킹 매트는 트래블링 매트 합성에서 사용되는 쓰레기 매트와 개념이 유사하다. 그러나 트래킹 매트의 목적은 트래킹 알고리즘이 신뢰할 수 없거나, 관련이 없거나, 강체가 아닌 트래킹 포인트를 사용하지 못하도록 하는 것이다. 예를 들어, 배우가 배경 앞에 걸어가는 장면에서 트래킹 아티스트는 배우의 움직임이 계산을 방해할 것이라는 것을 알고 카메라를 통해 장면을 추적하기 위해 배경만 사용하기를 원할 것이다. 이 경우 아티스트는 배우를 장면을 통해 따라가는 트래킹 매트를 구성하여 그 정보를 트래킹 과정에서 차단할 것이다.

## 정제
캘리브레이션 과정에는 여러 가지 가능한 해법이 있고 상당한 양의 오류가 누적될 수 있기 때문에, 매치 무빙의 마지막 단계는 종종 수동으로 해법을 정제하는 것을 포함한다. 이는 카메라 움직임 자체를 변경하거나 캘리브레이션 메커니즘에 힌트를 주는 것을 의미할 수 있다. 이러한 대화형 캘리브레이션을 "정제"라고 한다.

대부분의 매치 무빙 애플리케이션은 트래킹 및 캘리브레이션에 유사한 알고리즘을 기반으로 한다. 종종 초기 결과는 유사하다. 그러나 각 프로그램은 다른 정제 기능을 가지고 있다.

## 실시간
현장에서의 실시간 카메라 트래킹은 후반 작업에 삽입될 요소를 현장에서 실시간으로 시각화할 수 있도록 영화 제작에서 더욱 널리 사용되고 있다. 이는 감독과 배우가 촬영하는 동안(또는 직후) 세트 확장이나 CGI 캐릭터를 실제로 보면서 연기를 개선하는 데 도움이 된다는 장점이 있다. 더 이상 녹색/파란색 화면을 향해 연기하고 결과에 대한 피드백을 받지 못할 필요가 없다. 아이라인 참조, 배우 배치, CGI 상호 작용은 이제 현장에서 실시간으로 이루어져 모든 사람이 샷이 정확하고 최종 합성에서 잘 작동할 것이라는 확신을 가질 수 있다.

이를 달성하기 위해서는 하드웨어에서 소프트웨어까지 여러 구성 요소가 결합되어야 한다. 소프트웨어는 페이즈 스페이스(PhaseSpace)의 능동형 LED 마커 기반 시스템과 같은 모션 캡처 시스템, 모션 애널리시스(Motion Analysis) 또는 비콘(Vicon)과 같은 수동형 시스템, 테크노크레인(Technocranes) 및 피셔 돌리(Fisher Dollies)와 같은 카메라 크레인 및 돌리에 장착된 로터리 엔코더, 또는 카메라에 직접 장착된 관성 및 자이로스코프 센서와 같은 다양한 유형의 하드웨어 장치에서 카메라의 360도 자유도 움직임뿐만 아니라 줌, 초점, 아이리스 및 셔터 요소와 같은 메타데이터를 수집한다. 또한 스테디캠(Steadicam)을 포함한 어떤 것에도 부착할 수 있는 레이저 기반 트래킹 시스템이 있어 비가 오는 야외에서도 최대 30미터 거리에서 카메라를 추적할 수 있다.

모션 컨트롤 카메라는 3D 카메라 데이터의 소스 또는 대상으로도 사용될 수 있다. 카메라 움직임은 미리 시각화한 다음, 3D 카메라와 정확히 동일한 경로를 따라 카메라 크레인을 구동하는 모션 컨트롤 데이터로 변환될 수 있다. 크레인의 엔코더는 현장에서 실시간으로 이 과정을 역전시켜 실시간 3D 카메라를 생성하는 데도 사용될 수 있다. 이 데이터는 다양한 3D 애플리케이션으로 전송되어 3D 아티스트가 현장에서 CGI 요소를 실시간으로 수정할 수도 있다. 주요 이점은 나중에 시간이 많이 걸리고 비용이 많이 드는 세트 디자인 문제를 촬영 과정에서 해결하여 배우들이 각 촬영에서 연기하는 동안 각 환경에 "적합"하도록 보장할 수 있다는 것이다.

실시간 모션 캡처 시스템은 카메라 데이터 스트림과 혼합되어 가상 캐릭터를 라이브 샷에 삽입할 수도 있다. 이는 플레이트와 CGI 연기를 함께 안무할 수 있으므로 실제 및 비실제 모션 캡처 구동 캐릭터 간의 상호 작용을 극적으로 향상시킨다.

## 같이 보기
* 1st & Ten (그래픽 시스템)
* PVI 버추얼 미디어 서비스
* 모션에서 구조
* 가상 스튜디오

## 각주

* Matchmoving: The Invisible Art of Camera Tracking, by Tim Dobbert, Sybex, Feb 2005, 
* 3-D Estimation and Applications to Match Move - An early paper on match moving, which gets in depth about mathematics.
* Comparison of matchmoving and tracking applications
* Tracking and 3D Matchmoving Tutorials*Dead Link*

## 외부 링크
* Matchmoving explained at FLIP Animation blog Retrieved May 2013

분류:컴퓨터 애니메이션
분류:시각 효과