본문 바로가기

CS/CS 정리

Bitmap과 YUV의 차이점

사진: Unsplash 의 pine watt

 

이번에 개인 사이드 프로젝트로 앱을 만들며, 이미지를 처리를 경험하게되었다.

지금까지 Camera를 사용하면 무조건 Bitmap을 사용해 왔는데, 이번에는 YUV color format을 위주로 사용하게되어 많이 해맸었다.

그래서 정보를 찾아보며 알게된 둘의 차이점과 공통점을 정리해 두려 한다.

 

차이점

Bitmap: RGB(좌) & YUV(우)

  1. 색상 표현 방식
    • Bitmap은 RGB 색상 모델을 사용하여 각 픽셀의 Red, Green, Blue 값으로 색상을 표현한다.
    • YUV는 휘도(Y)와 색차(U, V) 성분으로 색상을 표현하는 모델이다. Y는 밝기 정보를, U(색차 B-Y)와 V(색차 R-Y)는 색상 정보를 가지고 있다.
  2. 대역폭 효율성
    • RGB 모델은 각 픽셀마다 3개의 값(R, G, B)을 가지므로 대역폭 요구량이 크다. 그래서 리소스를 많이 소모한다.
    • YUV 모델은 휘도 정보(Y)만 전체 해상도로 저장하고, 색차 정보(U, V)는 서브샘플링하여 대역폭 요구량을 줄일 수 있다.
  3. 압축 및 전송 효율성
    • YUV 모델은 인간 시각 특성에 맞춰 설계되어 압축 및 전송 시 오류에 강하고 효율적이다.
    • Bitmap은 RGB 값을 그대로 저장하므로 압축 및 전송 시 오류에 취약할 수 있다.

공통점

  • 둘 다 이미지나 비디오를 디지털 형태로 표현하는 방식이다.
  • 컴퓨터 비전, 영상 처리 등의 분야에서 활용된다.

요약

  • Bitmap은 RGB 모델을 사용하는 반면 YUV는 휘도와 색차 성분으로 색상을 표현하며, 대역폭 효율성과 압축/전송 효율성 측면에서 YUV가 더 유리하다.

그래서 보통, 정지 이미지나 단편적인 사진을 다루는 경우 Bitmap을 사용하고, Stream 영상이나 비디오의 Frame에는 YUV 포맷을 사용한다.

 

안드로이드의 미디어코덱에서 YUV를 사용하려면, 각 디바이스에서 지원하는 코텍에 맞도록 NV21이나 YUV12로 데이터를 변환해주는 작업이 필요하다.

해당 내용은 바로 다음 글에서 다루도록 하겠다.

'CS > CS 정리' 카테고리의 다른 글

[가볍게 읽는 CS] TCP vs UDP  (1) 2024.07.22
[영상처리] NV21과 YV12의 차이점  (0) 2024.06.24
[네트워크] 캐시(Cache)  (0) 2023.01.08