SYDLAB_inha/Dynamic Mesh

VDMC - Apple's(5) / Inter Encoding

빈그레 2024. 1. 29. 21:59

 

 

 

 


Inter Encoding

 

 

 

 

 

 

 

 

 

 

intra encoding diagram과의 차이점

 

- encoder의 input으로 reference base mesh m'(j)가 들어온다. // MPEG의 I-frame 역할을 하는
- static mesh codec 대신 motion codec이 들어감
- Reconstruction of base mesh module 
  // i-frame에 대한 base mesh가 buffer에 저장되어있다가 현재 frame에 맞춰서 조정된..?

 

// reference frame에 대한 base mesh 가져오는 건 pre-processing에 있는 mesh buffer

 

 

Reference base mesh

 

- reference base mesh m'(j) 는 현재 frame의 base mesh m(i)를 predict하는 데에 사용된다.

- Pre-processing module에서 m(j)와  m(i)는 다음 항목들을 동일하게 공유한다.
  vertex의 개수 / connectivity / texture coordinates / texture connectivity

- vertex의 개수와 연결성과 색상 정보는 공유하지만, 결국 변화하는 frame이기 때문에 vertrex의 position은 다르다.

 

 

 

Motion Encoder

 

//apple(2)에서 reference와의 차이값으로 언급한 적 있음.

//i-frame에 대해 처리할 때 이미 i-frame의 base mesh를 encoding하여 보냈으니까

//나머지는 차이값만 보내서 미리 보낸 reference base mesh 에 더해서 쓰면됨

- Motion Field 계산

: motion field f(i)는 quantized version의 m(i)와 reconstructed quantized base mesh m'(j)을 고려하여 계산되어진다.

*** f(i) : motion field
*** m(i) : 현재 frame의 base mesh
*** m'(j) : reconstructed quantized된 reference frame의 base mesh
//i-frame 차례에서 m(j)이고 reference로 쓰이기 위해 quantized되어 buffer에 저장된 형태가 아닐까..?? 하는 생각..

m'(j)는 m(j)와 다른 개수의 vertices를 가졌다. quantization되면서 vertices가 merge되거나 remove되었을 것이다.

그러므로 encoder는 m(j)에 적용된 transformation을 추적하여 m(i)와 1:1대응을 만들기 위한 reconstructed version m'(j)를 얻어낸다. 이는 m'(j)와  m(i)의 quantized version인 m*(i)와의  1:1 대응을 만들어내기 위해 수행되는 것이다.

*** m*(i) : quantized base mesh //quantization에서 나온 motion encoder input

motion field f(i)는 m*(i) vertex v의 position인 p(i,v)에서 m'(j)의 vertex v의 position인 p(j,v)을 빼서 계산된다. 
즉, 현재 frame의 mesh와 reference mesh와의 위치에서의 차이값이 motion field가 되는 것이다.
reference 와의 position 차이

이후 motion field는 m'(j)의 connectivity를 활용하여 추가로 예측되며, prediction residuals(예측된 차이값)는 데이터를 더욱 압축하기 위해 entropy encoding되어 compressed motion bitstream으로 mux로 넘어간다.

 

 

 

Motion Decoder

 

- Reconstructed motion field

: motion field compression과정에는 손실이 있을 수 있기 때문에 motion decoder module에서는 원래의 motion field자체가 아닌 reconstructed motion field 인 f'(i)를 계산된다.

reconstructed quantized base mesh m'(i)는 reference base mesh인 m'(j)에  motion decoder에서 복원된 f'(i)가 더해져서 만들어진다.
//i-frame에 대한 base mesh's reconsturcion version을 재사용하면서 거기에 차이값만 더해서 지금 프레임에 대한 base mesh를 생성하는 과정 



- Displacement Encoder


input으로 들어오는 displacements는 i-frame을 subdivision한 것과 현재 frame original mesh와의 차이값
근데,,? 그 base mesh subdivision한 거 말고 현재 frame과의 차이값 반영해서 reconsturction module에서 현재 frame에 대한 base mesh 만들었으니까 그거 바탕으로 displacements 값 update해야함

 

 

인코딩 과정의 나머지 부분은 section 2.2에서 언급했던  intra encoding과 유사하다. 

 

https://kycu-sb.tistory.com/188

 

VDMC - Apple's(3) / Intra Encoding

Intra Encoding 2.2 Intra Encoding Process : intra mode는 모든 frame에 대해 독립적으로 압축되어 다른 프레임의 참조를 필요로 하지 않는다. 2.2.1 Base Mesh Encoding - Quantization & Encoding (with Draco Codec) : current frame에

kycu-sb.tistory.com

 

displacement와 attribute map videos의 temporal correlation(시간적 연관성)을 사용하기 위해서, video encoder에서는 inter predidction tool이 사용된다.