Coiflet 小波是英格麗多貝西應羅納德科夫曼的要求所設計的一種離散小波。Coiflet 小波的調整函式（scaling function）及小波函式（wavelet function）能同時擁有高消失動量，且其波形接近對稱，常被用於數位訊號處理。 性質 定義 一個（orthogonal wavelet）系統若符合以下條件，則稱為 Generalized Coiflet Wavelet GOC。 begin arraylcl mathcal M_tilde psi0l 0 mbox for lmbox 01L1 mathcal M_tilde phit_0l delta l mbox for lmbox 01L1 end array 其中 psi 為小波函式，phi 為調整函式 濾波器長度與消失動量 若 N 為濾波器長度，而 L 為系統消失動量，則最小的 N 為： Nbegin cases 3L 1 mbox if Lmbox is odd 3L mbox if Lmbox is even end cases 近線性相位（Nearlinear phase）濾波器 當 w 夠小時，GOC 的低通濾波器的頻率響應擁有漸進型態（asymptotic form）： angle H wt_0wCcdot wLO wL2 其中 L2left lfloor L2 right rfloor1，C 則為常數項。因此 h 具有漸近線性相位（asymptotic linear phase）的特性： lim_L to inftyangle H wt_0w 應用 Coiflet 小波除了被使用在影像壓縮外，目前也有被使用在電力系統訊號監測上 係數 下表為 coiflet 小波調整函式 C630 的係數，小波函式的係數可以藉由每兩個係數變換一次符號來推導 例如 C6 wavelet 0022140543057 0102859456942 0544281086116 1205718913884 0477859456942 0102859456942 Coiflets 係數 k C6 C12 C18 C24 C30 10 00002999290456692 9 00005071055047161 8 00012619224228619 00030805734519904 7 00023044502875399 00058821563280714 6 00053648373418441 00103890503269406 00143282246988201 5 00110062534156628 00227249229665297 00331043666129858 4 00231751934774337 00331671209583407 00377344771391261 00398380343959686 3 00586402759669371 00930155289574539 01149284838038540 01299967565094460 2 01028594569415370 00952791806220162 00864415271204239 00793053059248983 00736051069489375 1 04778594569415370 05460420930695330 05730066705472950 05873348100322010 05961918029174380 0 12057189138830700 11493647877137300 11225705137406600 11062529100791000 10950165427080700 1 05442810861169260 05897343873912380 06059671435456480 06143146193357710 06194005181568410 2 01028594569415370 01081712141834230 01015402815097780 00942254750477914 00877346296564723 3 00221405430584631 00840529609215432 01163925015231710 01360762293560410 01492888402656790 4 00334888203265590 00488681886423339 00556272739169390 00583893855505615 5 00079357672259240 00224584819240757 00354716628454062 00462091445541337 6 00025784067122813 00127392020220977 00215126323101745 00279425853727641 7 00010190107982153 00036409178311325 00080020216899011 00129534995030117 8 00015804102019152 00053053298270610 00095622335982613 9 00006593303475864 00017911878553906 00034387669687710 10 00001003855491065 00008330003901883 00023498958688271 11 00000489314685106 00003676592334273 00009016444801393 12 00000881604532320 00004268915950172 13 00000441656938246 00001984938227975 14 00000046098383254 00000582936877724 15 00000025243583600 00000300806359640 16 00000052336193200 17 00000029150058427 18 00000002296399300 19 00000001358212135 濾波器 這邊列出 6 12 18 點的 filter 消失點 vanish moment 也就是 k6。 這邊的 g 是低頻的濾波器，h 是高頻的濾波器。 可以看出 h n1n g n，這邊採用 python 的語法，h 會是 g 的反序，且 n 為奇數時要乘上 1 Daubechies filter g_kh_k 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 h_6 08525 00156 g_6 038486 08525 03378 h_12 00010 00079 00841 01082 05897 11494 05460 00953 00232 g_12 00232 00586 00953 05460 11494 05897 01082 00841 00335 00079 00026 00010 h_18 0007782 0023452 0065771 079377 0082301 0034555 0002574 0001117 0000466 000007098 g_18 000007098 0000466 0001117 0015880 0034555 042848 079377 040517 0023452 0007782 Matlab 程式 F coifwavf W 會回傳 Nstr2num W 的 coiflet 小波的調整函式，其中 N 只能為 15 的整數。 Python 程式 這邊根據上面所提供的高頻和低頻的濾波器去實作出離散小波轉換並且應用到影像壓縮上面， 透過小波轉換良好的性質，嘗試實作出連續的影像壓縮。 這邊單純是在示範小波轉換進行多次壓縮和反壓縮的結果， 如果不想轉換這麼多次修改 Jmax 即可。 import numpy as np def subsampling x d if d 1 y x 2 elif d 2 y x 2 return y def upsampling x d s xshape if d 1 y npzeros p s 0 s 1 y 2 x elif d 2 y npzeros s 0 p s 1 y 2 x return y def cconv x h d if d 2 return nptranspose cconv nptranspose x h 1 y npzeros xshape p len h pc int round float p 1 2 for i in range 0 p y y h i nproll x i pc axis0 return y def DWT_compression image h g discrete wavelet transformation Jmin 0 Jmax log2 n1 fW imagecopy j int nplog2 imageshape 01 A fW 2j12j1 for j in arange JmaxJmin11 A fW 2j12j1 for d in arange 13 Coarse subsampling cconv Ahdd Detail subsampling cconv Agdd A concatenate Coarse Detail axisd1 fW 2j12j1 A j1 Jmaxj return fW def iDWT_decompression image fW h g image is original fW is after DWT of that Jmin 0 Jmax int nplog2 imageshape 01 f1 fWcopy j int nplog2 imageshape 01 A f1 2j12j1 h1 h 1 g1 g 1 for j in arange JminJmax1 A f1 2j12j1 for d in arange 13 if d1 Coarse A 2j Detail A 2j2j1 else Coarse A 2j Detail A 2j2j1 Coarse cconv upsampling Coarsedh1d Detail cconv upsampling Detaildg1d A Coarse Detail j1 Jmaxj if j10 and j15 imageplot A j str int j 22j1 f1 2j12j1 A return f1 雙正交 Coiflet 小波 定義 一個 order 為 Ltilde L 的雙正交 Coiflet 小波需符合以下條件： begin arraylcl mathcal M_tilde phi0l delta l mbox for lmbox 01L1 mathcal M_tilde psi0l 0 mbox for lmbox 01L1 mathcal M_phi0l delta l mbox for lmbox 01L1 mathcal M_psi0l 0 mbox for lmbox 01tilde Lmbox 1 end array 性質 當 L 為偶數時，h 會對稱於原點：h nh n。這讓雙正交 coiflet 在圖片壓縮方面能有較好的峰值信噪比（PSNR）。 參考資料 Category 小波分析