930 likes | 2.04k Views
제 4 장 . 멀티미디어 데이터 압축. 목차. 압축의 개념 압축 알고리즘 이미지 압축 표준 오디오 압축 기법 동영상 압축 표준 요약 및 참고문헌. 압축의 개념. 압축의 개념 코딩의 개념 코딩 (coding) = 인코딩 (encoding) + 디코딩 (decoding) 인코딩 : 목적에 따라 데이터의 형태를 변환하는 과정 디코딩 : 인코딩된 데이터를 원래의 데이터로 복원하는 과정 코딩의 목적에 따른 분류 저장공간과 전송 대역폭의 효율적 이용 → 압축
E N D
목차 • 압축의 개념 • 압축 알고리즘 • 이미지 압축 표준 • 오디오 압축 기법 • 동영상 압축 표준 • 요약 및 참고문헌
압축의 개념 • 압축의 개념 • 코딩의 개념 • 코딩(coding) = 인코딩(encoding) + 디코딩(decoding) • 인코딩: 목적에 따라 데이터의 형태를 변환하는 과정 • 디코딩: 인코딩된 데이터를 원래의 데이터로 복원하는 과정 • 코딩의 목적에 따른 분류 • 저장공간과 전송 대역폭의 효율적 이용 → 압축 • 데이터의 전송 도중에 발생하는 오류의 처리 → 패리티 비트, 해밍코드 • 데이터의 보호 → 암호화 (encryption)
압축의 개념 (계속) • 압축의 개념 • 저장공간과 전송 대역폭의 효율적 이용을 위해 데이터를 크기(전체 비트 수)를 줄이는 것 • 데이터 압축 시스템 구조 • 인코더에서 압축을 하고, 디코더에서 복원 • 중간 매체: 데이터 저장 공간 또는 통신/컴퓨터 네트워크 • 코드(code): 인코더의 출력 일반적인 데이터 압축 시스템 구조
압축의 개념 (계속) • 압축의 필요성 • 대용량의 멀티미디어 데이터를 컴퓨터에 저장하거나 네트워크를 통해 다른 기기에 전송하는데 많은 자원이 소모됨 • 3 분 길이의 CD오디오 품질의 음악을 44.1 kHz의 주기로 16 비트 샘플링하여 디지털 데이터로 변환한 데이터의 크기 • 3 분 x 60 초/분 x 44,100 회/초 x 2 bytes/회 ≈15 Mbytes • 1280 x 1024 해상도의 32 비트 색 이미지를 초당 30 프레임으로 전송하는 비디오 응용에 필요한 전송 대역폭 • 1280 x 1024 x 4 bytes/프레임 x 30 프레임/초 =150 Mbytes/초 • 전화선(xDSL)과 모뎀을 이용할 경우: 0.2 ~ 6.3 Mbytes/초(=1.5 ~ 52 Mbps) • Ethernet을 이용할 경우:1.2 ~ 12 Mbytes/초 (=10 ~ 100 Mbps)
A B C A A T1 T2 T3 T4 T5 시간 A B B C A 압축의 개념 (계속) • 데이터의 특성 • 중복성(redundancy) • 시간적 중복성(temporal redundancy) • 시간의 흐름에 따라 동일한 데이터가 반복하여 나타남 • 사운드 데이터, 동영상 데이터 • 공간적 중복성(spatial redundancy) • 공간상의 여러 위치에 같은 데이터가 중복되어 나타남 • 정지 영상 데이터나 문서 데이터, 동영상 데이터 (a) 시간적 중복성 (b) 공간적 중복성 중복성의 예
압축률 = 압축의 개념 (계속) • 압축 시스템의 평가 기준 • 압축률(compression ratio) • 압축 이전의 데이터 크기와 압축된 데이터 크기의 비율 • 복원된 데이터의 품질(quality) • 무손실 압축(lossless compression) • 문서 데이터 • 손실 압축(lossy compression) • 소리 데이터, 이미지 데이터 (B0: 압축 이전의 데이터 비트 수 B1: 압축 이후의 데이터 비트 수)
압축의 개념 (계속) • 압축/복원 속도 • 대화형(dialogue) 멀티미디어 응용 • 데이터의 압축과 복원이 거의 동시에 일어남 • 압축/복원 속도 모두 중요 • 대칭형(symmetric) 멀티미디어 응용 예) 비디오 전화, 비디오 회의 등 • 검색형(retrieval) 멀티미디어 응용 • 압축된 데이터는 저장 공간에 저장되었다가 필요에 의해 복원됨 • 복원 속도 중요, 압축 속도는 덜 중요 • 비대칭형(asymmetric) 멀티미디어 응용 예) 주문형 비디오(VOD), 비디오 CD 등
압축 알고리즘 • 분류
압축 알고리즘 (계속) • 무손실 압축 • 압축 이전의 데이터에 포함된 모든 정보를 손실 없이 인코딩 • 동일한 정보의 반복적인 출현에 의해 나타나는 중복성만을 제거 • 문서 데이터 압축에 필수 • 엔트로피(entropy) 코딩 • 손실 압축 • 데이터에 포함된 정보 중 내용을 인식하는데 크게 영향을 주지 않는 정보들을 삭제함 • 무손실 압축에 비해 압축률을 높임 • 원천(source) 코딩
혼성 압축의 과정 압축 알고리즘 (계속) • 혼성 압축 • 손실 압축 기법과 무손실 압축 기법을 혼용 • 20:1 ~ 200:1 정도의 압축률을 얻을 수 있음 • 대부분의 표준 압축 기법에서 이용됨
압축 알고리즘 (계속) • 반복길이 코딩(Run-Length Coding) • 연속적으로 반복되어 나타나는 정보(문자, 픽셀)들을 그 정보와 반복된 횟수(run-length)로 표현하는 코딩 방법 예) TABBBBBBBBBBBBBBGLC → TAB@14GLC 14개
0 1 0 1 0 1 E T S H I N C . T E 1 0 0 1 5 5 4 4 2 2 2 1 1 S 0 0 1 1 N I H 0 1 . C 압축 알고리즘 (계속) • 허프만 코딩(Huffman Coding) • 데이터를 구성하는 단위 정보들의 빈도수를 기반으로, 각 단위 정보를 표현하는 비트 수를 효율적으로 할당하는 방법 • 가변 길이 코딩 (Variable-Length Coding) 방법 예) 26개의 글자 THIS IS TEST SENTENCE. 각 문자의 출현 빈도 허프만 트리
E 11 I 0010 T 10 N 0001 S 011 C 00001 010 . 00000 H 0011 압축 알고리즘 (계속) • 높은 빈도로 나타나는 단위 정보에는 비트 수를 적게 사용하고, 낮은 빈도로 나타나는 단위 정보에는 비트 수를 많이 사용 • 8비트 아스키 코드 이용: 8 x 26 = 208 비트 • 허프만 코딩 이용: (2x5)x2 + (3x4)x2 + (4x2)x3 + (5x1)x2 = 78 비트 [각 문자마다 할당된 코드]
압축 알고리즘 (계속) • 허프만 코딩의 속성 • 유일한 접두사를 가지고 있음(unique prefix property) • 하나의 허프만 코드는 다른 허프만 코드의 접두사가 될 수 없음 ← 이유: 모든 입력 기호들을 허프만 트리의 리프 노드에 둠 • 허프만 코딩으로 만들어진 코드보다 더 효율적인 방법이 없음(optimality) • 인코딩된 데이터의 길이가 최소임(minimum-redundancy code) • 허프만 코딩의 단점 • 입력 기호의 확률 분포가 변한다면, 효율성을 잃어버릴 수 있음 (가변 길이 코딩) • 입력 기호의 확률을 인코딩 전에 미리 알아야 함
압축 알고리즘 (계속) • 미리 정의된 허프만 코드 테이블을 이용 • 흑백 비트맵 이미지의 압축에 이용 • 각 비트 패턴에 따라 해당하는 코드가 테이블에 미리 정의됨 • 대량의 샘플 영상을 바탕으로 허프만 코딩을 수행하여 코드를 할당 (CCITT Group 3 표준) 비트 0의 반복 횟수 코드 비트 1의 반복 횟수 코드 0 1 2 3 ... 20 ... 50 0 1 2 3 ... 20 ... 50 00110101 000111 0111 1000 ... 0001000 ... 01010011 0000110111 010 11 10 ... 00001101000 ... 000001010010 CCITT GRUOP3 1D 압축을 위한 코드 테이블 (일부)
압축 알고리즘 (계속) • 렘펠-지프 코딩(Lempel-Ziv Coding) • 동일한 어구(phrase)가 반복적으로 나타나는 데이터의 성질 이용 • 처음 나타난 어구는 사전(dictionary)에 어구와 그 어구의 위치 정보를 등록하고 그대로 출력 • 반복해서 나타난 어구는 사전에 등록된 위치 정보로 치환하여 출력 • 미리 확률이나 통계를 필요로 하지 않음 • pkzip과 같은 파일 압축 프로그램에 이용됨.
압축 알고리즘 (계속) • 렘펠-지프-웰치(LZW: Lempel-Ziv-Welch) 코딩 • 어구들 사이의 상대적 위치를 이용 • UNIX의 compress에 이용 • GIF(Graphics Interchange Format)의 영상 압축 기법 예)
압축 알고리즘 (계속) • 변환 코딩(Transform Coding) • 적당한 변환을 통하여 데이터의 영역(domain)을 옮김 • 데이터를 구성하는 단위 정보의 개수를 줄이는 기법 • FFT(Fast Fourier Transform): 시간 영역 → 주파수 영역 • DCT(Discrete Cosine Transform): 공간 영역 → 주파수 영역 진폭 진폭 시간 주파수 (a)시간 영역에서 본 데이터 (b) 주파수 영역에서 본 데이터 사운드 데이터의 영역에 따른 표현
압축 알고리즘 (계속) • 빠른 푸리에 변환(FFT: Fast Fourier Transform) • CD-Audio의 인코딩에 이용 • 사운드 데이터를 시간 영역에서 주파수 영역으로 변환 • 시간 영역 내의 n개의 샘플링된 값들을 주파수 영역 내의 n개의 값들로 변환하는 경우, 변환된 데이터의 i번째 값은 ( Pk는 원래 데이터의 k번째 값)
( Pxy는 원래 데이터의(x, y)번째 값, Ci, Cj는 CiCj if (ij 0), 1 if (i 0 혹은j 0) ) 압축 알고리즘 (계속) • 이산 코사인 변환(DCT: Discrete Cosine Transform) • JPEG, MPEG, H.261 등의 표준 압축 기법에서 이용 • 정지 영상 데이터를 공간 영역에서 주파수 영역으로 변환 • 크기가 N x N인 단위 영상 데이터를 변환하는 경우, 변환된 데이터의 (i, j)번째 값은
압축 알고리즘 (계속) • DCT 변환의 예 • 8×8 픽셀로 이루어진 이미지 데이터 블록을 단위로 변환 DCT변환의 예
압축 알고리즘 (계속) • 예측 코딩(Predictive Coding) • 가정 : 정보의 흐름에 있어서, 다음에 나타날 정보는 바로 직전에 나타난 정보와 크게 다르지 않다 • 이전 정보와 차이 정보를 가지고 다음 정보를 생성 • 예측 코딩 기법의 예 • 차이 PCM(DPCM: Differential PCM) • 적응적 차이 PCM(ADPCM: Adaptive DPCM) • 델타 변조 방식(DM: Delta Modulation) • 적응적 DM(ADM : Adaptive DM)
오류 보정 정보 (실제 정보의 값 –예측값) 인코딩하려는 정보 실제 정보의 값과 예측값을 비교 예측값 다음 정보의 값을 예측 (기존 예측값 + 오류 보정 정보) 압축 알고리즘 (계속) • DPCM • 직전의 예측값을 이용하여 지금 인코딩하려는 정보를 예측 • 실제 정보의 값과 예측값 사이의 차이 정보를 생성 및 출력 • 데이터의 복원은 예측을 통해 이루어지며 예측에 의한 오류는 인코딩된 정보를 이용하여 보정됨 • 기울기 과부화(slope overload) 문제가 발생할 수 있음 DPCM을 이용한 인코딩
압축 알고리즘 (계속) • ADPCM • 출력되는 오류 보정 정보(차이 정보)의 크기가 출력 표현 한계를 넘어 서는 경우, 출력 정보의 스케일(scale)이 적응적으로 변화함 • DPCM의 기울기 과부하문제를 해결
압축 알고리즘 (계속) • DPCM과 ADPCM의 예 • 8비트 데이터를 5비트 오류 보정 정보로 생성하는 경우 원래 데이터 DPCM으로 인코딩하고 디코딩한 데이터 ADPCM으로 인코딩하고 디코딩한 데이터 x 4 x 4 x 4 x 4 x 4 x 2 x 2 : 스케일 변화 정보 (ADPCM) ADPCM코딩을 이용한 기울기 과부하의 해결
압축 알고리즘 (계속) • DM • 차이 정보를 표현하는데 오직 1 비트만을 이용 (+, -) • 차이 정보에 따라, 미리 정해진 차이 값을 더하거나 빼서 원래 정보를 복원 • 압축률은 매우 높지만, 원래 데이터를 완벽하게 복원할 수 없음 • ADM • 차이 정보의 순서에 따라 차이 값의 규모를 변화시킴 • p ⅹ q = 1, p > 1 (p, q는 실수) • (+, +), (-, -) : 차이 값의 규모를 키움 L ⅹ p • (+, -), (-, +) : 차이 값의 규모를 줄임 L ⅹ q • DM에 비해 원래 데이터와의 오차를 더 줄임 • 200kHz 이상의 샘플링 주기를 갖는 PCM에 의해 생성된 데이터에 사용
압축 알고리즘 (계속) • DM과 ADM의 예 • 8비트 데이터를 DM과 ADM으로 각각 인코딩하고 디코딩하는 경우 원래 데이터 DM으로 인코딩하고 디코딩한 데이터 ADM으로 인코딩하고 디코딩한 데이터 24 36 24 36 24 24 36 16 LADM = 차이 값의 변화 (p = 3/2, q = 2/3) 16 16 16 16 16 16 16 16 LDM = DM코딩과 ADM코딩의 비교
압축 알고리즘 (계속) • 양자화(Quantization) • 양자(quantum)라는 미리 정의된 정보를 이용하여 주어진 데이터를 코딩하는 방법 • 스칼라 양자화 (scalar quantization) • 어떤 스칼라 값을 양자(quantum)로 정하고, 데이터를 구성하는 값들을 양자의 개수로 치환 • 데이터의 중요도에 따라 크기가 다른 양자를 이용함으로써 덜 중요한 정보를 삭제하는 효과를 얻음 • 1 차원 변수를 기반으로 양자화하는 것 예)
압축 알고리즘 (계속) • 벡터 양자화 (vector quantization) • 하나의 값에 대해 둘 이상의 변수를 사용하여 양자화 • 코드북(codebook)에 미리 정의된 벡터 정보를 이용하여 데이터 내의 정보들을 코드북에 존재하는 정보의 색인으로 치환 • 인코딩 과정에서는 속도가 느리나, 디코딩 과정에서는 각 단위 정보마다 코드북을 한번만 참조하므로 속도가 비교적 빠름 • 코드북의 품질에 의해 영향을 받음 효율적인 코드북을 구성하는 것이 중요: 데이터의 특성을 바탕으로 구성됨
압축 알고리즘 (계속) • 스칼라 양자화와 벡터 양자화의 예 스칼라 양자화와 벡터 양자화의 비교
압축 알고리즘 (계속) • 웨이블릿 코딩(Wavelet-Based Coding) • 웨이블릿 변환(wavelet transform)을 사용하여 입력 신호 (signal)를 시간과 진동수 측면에서 양측 모두 좋은 신호로 분해하여 압축 성능을 높인 코딩 방법 • 이미지 압축에 주로 사용됨 • 이산 웨이블릿 변환(DWT: Discrete Wavelet Transform) • MPEG-4와 JPEG2000에 사용됨 • 2 개의 상호 보완적인(complementary) function 이용 • 웨이블릿(wavelet): 높은 주파수의 세부 이미지를 추출 • 스케일링 함수(scaling function): 높은 주파수를 제거
압축 알고리즘 (계속) • 2차원의 이미지의 경우, 수평과 수직 방향 모두에 2개의 함수 적용 4개의 서브이미지(subimage) 생성: HH, HL, LH, LL 웨이블릿 변환을 이용한 이미지의 분해 과정
압축 알고리즘 (계속) • 웨이블릿 계수(wavelet coefficient) • 세부 이미지의 표현의 정도와 제거된 세부 이미지를 결정 (c) 2 차원 DWT: (a)첫 번째 단계(level)의 변환(b)세 번째 단계의 변환 (c)레벨변환을 한 실제 이미지
DCT 변환 양자화 스캔 가변길이 인코딩 [ DCT 기반 압축] 웨이블릿 변환 양자화 스캔 가변길이 인코딩 [ 웨이블릿 기반 압축] 압축 알고리즘 (계속) • DCT 기반 압축과의 비교 • 웨이블릿 계수와 DCT 계수의 유사성 • 많은 값들이 0에 가까운 수로 치환됨, 나머지 값들은 정도에 따라 상대적으로 인지할만한 값으로 양자화 • 압축 시스템의 유사성 DCT기반 압축과 웨이블릿 기반 압축
압축 알고리즘 (계속) • 차이점: 웨이블릿 코딩의 장점 • 디코더가 복원 과정을 수행하는 중에 어느 시점에서든지 중지할 수 있음 (원래 이미지로의 완전한 해상도를 요구하지 않을 경우) • 낮은 픽셀 깊이(bitrate)에서 더 효율적임 • DCT에서 나타날 수 있는 블록화 현상(block artifact) 방지 • 일반적으로 다른 방식으로 이미지를 압축했을 때에 비해 훨씬 효율(화일 크기 및 전송 속도)이 높음 예) 비슷한 품질의 JPEG 이미지에 비해 화일 크기가 25 % 정도 • 차이점: 웨이블릿 코딩의 단점 • 더 많은 계산 능력을 필요로 함 • 거의 비슷한 압축률에 있어서 DCT 기반 압축보다 효율성이 떨어짐
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 압축 알고리즘 (계속) • 보간법 (Interpolation) • 연속된 비슷한 정보들 중 몇 개만을 저장 • 데이터의 복원 시에 보간을 통해 삭제된 정보를 복원 예) 원래 데이터 압축 복원(보간) 저장되는 데이터 인접한 픽셀들의 값이 유사한 경우에 대한 보간법의 적용
압축 알고리즘 (계속) • 프랙탈 압축(Fractal Compression) • 개념 • 어떤 데이터 I가 있다고 할 때 모든 종류의 데이터 A에 대하여 W*(A) = I인, 즉 수렴점이 I인 변환 W를 찾아내는 기법 • W*(A)는 변환 W의 무한 반복, 즉 W(W(W(…(W(A))))) • 반복작업으로 생성해낼 수 있는 시스템의 구성 정보로 치환함으로써 데이터를 인코딩 • 실험적으로 60:1 이상의 압축율 • 문제점 • 복원은 빠르나 인코딩 과정은 복잡하고 느림 • 모든 종류의 데이터에 대해 변환 W가 존재하는 지와, 구해진 변환 W의 수렴점이 원하는 데이터와 일치하는 지를 증명하기 곤란함
압축 알고리즘 (계속) 예) 지어핀스키(Sierpinski) 삼각형
이미지 압축 표준 • JPEG(Joint Photographic Experts Group) • Color & Grayscale 정지 영상의 압축 코딩의 표준 • ISO에서 1992년에 제정 • 주요 특징 • 압축률과 영상의 품질을 사용자가 지정할 수 있음 • 영상의 형태(내용,크기,해상도,화면비,색상모형)에 관계없이 적용 가능 • 소프트웨어적으로 구현 가능 • 하드웨어를 이용할 경우, 영상의 품질이 크게 향상됨
이미지 압축 표준 (계속) • 제공되는 부호화 방법 • 순차적 모드(Sequential DCT-based mode) • JPEG의 기본 인코딩 방법 • 이미지의 각 요소가 스캔되는 순서에 따라서 인코딩 • DCT 변환, 양자화, 허프만 코딩을 이용 • 점진적 모드(Progressive DCT-based mode) • 순차적 인코딩과 동일한 코딩 기법들을 이용 • 이미지가 여러 개의 스캔으로 인코딩됨 • 디코딩된 영상은 이미지의 윤곽부터 나타나고, 서서히 선명해짐
이미지 압축 표준 (계속) • 무손실 모드(Lossless mode) • 정보의 손실 없이 영상을 인코딩 • DCT와 양자화 대신, 픽셀 단위의 예측 기법을 이용 • 2 : 1 정도의 압축률을 얻음 • 계층적 모드(Hierarchical mode) • 다양한 환경에서 영상을 재생하거나 출력 가능 • 영상의 해상도를 높여 가면서 여러 번 인코딩 • 각 단계의 인코딩은 앞의 세 가지 중 어느 것이든 이용 가능 예) 높은 해상도의 영상을 낮은 화면 해상도의 모니터에 상영하거나 낮은 해상도의 프린터에 출력하고자 할 때 사용
이미지 압축 표준 (계속) • JPEG 인코딩(순차적 모드) 허프만 코드 테이블 8 x 8 블록들로 나눔 이미지 8 x 8 블록 DC-계수 DC 허프만 코딩 DPCM DCT 양자화 Zigzag 압축된 데이터 RLC AC 허프만 코딩 8 x 8 양자화 행렬 AC-계수 JPEG표준의 순차적 모드
이미지 압축 표준 (계속) • 이미지 준비 단계 • RGB 또는 YUV 등의 색상 모델을 이용하여 각 색상마다 평면(plane)으로 분리 • 각 평면을 8ⅹ8픽셀로 이루어진 블록(block)들로 분할 • 최소 코딩 단위(MCU: Minimum Coded Unit): 디코딩하는 단위 평면 3 평면 2 평면 1 A 원래 이미지 최소 코딩 단위 평면과 최소 코딩 단위
이미지 압축 표준 (계속) • DCT 변환 • DC-계수(DC-coefficient) • DCT 변환을 수행한 후 (0,0) 위치에 있는 값 • 블록의 기본 색상을 결정 • x, y 각 방향에 대해 모두 주파수가 0인 경우에 해당 • 앞/뒤 프레임의 DC-계수와 함께 DPCM으로 인코딩됨 • AC-계수(AC-coefficient) • DCT 변환을 수행한 결과에서 DC-계수를 제외한 나머지 • 블록 내에서 각 픽셀간의 색상 변화에 대한 정보를 나타냄 • x, y 어느 방향으로든 주파수가 0이 아닌 경우에 해당 • 프레임별로 Zig-Zag 형태로 나열됨
이미지 압축 표준 (계속) • DCT로 변환된 블록의 형태 주파수 커짐 x DC AC01 AC07 y 주파수 커짐 AC70 AC77 AC-계수의 Zig-Zag순서
이미지 압축 표준 (계속) • 양자화 (Quantization) • 높은 주파수의 AC-계수일수록 큰 값으로 나누어지므로 대부분 0으로 바뀜 예)
이미지 압축 표준 (계속) • JPEG2000 • 12 개의 파트로 이루어져 있음 (이 중 파트 7은 취소) • JPEG보다 더 나은 변형률(rate-distortion)을 제공하고 이미지 품질을 향상시킴 • 웨이블릿 코딩 사용 • DCT 기반 코딩도 JPEG과의 호환을 위해 지원
이미지 압축 표준 (계속) • JPEG의 약점 • 낮은 픽셀 깊이(0.25 bpp 이하) 압축에서 변형(distortion)이 심함 • 하나의 비트 스트림(bitstream) 상에서 무손실 및 손실 압축 제공 못함 • 사이즈가 매우 크거나 높은 정밀도를 가진 이미지들을 처리할 수 없음 • 낮은 전송률에서 높은 전송률에 이르는 점진적(progressive) 전송 • 하나의 복원 구조(single decompression architecture)가 없음 • 전송 에러 시 복원력이 매우 약함 • 관심 지역 코딩(ROI: Region-of-interest coding)을 지원하지 못함 • 특정 부분이 이미지의 나머지 부분보다 더 나은 품질로 코딩될 수 있음 • 컴퓨터 합성(computer-generated) 이미지나 혼합 문서에서는 좋은 성능이 나오지 않음
이미지 압축 표준 (계속) • JPEG2000의 인코딩 과정 JPEG2000의 인코딩 과정