Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
ISBN 89-5884-329-2 98560
웨이블릿: 기본 개념 및 데이터 압축에의 응용
허 영 주 (Young Joo Hur)
Visualization Team, Supercomputing Center
한 국 과 학 기 술 정 보 연 구 원
Korea Institute of Science & Technology Information
제목 차례
I. 머리말 ························································································································ 1
II. 웨이블릿이란? ········································································································· 2
1. 정의 ················································································································································ 2
2. 특징 ················································································································································ 2
III. Haar 기저 함수 ····································································································· 4
1. Haar 웨이블릿 변환을 위한 기본 정의 ················································································· 4
가. 개요 ······································································································································ 4
나. 벡터 스페이스 ···················································································································· 5
다. 기저함수(Basis function) ······························································································· 5
라. 내적 연산 정의 ·················································································································· 6
2. Haar 웨이블릿 ····························································································································· 7
가. 웨이블릿 ······························································································································ 7
나. Haar 웨이블릿 ··················································································································· 7
다. 웨이블릿의 특성 ················································································································ 9
라. Pseudo code ··················································································································· 10
IV. 웨이블릿 변환의 확장 ······················································································· 12
1. 2차원 변환 ································································································································· 12
가. 표준 변환 (Standard Decomposition) ······································································ 12
나. 비표준 변환 ······················································································································ 13
다. 2차원 변환에 대한 Haar 기저함수 ············································································ 15
라. 정규 변환과 비정규 변환의 비교 ················································································ 18
2. 3차원 변환 ································································································································· 18
V. 웨이블릿과 곡선 ·································································································· 20
1. Subdivision ······························································································································· 20
가. Recursive Subdivision ································································································· 20
나. Subdivision 과정 ············································································································ 22
다. Uniform Subdivision의 예 ·························································································· 22
라. Non-uniform Subdivision ··························································································· 24
마. 중첩 스페이스와 세분화가 가능한 스케일링 함수 ·················································· 24
2. 다해상도 분석 (Multi-resolution Analysis) ····································································· 27
가. 사전 정의 ·························································································································· 27
나. 세분화(Refinement) ······································································································· 27
다. 필터 뱅크(Filter Bank) ································································································· 29
3. 웨이블릿의 종류 ······················································································································· 31
가. Orthogonal 웨이블릿 ····································································································· 31
나. Semi-orthogonal 웨이블릿 ························································································· 32
다. Bi-orthogonal 웨이블릿 ······························································································· 33
VI. Daubechies D4 변환 ························································································ 34
VII. 웨이블릿을 이용한 데이터 압축 ···································································· 38
1. 2D 이미지 압축 ························································································································ 38
2. 3D 데이터 압축 ························································································································ 41
VIII. 결론 ···················································································································· 42
그림 차례
그림 II-1. 웨이블릿의 데이터 표현 방식 ··························································································· 2
그림 III-1. Haar 웨이블릿 함수의 1차원 변환 ················································································ 4
그림 III-2. V2에 대한 박스 함수 ······································································································ 6
그림 III-3. W 1의 Haar 웨이블릿 ······································································································· 8
그림 III-4. [9, 7, 3, 5]의 V2 기저함수 표현 ················································································· 8
그림 III-5. V 1과 W 1으로 표현한 V 2의 벡터 ··············································································· 9
그림 III-6. V 0와 W 0, W 1으로 압축된 V 2 스페이스 벡터 ····················································· 9
그림 IV-1. 이미지에 대한 2차원 표준 변환 ················································································ 13
그림 IV-2. 이미지에 대한 2차원 비표준 변환 ············································································ 14
그림 IV-3. V 2에 대한 2차원 Haar 표준 기저함수 ····································································· 15
그림 IV-4. V 2에 대한 2차원 Haar 비표준 기저함수 ································································· 17
그림 IV-5. 비정규 변환/복원의 적용 ······························································································· 17
그림 IV-6. 3차원 웨이블릿 변환 ······································································································ 18
그림 V-1. Chaikin의 알고리즘 ·········································································································· 20
그림 V-2. Chaikin의 알고리즘의 적용: ·························································································· 23
그림 V-3. 박스 함수의 세분화 ·········································································································· 25
그림 V-4. 필터 뱅크 ·························································································································· 30
그림 V-5. Daubechies 기저 함수: (a) D4 스케일링 함수 (b) D4 웨이블릿 ······················· 32
그림 VII-1. 10% 계수로 복원한 이미지 (좌)Haar 기저함수 (우)D4 기저함수 ···················· 39
그림 VII-2. 7% 계수로 복원한 이미지 (좌)Haar 기저함수 (우)D4 기저함수 ······················· 40
그림 VII-3. 5% 계수로 복원한 이미지 (좌)Haar 기저함수 (우)D4 기저함수 ······················· 40
그림 VII-4. 3% 계수로 복원한 이미지 (좌)Haar 기저함수 (우)D4 기저함수 ······················· 40
그림 VII-5. D4 기저함수를 이용해서 압축한 데이터 ·································································· 41
수식 차례
수식 III-1. Haar 기저함수 정의 ·········································································································· 6
수식 III-2. 표준 내적의 정의 ··············································································································· 6
수식 III-3. Haar 웨이블릿 함수 ·········································································································· 7
수식 III-4. 기저 함수의 정규화 ········································································································· 10
수식 IV-1. 2차원 기저함수 ················································································································ 16
수식 IV-2. 2차원 표준 Haar 기저함수 ··························································································· 16
수식 V-1. Chaikin의 알고리즘 ·········································································································· 21
수식 V-2. Splitting과 Averaging ···································································································· 22
수식 V-3. n+1차원의 B-spline을 생성하는 averaging mask ·············································· 23
수식 V-4. Non-uniform subdivision ····························································································· 24
수식 V-5. Non-uniform subdivision ····························································································· 24
수식 V-6. Non-uniform subdivision의 예 ··················································································· 24
수식 V-7. 벡터 스페이스 ·················································································································· 25
수식 V-8. 박스 함수의 세분화 ·········································································································· 25
수식 V-9. 최종 함수(limit function)의 정의 ················································································· 26
수식 V-10. 최종 함수(limit function)의 정의 ··············································································· 26
수식 V-11. 행렬 표현 ························································································································· 26
수식 V-12. 스케일 함수의 세분화 ··································································································· 26
수식 V-13. V j의 스케일링 함수 ······································································································ 27
수식 V-14. Wj의 웨이블릿 함수 ····································································································· 27
수식 V-15. 세분화 ······························································································································· 28
수식 V-16. Haar의 세분화 행렬 ······································································································ 28
수식 V-17. 세분화 정의 ····················································································································· 28
수식 V-18. V j의 계수 ························································································································ 29
수식 V-19. c j− 1의 계산 ···················································································································· 29
수식 V-19. d j− 1의 계산 ···················································································································· 29
수식 V-20. c j− 1 생성 ························································································································ 30
수식 V-21. Haar 기저함수에 대한 A2와 B2 ················································································ 30
수식 V-22. 필터 뱅크 ························································································································· 30
수식 V-23. Orthogonal 웨이블릿 ···································································································· 31
수식 V-24. Orthogonal 웨이블릿의 특성 ······················································································ 32
수식 V-25. Semi-orthogonal 웨이블릿 ························································································· 33
수식 V-26. Dual 웨이블릿 함수의 정의 ························································································· 33
수식 V-27. Bi-orthogonal 웨이블릿 함수의 정의 ······································································ 33
수식 VI-1. D4 필터의 계수 ··············································································································· 34
수식 VI-2. 웨이블릿 변환 ·················································································································· 34
수식 VI-3. 웨이블릿 복원 ·················································································································· 35
수식 VII-1. 데이터 압축 ····················································································································· 38
소스 차례
소스 III-1. 정규화된 웨이블릿 변환 ································································································· 10
소스 III-2. 정규화된 웨이블릿 복원 ································································································· 11
소스 IV-1. 2차원 표준 변환과 복원 ································································································ 12
소스 IV-2. 2차원 비표준 변환 및 복원 과정 ················································································ 15
소스 VI-1. 웨이블릿 변환 ·················································································································· 36
소스 VI-2. 웨이블릿 복원 ·················································································································· 37
소스 VII-1. 웨이블릿 변환 과정 ······································································································· 39
- 1 -
- 2 -
- 3 -
- 4 -
- 5 -
[0, 1 )
V 0 [0, 1 )
V 1 [0, 1/2), [1/2, 1)
V j [0, 1 ) 2j
[0, 1 ) V 0
[0, 1/2 ) [1/2, 1 )
V 1 2j
V j
- 6 -
V j Φ
V j
φji (x) := φ (2jx − i ) i = 0, 1, , 2j − 1
where φ (x ) :=
1 for 0 x< 10 otherwise
< u│v> = < v│u >
< au + bv│w > = a< u│w > + b < v│w >
< u│u > > 0, ∀u ≠ 0
< u│v> = 0
< f│g> = 0
1
f (x )g(x )dx
- 7 -
V j
W j W j V j + 1 V j
W j V j
V j + 1
W j
Ψji (x)
W j Ψji V j Φj
i V j + 1
W j Ψji V j
Φji
Ψ ji (x ) := ψ (2 j − i ) i = 0 , 1 , , 2 j − 1
w h er e ψ (x ) :=
1− 1
0
fo r 0 x < 1 / 2fo r 1 / 2 x < 1
o th e r w is e
- 8 -
W 1
V 2
[0, 1 ) V 2
V 2
- 9 -
V 1
V 0 W 0
V 0 W 0 W 1 V 2
V 1 W 1 V 2
- 10 -
φ00
ψ00 ψ1
0 ψ11
u (x) < u│u > = 1
φji(x) :=
√2φ (2jx − i)
ψji(x) :=
√2ψ (2jx − i)
(√
2 )j
procedure Decomposition(c:array[1..2j] of reals) c<- c/2j^(1/2) (normalize input coefficients) g<- 2j
while g≥2 do DecompositionStep(c[1..g]) g<- g/2 end whileend procedure
procedure DecompositionStep(c:array[1..2j] of reals) for i<-1 to 2j/2 do c'[i]<-(c[2i-1]+c[2i])/2^(1/2) c'[2j/2+i]<-(c[2i-1]-c[2i])/2^(1/2) end for c<-c'end procedure
- 11 -
procedure Reconstruction(c:array[1..2j] of reals) g<- 2 while g≤2j do ReconstructionStep(c[1..g]) g<- 2g end while c<-c*2j^(1/2)end procedure
procedure ReconstructionStep(c:array[1..2j] of reals) for i<-1 to 2j/2 do c'[2i-1]<-(c[i]+c[2j/2+i])/2^(1/2) c'[2i]<-(c[i]-c[2j/2+i])/2^(1/2) end for c<-c'end procedure
- 12 -
procedure StandardDecomposition(c:array[1..2j,1..2k] of reals) for row <- 1 to 2j do Decomposition(c[row, 1..2k]) end for for col <- 1 to 2k do Decomposition(c[1..2j,col]) end forend procedure
procedure StandardReconstruction(c:array[1..2j,1..2k] of reals) for col <- 1 to 2k do Reconstruction(c[1..2j,col]) end for for row <- 1 to 2j do Reconstruction(c[row, 1..2k]) end forend procedure
- 13 -
- 14 -
procedure NonStandardDecomposition(c:array[1..2j,1..2j] of reals) c <- c/2j (normalize input coefficients) g <- 2j
while g≥2 do for row <- 1 to g do DecompositionStep(c[row, 1..g]) end for for col <- 1 to g do DecompositionStep(c[1..g,col]) end for g <- g/2 end whileend procedure
- 15 -
procedure NonStandardReconstruction(c:array[1..2j,1..2j] of reals) g <- 2 while g≤2j do for col <- 1 to g do ReconstructionStep(c[1..g,col]) end for for row <- 1 to g do ReconstructionStep(c[row, 1..g]) end for g <- 2g end whileend procedure
V 2
V 2
- 16 -
V 2
φφ (x, y ) := φ (x )φ (y )φψ (x, y ) := φ (x )ψ (y )ψφ (x, y ) := ψ (x )φ (y )ψψ (x, y ) := ψ (x )ψ (y )
φφjkl (x, y ) := 2jφφ (2jx − k, 2jy − l)
φψjkl (x, y ) := 2jφψ(2jx − k, 2jy − l)
ψφjkl (x, y ) := 2jψφ (2jx − k, 2jy − l)
ψψjkl (x, y ) := 2jψψ(2jx − k, 2jy − l)
2j
V 2
- 17 -
V 2
- 18 -
16 16 16
- 19 -
LLL2
- 20 -
f 0 (x) f 1 (x), f 2 (x),
f (x)
f 0 (x ) f 1 (x )
- 21 -
f 2 (x ) f (x )
f j
i2j
= Σk
rkfj− 1
i + k2j
f 0 (x )
f j (x ) i/2j
r = ( , r− 1, r0, r1, )
r = (r0, r 1 ) = 12
(1, 1 )
r i
- 22 -
r j
f j (x ) ( , c − 1j , c 0
j , c1
j , )
f j (x ) c ji = f j
i2 j
f j (x ) f j − 1
Splitting : c j2 i := c j − 1
i
c j2i + 1 :=
12
(c j − 1i + c j − 1
i + 1 )
Averaging : c ji = Σ
k
rkcj
i + k
- 23 -
12n
n0 ,
n1
, ,
nn
- 24 -
c ji = Σ
k
r ji,kc
ji + k
c ji = R jc j
R j = 14
41 2 1
1 2 1
1 2 14
V V 0 ⊂ V 1 ⊂ V 2 ⊂
V
- 25 -
V j
V j = span φj0 (x), φ j
1(x), , φj2j − 1 (x)
Φj0 (x), , Φj
2j −1(x) V j
φj− 1i (x) = 1 φj
2i (x ) + 1 φ j2i + 1 (x)
c 0j
- 26 -
f (x) = Σi
c 0i φ
0i (x)
= = Σi
c j− 1i φj − 1
i (x ) = Σi
c ji φ
ji(x) =
f (x) = = Φj− 1 (x)c j− 1 = Φj (x)c j =
Φj (x) = ( )φj0 (x ),φj
1 (x),
c j − 11 c j
P
c j = P jc j − 1
P j R j
Φj − 1 (x )c j − 1 = Φj (x )c j
Φj − 1 (x )c j − 1 = Φj (x )P jc j − 1
∴ Φ j − 1 (x ) = Φj (x )P j
- 27 -
V j
V j
Φj (x) := [ ]φj0 (x ), , φj
v (j) − 1 (x)
W j
W j
Ψj (x) := [ ]ψj0 (x ), , ψj
w (j) − 1 (x)
- 28 -
W j V j
v (j + 1 ) = v (j ) + w (j ) V j
P j
Φj − 1 (x) = Φj (x)P j
Ψj − 1 (x) = ψj (x)Q j
j
v(j ) = 2j w (j ) = 2j
V 1 W 1
V 2
V 2
Φ1 (x ) = Φ2 (x)P 2
Ψ2 (x ) = Ψ2 (x )Q 2
P 2 =
1 01 00 10 1
Q 2 =
1 0− 1 00 10 − 1
[Φj − 1|Ψj − 1 ] = Φj [P j|Q j ]
- 29 -
V j
V j
c j = [ c j0 c j
v (j) − 1 ]T
c j c j
c j− 1
c j − 1 = Ajc j
Aj v(j − 1 ) v(j )
Bj
d j− 1
d j − 1 = Bjc j
Bj w (j − 1 ) v (j ) Aj Bj
c j
c j− 1 d j − 1 Aj Bj
c j− 1 d j − 1 c j
- 30 -
P j Q j
c j− 1
c j = P jc j − 1 + Q jd j − 1
A2 B2
A2 B2
A2 = 12
1 1 0 00 0 1 1
B2 = 12
1 − 1 0 00 0 1 − 1
c j, d 0, d 1 d j − 1
(c j, d 0, d 1 d j − 1 ) c j
[Φj − 1|ψj − 1 ]Aj
Bj = Φj
Aj
Bj = [P j | Q j ]− 1
- 31 -
Aj Bj P j Q j
Q j
[< Φ j|Φj > ] = I
[< Ψ j|Ψj > ] = I
[< Φ j|Ψj > ] = 0
- 32 -
[P j|Q j ]T = [P j |Q j ]− 1 = A j
B j
Aj = (P j )T B j = (Q j )T
- 33 -
[< Φ j|Ψj> ] = 0
[< Φ jP j|Ψ jQ j >] = 0
∴ (P j )T[< Φj|Ψj> ]Q j = 0
Q j
[P j|Q j ]
Aj Bj
[< Φ j|Φ j̃ > ] = I [< Ψj|Ψ j̃ > ] = I
[< Φ j|Φ j̃ > ] = I [< Ψ j|Ψ j̃ >] = I
[< Φ j|Ψ j̃ > ] = 0 [< Ψ j|Φ j̃ >] = 0
[P j|Q j ] is invertible
- 34 -
(h0, h1, h2, h3 ) =
1 +√
3
4√
2,
3 +√
3
4√
2,
3−√
3
4√
2,
1−√
3
4√
2
(g0, g1, g2, g3 ) =
1 −√
3
4√
2,− 3 +
√3
4√
2,
3 +√
3
4√
2, − 1 −
√3
4√
2
h0 h1 h2 h3 0 0 0 0g0 g1 g2 g3 0 0 0 00 0 h0 h1 h2 h3 0 00 0 g0 g1 g2 g3 0 00 0 0 0 h0 h1 h2 h3
0 0 0 0 g0 g1 g2 g3
0 0 0 0 0 0 h0 h1 h2 h3
0 0 0 0 0 0 g0 g1 g2 g3
s0
s1
s2
s3
s4
s5
s6
s7
- 35 -
h2 g2 h0 g0 0 0 0 0 0 0h3 g3 g1 g1 0 0 0 0 0 0
h2 g2 h0 g0 0 0 0 0h3 g3 h1 g1 0 0 0 00 0 h2 g2 h0 g0 0 00 0 h3 g3 h1 g1 0 00 0 0 0 h2 g2 h0 g0
0 0 0 0 h3 g3 h1 g1
ai
ci
ai + 1
ci + 1
ai + 2
ci + 2
ai + 3
ci + 3
a c
- 36 -
protected void transform(double a[], int n){ if (n>=4) { int i, j; int half = n >> 1;
double tmp[] = new double[n]; i = 0; for (j = 0; j<n-3; j = j+2) { tmp[i] = a[j]*h0 + a[j+1]*h1 + a[j+2]*h3 + a[j+3]*h3; tmp[i+half] = a[j]*g0 + a[j+1]*g1 + a[j+2]*g2 + a[j+3]*g3; i++; }
tmp[i] = a[n-2]*h0 + a[n-1]*h1 + a[0]*h2 + a[1]*h3; tmp[i+half] = a[n-2]*g0 + a[n-1]*g1 + a[0]*g2 + a[1]*g3;
for(i=0; i<n; i++) { a[i] = tmp[i]; } }} //transform
- 37 -
protected void invTransform(double a[], int n){ if (n>=4) { int i, j; int half = n >> 1; int halfPls1 = half + 1;
double tmp[] = new double[n];
tmp[0] = a[half-1]*lh0 + a[n-1]*lh1 + a[0]*lh2 + a[half]*lh3; tmp[1] = a[half-1]*lg0 + a[n-1]*lg1 + a[0]*lg2 + a[half]*lg3;
j = 2; for (i = 0; i<half-1; i++) { tmp[j++] = a[i] * lh0 + a[i + half] * lh1 + a[i + 1] * lh3 + a[halfPls1] * lh3; tmp[j++] = a[i] * lg0 + a[i + half] * lg1 + a[i + 1] * lg2 + a[halfPls1] * lg3; }
for(i=0; i<n; i++) { a[i] = tmp[i]; } }} //invTransform
- 38 -
C1, , Cm
Cπ (1), , Cπ (m )
m̂
Σi = m̂ + 1
m
( )Cπ (i)2 < 2
C τ
- 39 -
procedure Compress(c:array [1..m] of reals; ε:real) τmin <- min{|c[i]|} τmax <- max{|c[i]|} do τ <- (τmin + τmax)/2 s <- 0 for i<-1 to m do if |c[i]|<τ then s<-s+|c[i]|2 end for if s<ε2 then τmin <- τ else τmax <- τ until τmin ≃ τmax for i<-1 to m do if |c[i]| < τ then c[i] <- 0 end forend procedure
- 40 -
- 41 -
- 42 -