본문 바로가기
취미/linux 기초

YU12, NV12 format 구조(YUV420)

by 심심해43 2022. 11. 18.
반응형

카메라와 같은 영상을  이용 시 영상 YU12 ,NV21, format 과 관련된 용어를 접하게 되는데 용어를 공부합니다. 

 

영상의 포멧에 대한 이야기가 코드에서 나오면,  무슨 차이가 있는지 난감할 때가 많은데,  기록을 해두면서 

차차 확인 하겠습니다.

아래 내용은  YUV 420 format 에 대한 내용입니다. 

 

1. YU12 : I420,YUV420P

yyyyyyyy yyyyyyyy 
yyyyyyyy yyyyyyyy
yyyyyyyy yyyyyyyy
yyyyyyyy yyyyyyyy       (w*h)
uuuuuuuu uuuuuuuu    (w*h/4)
vvvvvvvv vvvvvvvv       (w*h/4)

가장 일반적인 포맷이라고 합니다.  Y데이터가 먼저나오고,   U , V  가 나와 1 프레임이 됩니다.  

이미지 프레임의 사이즈는  YU 12 , YV12, NV12, NV21 모두 동일 하지만 메모리에 적재된  u, v 값들의 위치가 조금씩 상이합니다. 

 

 

 

2. YV12 : YVU420P

yyyyyyyy yyyyyyyy 
yyyyyyyy yyyyyyyy 
yyyyyyyy yyyyyyyy 
yyyyyyyy yyyyyyyy
vvvvvvvv vvvvvvvv
uuuuuuuu uuuuuuuu

YU12 와 비교하면   u <--> v  값의 순서가 바뀌어 있습니다. 

 

 

 

3. NV12 : YUV420sp (semi-planer)

yyyyyyyy yyyyyyyy 
yyyyyyyy yyyyyyyy 
yyyyyyyy yyyyyyyy 
yyyyyyyy yyyyyyyy   (w*h)
uvuvuvuv uvuvuvuv
uvuvuvuv uvuvuvuv   (w*h/2)

NV12는 YU12와의 차이는 uuu vvv 순서로 나오지 않고,  u, v 가 교차하며 나옵니다.  

semi-planer 라고 되어있는데  의미를 살펴보면 아래와 같습니다.  

참고 사이트  

semi-planer

다음과 같이 설명되어있습니다. 

semi-planer :  Y 평면 1개와  Cb,Cr 평면 1개  총 2개의 평면을 이용한다. 

Full planer   :  Y, Cb,Cr 이 각각 1개의 평면을 이용한다, 총 3개의 평면을 이용한다. 

 

 

 

4. NV21 : YVU420sp (semi-planer)

yyyyyyyy yyyyyyyy 
yyyyyyyy yyyyyyyy 
yyyyyyyy yyyyyyyy 
yyyyyyyy yyyyyyyy
vuvuvuvu vuvuvuvu
vuvuvuvu vuvuvuvu

NV12에서  u <--> v 의 순서가 바뀝니다. 

 

 

 

 

5. GRAY YUV400

yyyyyyyy yyyyyyyy 
yyyyyyyy yyyyyyyy 
yyyyyyyy yyyyyyyy 
yyyyyyyy yyyyyyyy

마지막으로 test로 확인하기 쉬운 GRAY 포맷입니다.  GRAY8로 보면 될듯 하고   y값만을 가지고 있습니다.  

 

실제 포멧 관련 공부하면서 차근차근 확인해보고, 테스트해봐야겠습니다. 

여기서 언급한 1~4번 YUV420 format 외에  YUV422 , YUV444 등의 format 도 있는데 아래 링크에서 확인이 가능합니다. 

YUV422, YUV444 format  확인 링크 

 

사실 궁금한 건  실제 보드나, 카메라에서 나오는 포맷이 NV12 라 가정하고,  설정을 잘못해서 YU12 등으로 설정했을 경우 화면이 어떻게 보이는지가 궁금했습니다.  

 

현재 테스트하고 있는 이미지의 정확한 fotmat을 확인해보고 싶은데,  막상 확인하려니, 포맷 자체에 대한 이해도가 없어서  조사하고, 기록해 봅니다. 

댓글