KLT はエネルギを集約する カルーネンレーベ変換 (KLT) で 情報を集約する 要点 分散 7. 9. 8.3 3.7 4.5 4.0 KLT 前 集約 分散 0.3 0.4 4.5 7.4 3.4 00.7 KLT 後 分散 = エネルギ密度 エネルギ と表現 最大を 55, 最小を 0 に正規化して表示した 情報圧縮に応用できないか? エネルギ集約 データ圧縮 分散 ( 平均 ) KLT 前 7. 9. 8.3 3.7 4.5 4.0 :. KLT 後 0.3 0.4 4.5 7.4 3.4 00.7 :. 圧縮指標 圧縮指標 ( 平均 ) KLT 前 4. 4.3 4. 4.6 4.6 4.6 : 4.4 KLT 後 -.0 -.5..9 3.7 6.7 :.0 log 分散 同じ 圧縮 大事な結論 カルーネンレーベ変換 (KLT) で情報を集約する 数式表現と一般化
言葉の定義 ( 詳細 ) 分散共分散行列と固有ベクトル 位置 (n,n ) における画素値 x (n,n ) 全ての画素について x 平均 分散 (=エネルギ密度) H(x) ヒストグラム (= 度数分布 ) P(x) 確率密度関数 エネルギ (= 分散 全画素数 ) H エントロピ ( 平均符号長 ) H log 確率密度関数に依存 画素あたりの 平均符号長(=データ量 全画素数 ) 画像全体での データ量(= 平均符号長 全画素数 ) 情報量 エネルギ 広義に 情報 圧縮指標 ここでの使い方 log 分散共分散行列に対する固有ベクトル 変換係数 P = AX 分散共分散行列 但し ij N N x i N N x( n, x( n, X x6( n, 6 N N n 0 n 0 N N i n 0 n 0 6 x ( n, n ) 6 6 66 xi ( n, xi x j ( n, x j KLT の後の分散共分散行列は スペクトル 対角化される スペクトル ( 無相関化 ) スペクトル 6 行列 B {R,G,B} を {Y, C b, C r } に変換する行列 行列 A 共分散行列に対する 6 つの固有ベクトル 分散共分散行列 (KLT の前 ) A T = = 具体的な値 B = 0.99 0.587 0.4-0.69-0.33 0.500 0.500-0.49-0.08 0.087-0.80 0.544-0.6963-0.04 0.678 0.640-0.740 0.408 0.608 0.007-0.387 0.0069-0. -0.5648 0.430-0.456 0.587-0.360-0.475 0.6953 0.49-0.5574 0.0574-0.5849-0.53-0.0386 0.058 0.567 0.759 0.336 0.384 0.3903 0.4597 0.4039 0.4644 0.0758 0.0770 0.057 0.0597 0.048 0.0634 0.0770 0.0848 0.067 0.07 0.0574 0.0745 0.057 0.067 0.0933 0.086 0.065 0.0775 0.0597 0.07 0.086 0.05 0.083 0.043 0.048 0.0574 0.065 0.083 0.088 0.0854 0.0634 0.0745 0.0775 0.043 0.0854 0.068 KLT= PCA = 軸の 入力 入力 入力 3 3 第 成分第 成分第 3 成分 分散共分散行列 (KLT の後 ) = 0.00-0.0000 0.0000 0.0000-0.0000 0.0000 ( 無相関 ) -0.0000 0.006-0.0000-0.0000-0.0000-0.0000 0.0000-0.0000 0.0 0.0000-0.0000 0.0000 0.0000-0.0000 0.0000 0.0349-0.0000-0.0000-0.0000 ( 無相関 -0.0000 ) -0.0000-0.0000 0.0597-0.0000 0.0000-0.0000 0.0000-0.0000-0.0000 0.4563 co : in in co
分散が偏る 圧縮できる 入力 入力 : 入力 N 分散 圧縮指標 N log N n n 相加平均 成分 成分 : 成分 N 分散 n エネルギ保存則 N n N n 符号化符号化 符号化 n 圧縮テ ータ 圧縮テ ータ : 圧縮テ ータ N log 個別には log n 全体では / N N n n 相乗平均 カルーネンレーベ変換 (KLT) で情報を集約する 隣接画素間に適用 奇数列と偶数列に分類 奇数列と偶数列に分類 50 00 50 0-50 -00-50 50 00 50 0-50 -00-50 -00 0 00-00 0 00 8 列 8 列
偶数列と奇数列の分散はほぼ同じ KLT = 45.39 の 約 3 千 50 00 50 0-50 -00-50 大きく 第 成分 50 00 50 0-50 -00-50 分散 :,964-00 0 00 分散 :5,736 第 成分 -00 0 00 第 成分 分散を最小化 分散が偏る 情報圧縮 分散 :3,00 3,039 約 3 千 分散 :3,00 再生画像 第 成分 67 小さく clear all; cloe all; Fn='C: Uer iwa 岩橋 ソフトウェア 標準画像 mono '; % Fn='C: Uer iwa 岩橋 研究室 ソフトウェア 標準画像 mono '; w=; Th=0/80*pi; In=7; witch(i; cae ; Fn='couple.bmp'; cae ; Fn='girl.bmp'; cae 3; Fn='aerial.bmp'; cae 4; Fn='airplane.bmp'; cae 5; Fn='parrot.bmp'; cae 6; Fn='mandrill.bmp'; cae 7; Fn='lena.bmp'; cae 8; Fn='earth.bmp'; cae 9; Fn='balloon.bmp'; cae 0; Fn='milkdrop.bmp'; cae ; Fn='ailboat.bmp'; cae ; Fn='pepper.bmp'; cae 3; Fn='tree_log.bmp'; end; % original image --> X0 N =3; Th=0; Th=0; Th3=0; Th4=0; Th5=0; Th6=0; Th7=0; xx=imread(trcat(fn,f); [N N N3]=ize(xx); L0=N/; L=N/; X0(:,:)=double(xx(L0-N/+:L+N/,L0-N+:L+N)) -8; clear xx; P(:,:)=double(X0(:N,::N*)); P(:,:)=double(X0(:N,::N*)); x(,:n*n)=rehape(p(:n,:n),,n*n); x(,:n*n)=rehape(p(:n,:n),,n*n); var(x') % component figure(); ubplot(,,3); imhow(nrmimg(x0)); xlabel(' ','Fontize',); ubplot(,,4); imhow(nrmimg(p)); xlabel(' ','Fontize',); ubplot(,,); imhow(nrmimg(p)); xlabel(' ','Fontize',); ubplot(,,); plot(x(,:n*n),x(,:n*n),'.'); axi('quare'); axi([-80 80-80 80]); ylabel(' ','Fontize',); xlabel(' ','Fontize',); % PCA [P P Th]=PCA(P,P,w,Th,+); [var(p(:)) var(p(:))] [Q Q Th]=PCA(P*0,P,w,Th,-); [var(q(:)) var(q(:))] x(,:n*n)=rehape(q(:n,:n),,n*n); x(,:n*n)=rehape(q(:n,:n),,n*n); X(:N,::N*)=Q(:N,:N); X(:N,::N*)=Q(:N,:N); x(,:n*n)=rehape(p(:n,:n),,n*n); x(,:n*n)=rehape(p(:n,:n),,n*n); % component figure(); ubplot(,,3); imhow(nrmimg(x)); xlabel(' 再生画像 ','Fontize',); ubplot(,,4); imhow(nrmimg(p)); xlabel(' 第 成分 ','Fontize',); ubplot(,,); imhow(nrmimg(p)); xlabel(' 第 成分 ','Fontize',); ubplot(,,); plot(x(,:n*n),x(,:n*n),'.'); axi('quare'); axi([-80 80-80 80]); ylabel(' 第 成分 ','Fontize',); xlabel(' 第 成分 ','Fontize',); var(x(:)) figure(3); ubplot(,,); imhow(nrmimg(x0)); xlabel(' ','Fontize',); ubplot(,,4); imhow(nrmimg(p)); xlabel(' 第 成分 ','Fontize',); ubplot(,,); imhow(nrmimg(p)); xlabel(' 第 成分 ','Fontize',); ubplot(,,3); imhow(nrmimg(x)); xlabel(' 再生画像 ','Fontize',); % % % PCA % % function [Q Q Th]=PCA(P,P,w,Th,FB) % if(fb==+); % [N N]=ize(P); % x(,:n*n)=rehape(p(:n,:n),,n*n); % x(,:n*n)=rehape(p(:n,:n),,n*n); % % --------------------------------- covariance matrix % Av=mean(x'); % (,)=(x(,:)-av())*(x(,:)-av())'; (,)=(x(,:)-av())*(x(,:)-av())'; % (,)=(x(,:)-av())*(x(,:)-av())'; (,)=(,); =/(N*N-); % % --------------------------------- optimum angle % if(w==); % [A B]=eig(); A=A'; % if(ign(a(,))~=ign(a(,))); A(,:)=-A(,:); end; % Houholder -> Given % if(ign(a(,))~= ); A =-A ; end; % Th=atan(A(,),A(,)); % end; % A=[co(Th) -in(th); in(th) co(th)]; % fprintf('%6.f degree n',th/pi*80); % % --------------------------------- rotation % y=a*x; % Q(:N,:N)=rehape(y(,:N*N),N,N,); % Q(:N,:N)=rehape(y(,:N*N),N,N,); % end; % if(fb==-); % [N N]=ize(P); % x(,:n*n)=rehape(p(:n,:n),,n*n); % x(,:n*n)=rehape(p(:n,:n),,n*n); % A=[co(Th) -in(th); in(th) co(th)]; % % --------------------------------- rotation % y=inv(a)*x; % % --------------------------------- covariance matrix (after) % Q(:N,:N)=rehape(y(,:N*N),N,N,); % Q(:N,:N)=rehape(y(,:N*N),N,N,); % end; % % %----------------------------- % % covariance of quare matrix % %----------------------------- % function =Covqm(Q,Q,Q3) % [N NN]=ize(Q); % x(,:n*n)=rehape(q(:n,:n),,n*n); % x(,:n*n)=rehape(q(:n,:n),,n*n); % x(3,:n*n)=rehape(q3(:n,:n),,n*n); % Av=mean(x'); % (,)=(x(,:)-av())*(x(,:)-av())'; % (,)=(x(,:)-av())*(x(,:)-av())'; % (,3)=(x(,:)-Av())*(x(3,:)-Av(3))'; % (,)=(x(,:)-av())*(x(,:)-av())'; % (,3)=(x(,:)-Av())*(x(3,:)-Av(3))'; % (3,3)=(x(3,:)-Av(3))*(x(3,:)-Av(3))'; % (,)=(,); % (3,)=(,3); % (3,)=(,3); % =/(N*N-); % % カルーネンレーベ変換 (KLT) で データ量を圧縮できる 演習問題を解く
軸を 成分の分散を最小化 問題 y y co in in x co x とする y ( の分散 第 成分 co 第 成分 in in co 分散を最小化 分散を最小化 分散が偏る 情報圧縮 N N n0 y y を最小とする角度は? where y N y ( n N n0 ) 分散が偏る 圧縮できる log 分散 奇数列 偶数列 圧縮指標 ( 全体 ) 成分 成分 log 偏る エネルギ保存則 符号化符号化 H H 圧縮テ ータ 圧縮テ ータ 圧縮指標 ( 個別 ) log log 圧縮指標 ( 全体 ) / log 相加平均 > 相乗平均 KLT 前の分散 KLT 後の分散 エネルギ保存則 エントロピのとき 問題 KLTによりエントロピが下がる ( データ量を圧縮できる ) ことを示せ log 分散
KLT 前のエントロヒ KLT 後のエントロヒ 以下を示す H B H A H A H B 指針 log log log log なので KLT 前のエントロヒ は H B エネルキ 保存より H B 解答 log log log log log 解答 KLT 後のエントロヒ は 従って なので H A log log log log / / H A H B 分散を最小化 分散が偏る 情報圧縮 カルーネンレーベ変換 (KLT) は成分除去の影響が小さい 隣接画素間に適用
KLT は成分除去の影響が少ない 分散が偏る 除去できる 成分除去 / 再生画像 と大きく異なる KLT なし 奇数列偶数列分散 成分 成分 偏る 逆 全画素 再生画像 再生画像 再生誤差 再生画像 原画像 KLT 成分除去 / KLT - 再生画像 と似ている KLT あり 第 成分 第 成分 co in 小さい in 原画像 co 原画像 近い除去 再生画像 co in 0 再生画像 in co 第 成分 問題 問題 y( x( R( ), y( x( xˆ ( 0 R( ) xˆ ( y( co R( ) in in co y y x R( ) x, co R( ) in とする y ( と y ( の相関 in co とする 再生誤差 xˆ x xˆ x ( n ) を最小とする角度は? 全てのn y y y ( n y ) をゼロとする角度は?
画素を 4 つに分類する 4 つのグループに 分けて KLT する 分類 4 つの成分 3 3 画素 KLT を適用してみた 再生画像 KLT 4 つの成分 3 3 画素 4 つの成分一部を削除 /4
を繰り返し適用した カルーネンレーベ変換 (KLT) を 繰り返し適用する 原画像 奇数列偶数列 45.39 中間 中間 奇数列偶数列奇数列偶数列 46.48-36.56 成分 成分 成分 3 成分 4 原画像成分 成分 成分 3 成分 4 等価表現 KLT のまとめ 原画像奇数列偶数列原画像 x() x() x(3) x(4) 45.39 中間 中間 45.39 46.48 45.39-36.56 奇数列偶数列奇数列偶数列成分 成分 成分 3 成分 4 46.48-36.56 成分 成分 成分 3 成分 4. ブロック変換 yl x K yh x 0, t K t 00 0 t0 t. データ圧縮に適した変換は? log H Hx x [ bit] Hy 任意の入力に対して基底 "t ij " を最適化したい H y L y H 3. ロスレス符号化 ( 符号量 ) y L y 変換前 : Hx log ( AM), AM 変換後 : Hy log ( GM), GM y L yl 4. ロッシー符号化 ( 符号量と符号化歪み ) ' 変換前 : Hx Hx log qx, ex qx ' 変換後 : Hy Hy log qy, ey qy H を最小化 5. 符号化利得 ( 歪みの比 同じ符号量 ) ex G0log0 6.0( H H ) x y 但し R ey AM 3.0 log GM [db] を最大化 6. カルーネン レーベ変換 (KLT) GM detr yy なので GMを最小化 R yy x : E[ YY ], yy ex eyh, T K R Kを対角化 7. 入力信号の共分散行列 R xx に対する固有ベクトルとして 最適な基底行列 K が求まる xx : E[ x ], : E[( x' x) ] eyl T ey xx yl T R : E[ XX ] yh x