Developer Document

Embedded Software 개발을 하면서 습득한 내용을 적은 시니어 개발자들의 글

코 독 코 독 CoderDocument

Embedded SW 기초/Streaming

프레임 (GOP) & 영상 품질 요소 ( Bit rate / Frame rate)

뜨요르 2024. 5. 29. 19:53

지난 글에 2024.05.23 - [Embedded SW 기초] - Stream 구조와 원리를 보셨다면 마지막에 손실압축과 무손실 압축이 있다는 것을 아실 수 있습니다. 사람의 눈은 시시각각 바뀌는 영상에 모든 정보를 담지 못합니다. 또한 같은 화면인 경우 같은 데이터를 준다면 중복 데이터로 인해 전송이 더 느려질 수 있습니다. 이러한 내용을 보완하고자 손실압축이 생겨 났습니다.

 

GOP(Group Of Pictures)란?

MPEG standard 비디오 압축 기술에서 사용되는 표현으로 인코딩한 이미지 프레임 그룹입니다.

즉, 여러 장의 연속적으로 나열된 이미지 프레임들을 하나의 이미지 프레임 그룹으로 인코딩합니다.

출처 : https://www.researchgate.net/figure/A-sample-of-MPEG-GOP-N9-M3_fig6_4236575

GOP의 구성은 IFrame BFrame PFrame이 있습니다. 그림에서 보듯  IFrame과 IFrame사이에 BFrame, PFrame이 존재합니다.

IFrame (Intra Frame) KeyFrame이라고도 하며 GOP의 기준이 되는 핵심 프레임 입니다.
모든 GOP의 첫 프레임은 반드시 IFrame으로 시작합니다.
IFrame은 다른 프레임을 참조하지 않고 입력 원본 그대로 저장된 프레임 입니다.
PFrame (Predicted Frame) 순방향 예측 프레임 입니다.
IFrame을 기준으로 차이가 나는 데이터만 예측하여 저장하는 프레임 입니다.
BFrame (Bidirectional Frame) 양방향 예측 프레임 입니다.
IFrame과 PFrame 사이에 껴서 양쪽 프레임 모두를 참조하여 두 프레임 사이 움직임을 추측 데이터로 저장한 프레임 입니다.

 

시작 IFrame과 끝 IFrame 사이에 존재하는 프레임들을 묶어서 GOP라고 합니다. 즉 GOP수가 높으면 압축률은 높아지지만 화질은 떨어지게 됩니다.

 

그럼 프레임 이라는 개념과 GOP가 뭔지 알았다면 영상 인코딩하는 작업에서 영상의 품질을 고려해야 하는 두 가지 요소가 있는데 바로 Bit rate & Frame rate 입니다.

 

Bit rate란?

1초의 영상을 구성하는 비트 단위의 데이터 크기를 말합니다. 단위로 bps를 사용합니다.

즉 1초에 해당하는 동영상에 얼마의 bit 수를 집어 넣느냐를 정하며 동영상의 화질과 관련되어 있습니다.

Bit rate 수가 높으면 화질은 높아지지만 용량 또한 커지게 됩니다.

Bit rate종류에는 총 2가지가 있습니다.

CBR(Constant Bit Rate) 고정돤 bit rate를 사용하여 압축합니다,
영상이 어떤건지 상관 없이 데이터 전송속도가 일정하게 유지됩니다.
ex ) 초당 1150kbit 사용하여 모든 프레임 압축
인코딩 시간이 짧고, 움직임이 많은 영상은 화질이 떨어질 수 있으며 움직임이 적은 영상은 데이터 낭비가 될 수 있습니다.
VBR(Variable Bit Rate) 가변 bit rate를 합니다.
영상 변화가 많을 떄는 높은 bit rate를 영상 변화가 작을 때는 낮을 bit rate를 사용하는 방식 입니다.
압축하려는 비디오 전체를 한번에 읽고 처음부터 다시 압축을 행합니다.
특징 : 인코딩 시간이 길고, 영상 변화에 따라 대역폭의 변화가 커 순간 네트워크에 과부화를 줄 수도 있습니다.

 

Frame rate 란?

영상에서 1초동안 재생되는 이미지의 수를 가리키며 단위로는 fps를 사용합니다. 예를들어 24fps는 1초에 24개의 프레임이 들어갑니다.

프레임 수가 많을수록 영상 흐름이 자연스러워지고 적을수록 끊기는 느낌을 갖게됩니다.

 

'Embedded SW 기초 > Streaming' 카테고리의 다른 글

GStreamer 기초  (0) 2024.05.29
Stream 구조와 원리  (0) 2024.05.23