SYDLAB_inha/AI semiconductor

AI. semi - MPEG 압축 알고리즘

빈그레 2023. 10. 25. 19:27

 

 


MPEG

 

 

 

 

MPEG (Moving Picture Experts Group)

프레임 단위의 압축과 더불어 프레임간의 연관성을 이용한 비디오 압축 방법이다.

 

 

 

 

 

 

MPEG-1 압축 알고리즘

: MPEG-1은 CD-ROM에 대한 재생용으로 고안되어 , encoding은 시간이오래 걸리나, decoding은 실시간 처리가 가능하다.

2차원 공간에서의 중복을 제거하기 위해 DCT가 사용된다. (색상 -> 주파수 domain )

프레임 단위의 압축에서 video sequence가 갖는 시간축 상의 중복을 없애기 위해 motion compression을 적용한다.
-> 비슷한 시간축에서 정지된 배경은 변화가 거의 없으므로 움직임이 있는 부분을 기반으로 압축 진행
-> 움직이는 부분은 이전 frame간의 차이를 계산하여, 차이를 통해 움직임이 발생한 부분 catch하여 다음 frame 예


 

- Picture type

: motion compression 과정에서는 연속되는 프레임 간의 차이를 효율적으로 전송하기 위해

3가지 유형의 frame이 사용된다.


I-frame (intra frame)
:단일 프레임 단위로 압축 (JPEG)
 다른 frame들과 독립적으로 인코딩된다.
 i-frame은 기본적인 key-frame으로 동영상 시작이나 장면의 변화에서 주로 발생한다.
다른 프레임들은 이 i-frame을 기반으로 디코딩된다.

//다른 frame들은 서로 의존도가 있으나 i-frame은 독립적이라 random access할 때 i-frame 이 영상 복원에 기준이 됨.

 *** key-frame : 동영상에서 중요한 지점을 나타내는 프레임



 


P-frame (predictive-frame)
: 이전 프레임인 I-Frame 으로부터 움직임을 예측한 후 나머지 차이 부분을 DCT 변환하여 압축
   이전 프레임과 현재 프레임을 비교하여 변화된 부분만 기록하여 압축
   과거 프레임으로 부터 예측하기 때문에 이전 프레임에 대한 의존도가 높음

P-Frame은 현재의 프레임과 앞의 I-Frame 또는 P-Frame과의 차이를 관찰하여 만들어진 예측 정보만을 포함한다. (즉 완전한 하나의 장면이 아니다)




 


B-frame (Bi-directional predictive-frame)
: 이전 프레임 뿐만 아니라 이후 프레임을 참고하여 쌍방향 예측
이전 프레임과 이후 프레임에 대한 의존도가 높음


이전과 다음(미래) 프레임을 기반으로 예측된 프레임으로, 양방향으로 예측이 가능하다.
이전 프레임 뿐만 아니라 이후 프레임을 참고하여 쌍방향 예측

B프레임은 i프레임과 p프레임사이에 위치하며 최대한 많은 움직임 정보를 활용하여 압축한다.
양쪽을 기준으로 잡기 때문에 다른 프레임에 비해 높은 압축률을 제공하며 정확도는 높으나, 계산이 느리다.

디코딩시 쌍방향 예측을 수행하기 때문에, i,p프레임을 먼저 처리한 후 b프레임을 디코딩 해야한다.

즉, motion compression의  기본적인 압축 원리는 프레임이 바뀔 때 변화가 있는 부분에 대한 정보만 기록하는 것이라 볼 수 있다.

 

 

 

GOP
( group of pictures )

: key frame인 i-frame을 찾기 힘든 경우 역방향 재생시 기준이 없기 때문에 복원이 불가능해진다. (아래 디코딩 참고)

동영상의 어느 지점이든 random access발생시 바르게 해당 지점의 프레임을 복원하기 위해 추가된 구조가 group of pictures이다.



하나의 GOP는 10~15장의 프레임으로 구성되고
GOP 내에는 반드시 I-Frame이 포함되어야 하며,
GOP 앞부분에 시퀀스 헤더를 붙여서 Random access 시 시퀀스 헤더의 위치를 확인하고
GOP  내의 I-Frame을 참조하여 영상을 복원한다.

Random Access 시 시퀀스 헤더의 위치를 확인하고 GOP 내의 I-Frame을 참조하여 영상을 복원한 후 이를 바탕으로 P-Frame, B-Frame을 복원하여 재생하는 구조이다


 

 

 

 

 

- 압축 방법

 

[인코딩 ]
프레임이 바뀔 때, 변화가 있는 부분에 대한 정보만 기록


본 프레임 데이터를 토대로 우선 JPEG 압축 방법을 사용하여 독립적으로 I-Frame을 만든다.
생성된 I-Frame을 기준으로 가장 이웃한 P-Frame을 압축하고 이들 사이의 B-Frame 압축을 진행한다.

[디코딩]
디코딩도 동일하게 I-Frame → P-Frame → B-Frame 순으로 진행된다.

우선 I-Frame을 복원한 후 이를 기준으로 가장 이웃한 P-Frame을 복원한다.
이후 이들 사이의 B-Frame들을 복원해나가는 방식이다.