Transcript 손실 부호화
손실 부호화 (lossy coding) 절단 부호화(truncation coding) I 공간 해상도를 줄이는 방법 : 다운샘플링(down-sampling) 영상 복원 : 선형 인터폴레이션(linear interpolation) 원영상 2 다운샘플링 영상 인터폴레이션 영상 절단 부호화(truncation coding) II 밝기 해상도를 줄이는 방법 : 화소 값을 표현하는데 사용되는 비트 중 중요한 정보를 가지고 있는 상위 비트는 그대로 두고, 하위 비트만을 제거 영상 복원 : 없어진 비트를 잡음 패턴으로 채움 제거 3 절단 부호화(truncation coding) III 원영상 f1 잡음을 채워 복원한 영상 원영상과 4 bit 영상 f2 4 복원한 영상과의 차영상 ( f1 f 2 ) 5 양자화(quantization) 시각 시스템의 특징 이용 화질 저하를 느끼지 못하는 범위내에서 스칼라 양자화(scalar quantization) 벡터 양자화(vector quantization) Q x ai x au d 0 d1 d 2 r1 r2 양자화기 Q(x) rk if dk1 x dk k 1,2,3,, L d k 1 d k d L1 d L rk rL Quantizer output range 5 균일 양자화 양자화 간격이 일정 r r32.5 eq = r -x 0.5 1.5 r2 r1 0.5 x 1 d1 2 d2 3 -0.5 d3 균일 양자화 6 x 균일 양자화의 양자화 잡음 비균일 양자화 I 양자화 간격 가변 - 값들이 많이 몰려있는 부분에서 촘촘히 양자화 r r3 r2 r1 x 1 7 d1 2 d2 3 d3 비균일 양자화 II Lloyd-Max 양자화 - MSE가 최소가 되는 rk , d k 계산 L di i 1 d i 1 E[e ] E[( r X ) ] (r x) P( x)dx (ri x) 2 P( x)dx 2 2 q 2 0 rk 2 dk rk d k 1 dk d k 1 2 0 d k 8 2 xP( x)dx P( x)dx rk rk 1 dk 2 ,1 k L Lloyd-Max 양자화 예 2 x, 0 x 1 P( x) 0, otherwise 1. Initial guess : r1=0.4, r2=0.6 r r d1 1 2 0.5, 2 0.5 r1 0 0 2 0 1 0.5 1 0.3333, 2 xdx 0.55 2 0 2 2 x dx 0.5 0.5 (0.4 x) 2 xdx (0.6 x) 2 2 xdx 0.0433 2 r2 0.5 1 2 x 2 dx 0.5 2 xdx 1 (0.33 x) 2 xdx 2 0.7777, 0.55 d1 0.55 (0.77 x) 2 2 xdx 0.0156 2. 두 번째 반복하면 r1 0.37, 9 r2 0.8, d1 0.585, 2 0.0163 MSE가 증가했으므로 첫번째 반복결과를 취한다. 벡터 양자화 I Pattern Matching : 일치되는 것이 없으면 가장 가까운 값 선택 Codebook의 index로 압축, 복원 벡터 양자화의 예) 10 키(cm) 몸무게(kg) 183 82 183 79 165 54 112 19 키(cm) 몸무게(kg) 150 54 114 23 157 52 114 53 163 68 152 50 191 53 165 73 203 82 142 41 145 40 178 78 초기 중심점(centroid) 설정 벡터 양자화 II 두 번째 단계 – 평균에 의한 중심점 재계산 첫 번째 단계 (112, 19), (147, 46), (161, 53), (174, 76) MSE = 348 11 90 90 80 80 70 70 60 60 몸무게(kg) 몸무게(kg) MSE = 89 50 40 50 40 30 30 20 20 10 100 10 100 120 140 160 키(cm) 180 200 120 140 160 키(cm) 180 벡터 양자화 III 마지막 단계 - 중심점 재계산 (112, 19), (143, 40), (156, 52), (174, 76) MSE = 72 90 80 몸무게(kg) 70 60 50 40 30 20 10 100 12 120 140 160 키(cm) 180 손실 예측 부호화(lossy predictive coding) I 무손실 예측 부호화에 양자화를 도입 예측 에러를 양자화 양자화에 따라 압축률이 결정 입력 영상 부호기 + fn en fn Predictor 복호기 en Quantizer 압축 영상 Symbol decoder + fn 13 fn en fˆn + en + 압축 영상 + fn Symbol encoder fn Predictor 복원 영상 손실 예측 부호화 II At receiver : fn en fˆn E en2 E f ˆ n fn 2 subject to the constraint that fn en fˆn Qen fˆn en fˆn f n , Optimal predictor design 2 m E e E f n i f n i i 1 2 n m fˆn i f n i E e 2 0 i i 1 α R 1r where E f n 1 f n 1 E f n 1 f n 2 E f n 1 f n m E f f E f f E f f n 2 n 1 n2 n2 n2 nm R E f f E f f E f f n m n 1 nm n2 nm nm 14 E f n f n 1 E f f r n n2 E f f n nm 1 α 2 3 손실 예측 부호화 III – Simple image model 실제로 R과 r을 만들기 위해 자기 상관도를 계산하는 것은 매우 어렵기 때문에 단순한 영상 모델을 가정하고 α를 구한다 2-D Markov source with seperable autocorrelation function E f ( x, y ) f ( x i, y j ) 2 vi hj Fourth-order linear predictor fˆ x, y 1 f x, y 1 2 f x 1, y 1 3 f x 1, y 4 f x 1, y 1 The resulting optimal coefficients are 1 h 2 v h 3 v 4 0 Where ρh : the horizontal correlation coefficients ρv : the horizontal correlation coefficients 15 손실 예측 부호화 IV – DM(Delta Modulation) I 손실 예측 부호화의 가장 간단한 형태 양자화기의 출력이 단일 비트로 표현 전송률을 낮출 수 있으나, slope overload 나 granual noise에 의한 화질 저하가 생김 fn fn1 e +6.5 Code = 1 foren 0 en otherwise 원영상 복호결과 e -6.5 Code = 0 16 Granual noise 부호 과부하 상태 손실 예측 부호화 V – DM(Delta Modulation) II Input 17 Encoder Decoder f Error f f f - 14.0 0.0 20.5 14.0 20.5 -5.5 -6.5 14.0 20.5 14.0 0.0 1.0 6.5 20.5 14.0 20.5 -5.5 • • • • • • • • • • • • • • • 14 29 20.5 8.5 6.5 27.0 20.5 27.0 2.0 15 37 27.0 10.0 6.5 33.5 27.0 33.5 3.5 16 47 33.5 13.5 6.5 40.0 33.5 40.0 7.0 17 62 40.0 22.0 6.5 46.5 40.0 46.5 15.5 18 75 46.5 28.5 6.5 53.0 46.5 53.0 22.0 19 77 53.0 24.0 6.5 59.6 53.0 59.6 17.5 • • • • • • • • • • • • • • • • • • n f 0 14 - - - 14.0 1 15 14.0 1.0 6.5 2 14 20.5 -6.5 3 15 14.0 • • • f e e f 변환 부호화(Transform coding) 구현의 용이성 등을 고려할 때 DCT가 가장 적합 : 고주파 성분은 양자화기에서 압축 부영상으로 나눠서 처리 : 8x8, 16x16 가장 적합 Input image (N X N) Construct nxn subimages Forward transform Quantizer Symbol Encoder Compressed image (a) 부호기 Compressed image Symbol Decoder Inverse quantizer Inverse transform (b) 복호기 18 reconstruct nxn subimages Deompressed image 비트 할당(bit allocation) 각 변환 계수를 부호화하는데 사용되는 비트들의 숫자, 혹은 하나의 영상을 부호화하는데 필요한 전체 비트를 결정 저주파 성분에 더 많은 비트를 할당 양자화는 비트 할당(bit allocation)에 의해 일부 수행 비트 할당 마스크 19 8 7 6 4 3 2 1 0 7 6 5 4 3 2 1 0 6 5 4 3 3 1 1 0 4 4 3 3 2 1 0 0 3 3 3 2 1 1 0 0 2 2 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 구역 부호화(zonal 부호화)와 문턱치 부호화(threshold coding) 변환 부호화 방식 구역 부호화 : 최대 분산에 기초하여 변환 계수를 선택 문턱치 부호화 : 문턱치(threshold value) 이상의 변환 계수를 선택 구역 부호화 f T(u, v) e blocks d c b a 같은 주파수를 갖는 변환 계수들의 분산을 각각 계산 20 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0구역0마스크(zonal 0 0 0 mask)를 0 0 결정 0 1 : 변환 계수 유지, 0 : 변환 계수 제거 JPEG (Joint Photographic Expert Group) ADCT(Adaptive Discrete Cosine Transformation)에 기반 Quantization Tables 8 8 블록으로 분할 Coding Tables Header Tables DCT Quantizser Entropy Coder Data 인코딩 블록 다이어그램 21 DCT와 양자화의 예 80 78 76 71 82 90 88 83 84 80 81 75 85 91 88 82 84 80 84 74 88 99 93 80 86 80 88 77 90 95 95 77 90 84 82 76 91 90 99 73 90 90 89 84 84 88 80 77 77 76 80 80 91 90 90 88 84 84 100 100 100 70 66 66 674 -10 -1 41 -23 11 -11 19 -5 -13 4 -9 2 -11 20 -7 원영상 42 0 -1 -1 -1 0 0 0 0 3 -1 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4 0 -1 0 0 0 0 -2 -3 -1 4 0 -2 1 1 1 -1 0 2 2 2 -1 -1 -3 0 1 0 1 -2 0 -4 -1 2 1 -1 1 0 0 0 -1 16 12 14 14 18 24 49 72 11 12 13 17 22 36 64 92 DCT 변환 영상 0 0 0 0 0 0 0 0 양자화한 영상 22 -10 1 3 -2 4 -1 -6 -5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 672 -12 0 42 -18 0 0 0 0 -12 0 -17 0 0 0 0 -10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 역양자화 0 0 0 0 0 0 0 0 10 14 16 22 37 55 78 95 16 19 24 29 56 64 87 98 24 40 51 61 26 58 60 66 40 57 69 57 51 87 80 62 68 109 103 77 81 104 113 92 103 121 120 101 112 100 103 99 양자화 테이블 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 78 80 79 77 83 91 89 82 80 81 79 78 84 92 90 82 83 83 80 79 86 94 91 82 86 84 80 79 88 96 91 81 89 85 79 78 88 97 91 78 90 85 77 77 88 97 89 75 역 DCT 영상 91 84 75 75 87 96 87 72 91 83 74 74 86 96 86 70 엔트로피 코딩 DC 계수와 AC 계수로 나누어서 코딩 DC Block i 1 - Size Table DC 43 size DC Huffman Table + amplitude DC codework DC amplitude calculation value Blocki Size 0 0 0 . . . AC 18 value size Run-length Coder Size Table AC Huffman Table Size amplitude AC codework run 23 AC amplitude calculation DC 계수의 엔트로피 코딩 DCi-1 : 40, DCi : 43 Size(bit 수) Amplitude 0 0 Size = 2 1 -1, 1 Amplitude = 11 2 -3, -2, 2, 3 3 -7∼-4, 4∼7 4 -15∼-8, 8∼15 5 -31∼-16, 16∼31 6 -63∼-32, 32∼63 011(size) : 11(amplitude) 7 -127∼-64, 64∼127 = 01111 8 -255∼-128, 128∼255 DCi - DCi-1 = 43 – 40 = 3 If) size ‘2’에 해당하는 허프만 부호를 ‘011’로 가정하면, 최종적인 부호값은 24 AC 계수의 엔트로피 코딩 여섯 개의 0과 18이라는 값을 차례로 갖는다고 가정 Run : 6 18 의 size : 5 18의 amplitude : 10010 (6/5, 10010) (6/5)의 허프만 코딩값이 1101이라고 가정 최종적인 부호화 값은 110110010 25 40 43 0 0 0 0 0 18 0 JPEG의 모드 – 순차적 DCT 기반의 동작 모드 영상의 8 8 블록 단위로 DCT 변환, 양자화, 엔트로피 코딩 입력된 영상을 순차적으로 코딩하고 전송하는 특징 때문에 압축된 이미지를 전송 받음과 동시에 압축된 데이터를 전부 입력 받지 않더라도 복원과정을 수행 26 JPEG의 모드 – 점진적 DCT 기반의 동작 모드 양자화기와 엔트로피 부호화기 사이에 메모리 버퍼를 넣고, 양자화된 DCT 계수들을 이 메모리 버퍼에 저장한 다음, 여러 가지 스캔 방법을 이용하여 부호화 an sc zero frequency 1 an sc 2 an sc 3 an sc 4 scan 3 scan 2 scan 1 LSB highest frequency 선택적 주파수 스캔 (spectral selection) 27 MSB 연속 근사 (successive approximation) JPEG의 모드 – 계층적 부호화 모드 원영상을 다운샘플링(down-sampling)을 통하여 여러 해상도의 프레임으로 구성하여 부호화 여러 가지 해상도를 요구하는 경우에 적합 JPEG encoder 4 JPEG decoder Encode Decode Decode 2 2 + 2 + Encode Decode Decode + 2 + 2 Encoder 28 + + Encode Decode + Decoder 동영상 압축 공간 여분(spatial redundancy) : 이웃하는 화소들끼리 값이 비슷 시간 여분(temporal redundancy) : 이웃하는 프레임들의 대응하는 화소들끼리 값이 비슷 공간 여분과 시간 여분을 최대한 이용하여 압축 29 프레임간 부호화 프레임내 부호화 (interframe coding) (intraframe coding) 시간 여분 감소 처리 공간 여분 감소 처리 Motion estimation & compensation I 이전 프레임 f(t-1) f(t) - f(t-1) 현재 프레임 f(t) 움직임 보상 프레임 f’(t-1) 30 f(t) - f’(t-1) Motion estimation & compensation II I(x,y,t-1) I(x,y,t) Motion Estimation Motion Compensation DCT Coding e(x,y,t) = I(x,y,t) - I(x-u,y-v,t-1) Generic Encoder Generic Decoder DCT Decoding + e(x,y,t) + I(x,y,t) Frame Memory 31 Motion Compensation (u,v) Motion estimation & compensation III Reference Picture Current Picture (x,y) -p N N M M -p Macroblock Reference Picture Search region (x,y) [-p, p] Search region p v Motion vector (u,v) -p N u M (x+u,y+v) Best Match 32 p -p p p Algorithms for motion estimation – full search 현재 영상의 매크로 블록 화소들을 C 참조 ( x 영상의 k, y l) , R( x i k , y j l ) 화소들을 1 MAD (i, j ) M2 M 1 M 1 이라 할 때 C ( x k , y l ) R( x i k , y j l) k 0 l 0 를 최소화시키는 블록 R( x i, y j ) 를 찾음 Full-search 기법 : N x N블록을 갖는 영상에서, [-P,-P]검색 공간의 모든 점에서 MAD(I,j)계산: MAD Point수: N 2 2 p 12 33 Two-dimensional logarithmic search (0, -7) (-7, -7) I×J의 해상도를 가지고 1초당 F개의 1 (7, -7) 1 1 1 1 프레임을 가지는 연속적인 영상의 경우에는 계산량 : I×J×F×(8k + 1)×3, 2 2 2 2 1 2 k = log2p 2 3 3 3 3 2 3 3 3 3 1 (7, 0) 2 1 1 d1 (-7, 7) 34 (7, 7) MPEG - 1,2 MPEG-1 - 오디오/비디오 압축방법, 다중화 시스템 등을 정의 - VHS용 화질과 스테레오 음성에서 요구되는 약 1.5 Mbps의 부호화 기능을 제공 - 비디오와 오디오를 CD-ROM에 저장하는 CD-I(Interactive)와 Video CD 시스템에 사용 MPEG-2 - 방송용 고화질 부호화를 위한 요구에서 출발 - 비트율(bit rate)이 보통 TV에 필요한 3∼15 Mbps로부터 고화질 TV에 필요한 15∼30 Mbps까지 지원 - MPEG-2는 MPEG-1의 비트열(bitstream)도 복호화 가능 35 MPEG 비디오 데이터의 생성 – 부호기/복호 기 Video Input DCT Quantization VLC Buffer Output Inverse Quantization Inverse DCT 부호기 Motion Vector ME/MC Input Buffer 복호기 VLC Decoder Inverse Quantization Quantization level Motion vector 36 Motion Compensation Inverse DCT Output MPEG 비디오 데이터의 구성 프레임(또는 필드 단위) 를 적당한 크기의 GOP(Group of Picture) 구조로 묶어서 처리 프레임 메모리를 두 장 사용해서 과거의 재생 화상으로부터의 순방향 예측과 미래의 재생 화상으로부터의 역방향 예측을 사용하는 양방항 예측 GOP = (N,M) N = 12 I : Intra-coded picture M =3 P : Predictive-coded picture B : Bidirectionally I B 37 B P B B P B B P B B I predictive-coded picture MPEG 비디오 데이터의 계층 구조 Sequence Layer Sequence Header GOP Layer GOP Header Picture Picture Picture Picture Picture Picture Layer Picture Header Slice Slice Slice Slice Slice Slice Layer Slice Header MacroBlock MacroBlock MacroBlock MacroBlock MacroBlock Macroblock Layer GOP Macroblock information Y1 Y2 Y3 macroblock_address_increment Y4 quantizer_scale_code motion_vector coded_block_pattern 38 Sequence End GOP Cr Cb DC Coeff. Ac Coeff. End_of_block