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