Computer Science/+α

JPEG 압축원리 / JPEG는 lossless한 포맷인가?

lallala 2023. 2. 2. 16:43
  1. 색공간 변경( RGB to YCbCr)
    • Y는 밝기 성분, CbCr은 색차성분을 의미함(B-Y, R-Y) → 인간의 눈은 색차보다 밝기 에 더 민감함
    • RGB→YCbCr 변환공식 (압축✖)
    • 각각 0~255 사이의 값
    • (밝기정보만 받아들이는 흑백TV, RGB는 빛→ 다 밝기 성분을 가지고 있음) 호환성문제, (컬러는 이미지 3개가 필요)대역폭문제
  2. (크로마)서브샘플링(subsampling)
    • 인간이 덜 민감한 색차를 눈이 인식하지 못하는 범위내에서 적당히 제거
    • 서브샘플링 전략은 보통 J:a:b의 비율로 표현 (J: 픽셀블럭의 너비 보통 4, a: 첫번째 행에서 추출한 샘플 개수, b: 두번째 행에서 추출된 샘플개수)
    • 주로4:2:0 sampling을 많이함
    → 8×8블록화
  3. DCT(discrete cosine transformation)DCT-2방식(JPEG에서 많이 사용)
    • 이미지를 공간주파수 도메인으로 변환
  4. 양자화 (Quantization)
    • 인간의 눈은 낮은 주파수에비해 높은 주파수값에는 덜민감함. ( 이미지가 덜변하면 낮은주파수 빠르게변하면 높은 주파수)
    • 낮은 주파수성분들만 취하고 사람들이 인식하지 못하는 범위내에서 높은 주파수 성분들 제거
    • DCT matrix 를 양자화 행렬로 요소별(element-wise)로 나누어 양자화 진행
    • 이러한 과정을 양자화라고 함
  5. Zig-Zag 스캐닝
    • 양자화된 행렬을 zig-zag한 순서로 한벡터에 저장하는 것, 연속적으로 등장하는 0들을 제거할 수 있음
  6. Entropy Coding
    • 전체데이터에서 특정데이터가 등장하는 확률에 따라 코드로 변환하는 작업

lossless인가

  • lossless한 포맷이라면 원본 복원이 되어야함
  • 허프만 코딩은 디코딩하는 방식이 존재. DCT도 inverse DCT도 있고, YCbCr도 RGB로 전환하는 수식이 있음. 하지만 양자화에서 0으로 변한 값들이 있고, 서브 샘플링도 손실되는 값이 있기때문에 완전히 복원되지 않음. 그래서 lossless 한 압축 포맷이 아님

'Computer Science > ' 카테고리의 다른 글

[python] 출력, 소수점 정리  (0) 2023.11.10
프레임워크 라이브러리 차이!!  (0) 2023.11.07
[Git] git 기초, github  (0) 2022.01.27
[파이썬] 단축키(1)  (0) 2021.08.14
[Git] Gitlab  (0) 2021.07.11