Multimedia 개념 정리
GIF 압축
- Run Length Encoding : 같은 값이 몇번이나 반복되는가를 나타냄.
👉 수평으로 데이터를 읽으며 압축을 수행한다.
👉 디더링을 수행하였을 경우, 이미지를 GIF 방법을 이용하여 압축을 수행하였을 경우 오히려 파일크기가 더 커질 수 있음.
Dithering : 요구된 색상의 사용이 불가능할 때, 다른 색상들을 섞어서 비슷한 색상을 내기위해 컴퓨터 프로그램에 의해 시도되는 것 ex) 흰색과 빨간색의 점들을 기술적으로 잘 배치하면 분홍색을 만들 수 있다.
DPCM
특정 값을 기준으로, 다음으로 이동할 때 해당값과 기준값의 차를 기록한다. 이 과정에서 양수로만 구성되어있던 기존의 데이터들이 +와 -로 구분되며, 데이터양이 늘어나기 시작한다. (DPCM을 거치면 데이터 양이 증폭함)
이 늘어난 데이터를 기반으로 양자화+Entropy Coding 을 거쳐 압축을 진행한다.
DCT
특정 사진을 두 가지 파트로 구분해보면, 우리가 관심있는 매끄러운 부분 과 상대적으로 덜 관심이 있는 경계선 부분이 있다. 이런 부분을 부드러운 Sin함수 와 날카로운 Sin함수로 표현할 수 있는데, 각각의 Frequency Domain은 Low , High 프리퀀시 도메인이 된다. 이런 DCT과정에서 또 데이터를 엄청 늘리게 된다. 정수형 데이터를 Sin함수를 취함으로써 Float이 되었기 때문이다.
우리는 Low Frequency Domain 에 관심이 있으므로, High Frequency Domain 파트의 데이터를 쳐내는 방식으로 압축을 진행하게 된다.
JPEG 압축 방식
JPEG 압축 방식은 Lossy(DCT 방식) 방식과 Lossless 방식이 있다.
-
Lossless 방식 - 공간적(Spatial) 예측 방식
predictor를 하나 둠으로써, 다른 데이터는 해당 predictor와의 차로 데이터를 줄인다.
Entropy Coding 과정은 일반적으로 허프만 코딩을 많이 사용한다. 출현빈도가 높은 값에는 짧은 길이의 부호를 할당하고, 출현빈도가 낮은 값에는 긴 길이의 부호를 할당한다. -
Lossy 방식 - DCT 방식
- RGB model 👉 YUV model로 바꾼다 [사람의 눈은 밝기(명암)정보에 매우 민감함으로 Y는 그대로 사용하고, U,V는 Down-Sampling을 진행하여 데이터를 줄인다]
- 색상 정보(YUV)에 대해 Down-Sampling을 진행한다.
- 최소 부호화단위(Minimum Coded Unit)으로 나눔
- 전체 이미지를 8X8 픽셀 블록 단위로 나누어 압축을 수행
- DCT(Discrete Cosine Transform)
- 2차원 평면 공간의 정보를 2차원 주파수 정보로 Fourier Transform(사람 시각에 민감한 부분과 민감하지 않은 부분으 구분할 수 있음) - 양자화(Quantization)
- 양자화 테이블을 이용하여 특정한 값으로 나눔(반올림) - 높은 주파수는 큰 수를 이용하여 나눔 - 인간의 눈이 잘 인식하지 못하는 높은 주파수의 DCT 계수들은 거의 0이 됨(데이터를 줄일 수 있음) - 지그재그 스캐님
- DCT 계수 지그재그로 읽어 일차원 형태로 배열을 생성 - 낮은 주파수는 계수의 앞쪽에, 높은 주파수의 계수는 뒤쪽에 위치 - 엔트로피 코딩
- 무손실 압축을 이용하여 최종 압축을 수행 - 일반적으로 허프만 코딩을 많이 사용 (출현 빈도가 높은 값 👉 짧은 길이의 부호 할당, 출변 빈도가 낮은 값 👉 긴 길이의 부호 할당)
PNG V.S JPG
PNG 파일은 비손실 압축 방식이라 원본이 훼손되지 않는다. 반면 JPEG는 일반적으로 손실압축으로 원본 자체가 훼손된다. JPEG는 사람의 눈에 거슬리지 않을 정도로 원본을 훼손하여 압축 효과를 극대화시키는 알고리즘이다. 실사 이미지같이 자연스럽고 복잡한 이미지라면 JPG 파일 형식이 더 좋고, 깨끗한 이미지를 얻기위해 인공적으로 만든 디자인의 경우 PNG 압축이 더 유리하다.
참고자료
멀티미디어 수업 : [박광훈 교수님]