Transcript 6月16日分
情報通信システム(7)
http://www10.plala.or.jp/katofmly/chiba-u/
2015年6月16日 火曜日
午後4時10分~5時40分
NTT-IT Corp.
加藤 洋一
千葉大学 7- 2
(復習)情報量、情報エントロピー、可変長符号化
• ある事象の生起確率が p のとき、その事象が生起し
たときの情報量は -log p と定義される。
log p
• 情報エントロピーとは、情報量の期待値。即ち、
N
p
i
i 1
N
( log pi) pi log pi
(発生確率 情報量)の総和
i 1
p1からpNまでの事象がある。
• 情報を効率よく(つまりなるべく少ないビット数で)符
号化する方法として、可変長符号化がある。
– 代表的な方式はハフマン符号化。
情報を送るということ
千葉大学 7- 3
送信側(蓄積側)
事象が起きる
事象に符号を割り当てる
送る(蓄積する)
符号から事象を再現する
提示(再生)する
文字に符号を割り当てる
送る(蓄積する)
符号から文字を再現する
提示(再生)する
受信側(再生側)
符号を受け取る
たとえば、
送信側(蓄積側)
一文字読み取る
受信側(再生側)
符号を受け取る
事象をなんとするか?
一文字、音楽の一サンプル、画像の一画素、、、二文字、三文字、、
結合確率の情報エントロピー
千葉大学 7- 4
事象 x の情報エントロピー H ( x)
事象 y の情報エントロピー H ( y)
事象事象を同時に生起させたときの情報エン トロピー H ( x, y)
H ( x, y) H ( x) H ( y)
重要:つまり、各々の事象のエントロピーより結合事象のエントロ
ピーの方が小さい(あるいは等しい)、ということになる。
千葉大学 7- 5
確率事象とその結合(前回の講義)
• 複数の文字をまとめてひとつの事象と捉えることで、一文字あ
たりのエントロピー、即ち情報量が減ることが分かる。これは、
隣り合う文字間に何らかの関連があるからである。
事象の数 場合の数
エントロピー
一文字あたりのエントロピー
1文字
15717
28
4.14
4.14
2文字
7858
385
7.44
3.72
3文字
5239
1521
9.70
3.23
• テキスト中の文字の順序をランダムに入れ替えてみた。
事象の数 場合の数
エントロピー
一文字あたりのエントロピー
1文字
15717
28
4.14
4.14
2文字
7858
577
8.23
4.11
3文字
5239
3119
11.23
3.74
• 隣り合う文字間の関連をなくすと、エントロピーが増大した。
– 3文字のときは、事象の数と場合の数が近すぎ、有効な確率が計算で
きない(事象の数>>場合の数 である必要がある)。
千葉大学 7- 6
複数の事象を結合させるときの問題点
• 場合の数が膨大となる ー> 処理が現実的で
なくなる(各場合の生起確率を求めることがで
きない)
• 音声や画像などでは、2つや3つのサンプル
だけでなく、さらに広範囲で各サンプル値が
関連している ー> 単に数個の事象を結合し
ただけでは不十分
• 別の方法が必要
千葉大学 7- 7
「関連性」の尺度(のひとつ)=相関関数
• 2つの信号の関連性を調べてみよう
– ここで言う「信号」は確率過程であることに注意。即ち、
個々の信号の値(サンプル値列)は確定していないが、統
計的には一定の性質を持っている。
• 最も単純な比較は、「値の比較」であろう。値の比較
は、値の「差」の絶対値や自乗を評価すればよい。
信号A
…………
信号B
…………
一回目
2回目
3回目
千葉大学 7- 8
「関連性」の尺度(のひとつ)=相関関数
いま、ディジタル信号 A と B がある。信号 A の i番目のサンプルAi と、
信号B の j番目のサンプル B jの差の二乗の期待値Tij は、
Tij E ( Ai B j )2
である。ここで、
E は期待値計算を表す。
これは、 Ai と B j の値がどれだけ近いかを表している。
Tij が小さければこれらは 「近い」し、
「近くない」と言える
Tij が大きければ、
。
期待値Tij を計算するには、信号 A と B を多数回発生させ、そ のi番目
のサンプルAi と j番目のサンプル B jを数多く観測し、その 差の二乗の
平均を計算すればよい(しかし、これは結構
信号Aを数多く発生させる
サンプルAi
A0,A1,・・・Ai ・・・・を何回も発生させる
信号Bを数多く発生させる
大変である)。
自乗
サンプルBj
B0,B1,・・ ・・ ・Bj・・・・を何回も発生させる
平均
期待値 Tij
計算はちょっと大変。。。
千葉大学 7- 9
相関関数
信号の統計的な性質が時刻によって変わらな い場合は、 Tij は時刻
に因らない。即ち、 Tij Ti 1 j 1 Ti k j k Tn , n i jである。
つまり Tij はi jの関数となる(時間差 nの関数となる)。
信号A と B を多数回発生させる代わりに、 A と B を一度だ
け発生させ、 nを変化させてつつAi と Bi nの二乗誤差を計算し、
その平均を求めれば、 Tn を推定できる。即ち、
1
Tn ( Ai Bi n )2 ( Nは和の回数)
N i
となる。
信号の統計的性質が時間によって変わらない=定常確率過程
千葉大学 7- 10
相関関数
さらに計算を進める。
1
1
2
2
2
Tn ( Ai Bi n ) Ai Bi n 2 Ai Bi n
N i
N i
1
2
2
ここで、
(
A
B
i
i n )の部分は、正の一定値なので、
N i
(信号 Aと信号 Bの自乗平均)
Tnが小さくなる、即ち、
A B
i
i
i n
Ai と Bi nの類似度が高い場合とは、
が大きい場合である。
千葉大学 7- 11
相関関数
2つの信号A と B の間の類似度を相関関数と呼んで、
次のように定義する。
Rn E Ai Bi n
A と Bは統計的性質が時刻によらないとしているの で簡便な
計算方法として、以下 の式を使うことができ る。
1
Rn Ai Bi n
N i
ここで、 Nは総和計算の足し算を行った回数。
千葉大学 7- 12
相関関数の具体的な計算方法
Ai
積和
1/N
R0
積和
1/N
R1
積和
1/N
R2
Bi
Bだけ右にシフト
Ai
Bi-1
Bだけ右にシフト
Ai
Bi-2
千葉大学 7- 13
自己相関関数
ここで、 Ai n Bi nのときの Rnを自己相関関数という 。
1
Rn Ai Ai n
N i
自己相関関数Rnは、n サンプルだけシフトし た自分自身との
類似度を表すことにな る。
上式をもう少し正確に 書こう。まず、信号 Ai は周期Nサンプル
で繰り返すとする。そ の一周期のみ Rnを計算する。
1 N 1
Rn Ai Ai n
N i 0
さらに、 Rnの離散フーリエ変換を 計算してみる。
n
j2k
1 N 1
N
Qk Rn e
N n 0
千葉大学 7- 14
自己相関関数のフーリエ変換
n
j2k
1 N 1 j2k Nn
1 N 1 N 1
N
R
e
A
A
e
N n 0 n
N 2 n 0 m0 m m n
m m nと置くと、
m m
m
m
N 1 N 1
j2k
j2k
j2k
1 N 1 N 1
1
N
N
N
A
A
e
A
A
e
e
m m
m m
2
2
N m0 m0
N m0 m0
N 1 N 1
1
Ae
2 m
N m0 m0
変換を
j2k
m
N
Ame
j2k
m
N
1 N 1 j2k Nn
Fk Ane
N n 0
ここで、 Anの離散フーリエ
とすると、その複素共 役Fk*は、
n
n
N 1
N 1
j2k
j2k
1
1
N *
Fk* ( Ane
) Ane N
N n 0
N n 0
となる。これらから、
1 N 1 j2k Nn
Qk Rne
Fk Fk* であることが分かる。
N n 0
千葉大学 7- 15
自己相関関数のフーリエ変換
さて、 Fk Fk* とは、周波数スペクト ルのパワーである(実 数)。
これをパワースペクト ルという。
前頁の式から、自己相 関関数のフーリエ変換 は、元の信号のパワー
スペクトルとなる、と いうことである(ウイ
ナー・ヒンチン
の定理という)。
この定理は、自己相関関数計算を高速に行うときに便利である。
千葉大学 7- 16
自己相関関数が示すもの
自己相関関数Rnは、 n 0の時に最大となる。即 ち、
R0 Rn
n0
(元々自己相関関数は「類似度」なので、 n 0のときは、
自分自身との類似度だから、そのときが最大 なのは当然)
さて、信号 Aの各標本間の「関連性」を減らす何らかの
操作Oを行い、 OAの自己相関関数がn 0以外の時は
できるだけ0になるよ うにすることが、「冗 長性」を
削減することとなる。
千葉大学 7- 17
自己相関関数計算の実験
信号を以下のように生成した。
標本数は、N。 信号はs。 パラメータとして、0<a<1.0を与える。
初期値は、-0.5から0.5までの乱数。
aが小さければ、s[i]とs[i+1]の関連が少なく、 aが1に近ければ、
s[i]とs[i+1]の関連が大きくなる。
import numpy, random
def get_signal(a, N):
b = 1.0 - a
s = numpy.array([0.0]*N)
N個の実数の配列
s[0] = random.random() - 0.5
初期値
for i in range(1, N):
s[i] = a * s[i-1] + b * (random.random() - 0.5)
return s
配列を返す
random.random()は、0.0から1.0に一様に分布する乱数
千葉大学 7- 18
自己相関関数計算の実験
• プログラム名は、autocorr.py
• 結果は、gnuplotで表示。
• パラメータaが大きければ、自己相関関数の
「尾」が長く、小さければ、短いことがわかる。
• 即ち、パラメータaが大きいということは、離れ
た標本値間でも関連が大きいが、パラメータa
が小さければ、標本間の関連が減る、という
ことである(当然の結果)。
まず信号の最も基本的な性質を見る
千葉大学 7- 19
• これから圧縮符号化を行う信号の集合に関し、以下
のような基本データをまずみる。
– 最大値と最小値
• これは、信号の種類(例えば、画像なら、明るい写真と暗い写真
など)による変化は少ないことが多い(ディジタル画像なら0-255
の間)。
– 平均値
• 平均値は、いろいろに変化する場合(画像など)と、いつも0の場
合(音楽、音声)があると思われる。
• 画像の場合、領域ごとの平均値は結構変化する。
– 分散(あるいは標準偏差)
• 領域ごとに分散の変化を見るのも良い。
– エントロピー
– ヒストグラム
• これら基本データは、さらに高度な解析を行う際に
役立つ。
千葉大学 7- 20
RGBとYUV(輝度・色差信号)
• RGBはひとつのカラー画素をRed、Green、Blueの3原色で
表す方法
• YUVは、ひとつのカラー画素を輝度Y(明るさ)と2つの色差信
号(Y-BとY-R)で表す方法
• 人間の目は、色の変化より輝度の変化に敏感である。そこで、
色空間座標の変換を行い、YUV空間での処理を行う。
Y = 0.299R + 0.587G + 0.114B
U = -0.169R 0.331G + 0.500B
V = 0.500R 0.419G 0.081B
R = 1.000Y
+ 1.402V
G = 1.000Y 0.344U 0.714V
B = 1.000Y + 1.772U
元のRGB信号が正の値しか持たない
とき(例えば0から255)、Y信号も同様。
しかし、UV信号は、正負の値をとりうる。
UV信号をモノクロ画像としてみる場合
には、それぞれに元のRGB信号の中
間の値(範囲が0から255なら128)を
加える。
カラー画像の基本的性質を見てみよう
千葉大学 7- 21
画像の基本的性質の例
Image 1
(img_analysis.py)
R Min = 9 Max = 255 Average = 101.3 Std Dev = 63.7
G Min = 0 Max = 255 Average = 112.0 Std Dev = 65.2
B Min = 0 Max = 255 Average = 130.9 Std Dev = 83.6
R entropy = 7.616505
G entropy = 7.749665
B entropy = 7.690832
Y Min = 5 Max = 255 Average = 110.9 Std Dev = 63.1
U Min = 21 Max = 199 Average = 139.3 Std Dev = 24.7
V Min = 70 Max = 225 Average = 121.1 Std Dev = 21.0
Y entropy = 7.734218
U entropy = 5.893437
V entropy = 5.680427
ヒストグラムはgnuplot (img_hist.dem)で表示する。
RGBおよびY信号のヒストグラムは広い範囲に分布するが、UV信号は平均値付近
の頻度が高い
千葉大学 7- 22
「関連性」は「冗長性」
• 画像の場合の「関連性」とは、画像中のある画素が
「白」の場合、その周辺の画素も白である可能性が
高い、というような意味である。
• 例えば、画像からひとつ画素が抜け落ちたときのこ
とを考える。その画素値は、高い確率で周りの画素
値と近いと考えられるだろう。
• 上記のように、たとえ画素をひとつ抜いたとしてもそ
れがある程度の精度で予測可能である。
• 別の言い方をすると、その画素はなくても問題がな
かった、即ち、「冗長」であった、ということができる。
千葉大学 7- 23
2次元信号の自己相関関数
画像のような2次元信 号をSi , jというように表す。
iを横軸の位置、
jを縦軸の位置とすると 、モノクロ画像の場合 は、 Si, jは位置(i, j)
の画素の輝度値を表す。
画像Si, jの自己相関関数は、以下のようになる。
Rm,n E Si , j Si m, j n
もし、画素値 Si, jの統計的性質が位置に因らないとき、 Rm,nは、
Rm,n
1
Si, j Si m, j n , Mは横方向の画素数、Nは縦方向の画素数
MN i, j
と計算できる。
千葉大学 7- 24
実際の画像の相関関数
Image 1
Auto correlation function R
1.000 0.980 0.959 0.948
0.983 0.969 0.952 0.942
0.961 0.953 0.941 0.933
0.949 0.943 0.933 0.926
0.939 0.935 0.926 0.920
0.931 0.928 0.920 0.914
0.923 0.921 0.915 0.909
0.916 0.915 0.909 0.904
0.938
0.933
0.925
0.919
0.914
0.909
0.904
0.899
0.931
0.926
0.919
0.914
0.909
0.904
0.900
0.895
0.924
0.920
0.914
0.909
0.905
0.900
0.896
0.892
0.918
0.914
0.909
0.905
0.901
0.897
0.893
0.889
千葉大学 7- 25
実際の画像の相関関数
Auto correlation function G
1.000 0.978 0.957 0.946
0.979 0.964 0.948 0.938
0.954 0.947 0.936 0.928
0.941 0.936 0.928 0.921
0.931 0.927 0.920 0.914
0.922 0.920 0.913 0.908
0.914 0.912 0.907 0.902
0.907 0.906 0.901 0.896
0.937
0.930
0.921
0.914
0.909
0.903
0.897
0.892
0.930
0.923
0.915
0.909
0.904
0.899
0.894
0.889
0.923
0.917
0.910
0.905
0.900
0.895
0.891
0.886
0.917
0.912
0.906
0.901
0.896
0.892
0.888
0.884
千葉大学 7- 26
実際の画像の相関関数
Auto correlation function B
1.000 0.985 0.970 0.962
0.984 0.974 0.962 0.955
0.965 0.961 0.953 0.946
0.954 0.951 0.944 0.939
0.945 0.942 0.937 0.932
0.936 0.935 0.930 0.926
0.928 0.927 0.923 0.919
0.921 0.920 0.917 0.913
0.954
0.948
0.940
0.934
0.928
0.922
0.916
0.910
0.948
0.943
0.935
0.929
0.924
0.918
0.913
0.908
0.943
0.937
0.931
0.925
0.920
0.915
0.910
0.905
0.938
0.933
0.927
0.922
0.917
0.912
0.907
0.903
千葉大学 7- 27
実際の画像の相関関数
Auto correlation function Y
1.000 0.980 0.961 0.951
0.982 0.969 0.953 0.944
0.960 0.953 0.942 0.934
0.948 0.943 0.934 0.927
0.938 0.934 0.927 0.921
0.929 0.927 0.920 0.915
0.921 0.920 0.914 0.909
0.914 0.913 0.909 0.904
0.942
0.936
0.927
0.921
0.915
0.910
0.905
0.900
0.935
0.929
0.922
0.916
0.911
0.906
0.901
0.897
0.928
0.923
0.917
0.912
0.907
0.902
0.898
0.894
0.923
0.918
0.912
0.908
0.903
0.899
0.895
0.891
千葉大学 7- 28
実際の画像の相関関数
Auto correlation function U
1.000 0.999 0.998 0.998
0.998 0.998 0.997 0.997
0.996 0.996 0.996 0.996
0.995 0.995 0.995 0.995
0.994 0.994 0.994 0.994
0.993 0.993 0.993 0.993
0.992 0.992 0.991 0.991
0.990 0.991 0.990 0.990
0.998
0.997
0.996
0.995
0.993
0.992
0.991
0.990
0.997
0.996
0.995
0.994
0.993
0.992
0.991
0.990
0.997
0.996
0.995
0.994
0.993
0.992
0.991
0.990
0.997
0.996
0.995
0.994
0.993
0.992
0.991
0.990
千葉大学 7- 29
実際の画像の相関関数
Auto correlation function V
1.000 0.998 0.997 0.997
0.998 0.998 0.997 0.997
0.998 0.998 0.997 0.997
0.998 0.998 0.997 0.997
0.998 0.998 0.997 0.997
0.998 0.998 0.998 0.998
0.998 0.998 0.998 0.998
0.998 0.998 0.998 0.998
0.996
0.996
0.996
0.997
0.997
0.997
0.998
0.998
0.996
0.996
0.996
0.996
0.997
0.997
0.997
0.998
0.995
0.995
0.996
0.996
0.996
0.997
0.997
0.997
0.995
0.995
0.995
0.996
0.996
0.996
0.997
0.997
千葉大学 7- 30
相関を減らすひとつの方法=予測符号化方式
画像の左上から、右へ、上から、下へ、順に
スキャンする方法が一般的(TVと同じ)
画素値の入力順序(ラスタースキャン)
予測符号化の方法
•既に送信した画素値から次に送信する画素値を予測する。
•予測値と実際の画素値の差(即ち予測誤差)を送信する。
•受信側では、送信側同様、既に受信した画素から次に受信する画素値を予測する。
•予測値に予測誤差を足し合わせると、元の画素値を得る。
千葉大学 7- 31
予測符号化の方法
送信側
予測誤差
画素値を
順に入力
予測値
予測値
受信側
出力
(予測誤差の
み伝送する)
過去に入力された
画素値から次の画
素値を予測する
予測誤差
再生した画素値
予測値
過去に受信した画
素値から次の画素
値を予測する
最も単純な予測方法: 画素Si, jの予測値S i, j Si 1, jとする。このとき予測
誤差Ei, jは、
Ei, j Si, j S i, j Si, j Si 1, j
となる。受信側では、 既にSi 1, jを再生しているので、 Ei, jが送られてくれば、
Si, j Si 1, j Ei, j
として、 Si , jを再生できる。
千葉大学 7- 32
予測符号化の方法
最も単純な予測方法:
S i , j Si 1, j
3画素から予測する方法:
S i , j Si 1, j Si , j 1 Si 1, j 1
の2種類で、自己相関関数の変化を見てみます。
i
j
千葉大学 7- 33
予測圧縮後のエントロピーと自己相関
Image 1
Simple prediction, s[i,j] = s[i-1, j]
Y Min = -221 Max = 255 Average = 0.1 Std Dev = 25.5
Y entropy = 5.509558
Auto correlation function Y
1.000 -0.003 -0.238 -0.034 -0.040 -0.022 -0.019 -0.023
0.703 0.053 -0.153 -0.032 -0.041 -0.022 -0.013 -0.020
0.401 0.097 -0.070 -0.022 -0.041 -0.019 -0.005 -0.018
0.312 0.102 -0.055 -0.013 -0.028 -0.023 -0.005 -0.013
0.256 0.106 -0.043 -0.018 -0.011 -0.020 -0.012 -0.009
0.212 0.108 -0.027 -0.022 -0.010 -0.014 -0.013 -0.005
0.175 0.105 -0.014 -0.019 -0.014 -0.015 -0.008 -0.001
0.147 0.095 -0.004 -0.015 -0.015 -0.017 -0.007 0.003
予測を行う前のY信号のエントロピーは、7.8ビット程度。
千葉大学 7- 34
予測圧縮後のエントロピーと自己相関
Three pixel prediction, s[i,j] = s[i-1, j] + s[i, j-1] - s[i-1, j-1]
Y Min = -254 Max = 255 Average = 0.3 Std Dev = 20.6
Y entropy = 5.430507
Auto correlation function Y
1.000 -0.057 -0.201 0.056 0.058 0.047 0.046 0.057
0.030 0.017 0.003 -0.012 -0.001 -0.004 -0.005 0.002
-0.304 0.061 0.105 0.002 -0.019 0.010 0.013 -0.006
-0.030 0.002 0.005 0.021 -0.007 -0.009 0.011 0.002
0.002 0.003 -0.007 -0.001 0.025 -0.005 -0.009 0.002
0.010 0.007 0.006 -0.011 0.008 0.009 -0.009 -0.003
0.006 0.013 0.004 -0.003 -0.004 0.003 0.006 0.002
0.015 0.002 0.004 0.001 -0.003 -0.007 0.005 0.011
若干だが、こちらの方が効率がよさそうである。
千葉大学 7- 35
予測符号化の実験
通常は、予測誤差を量子化し、さらに圧縮率を上げる
送信側
予測誤差
画素値を
順に入力
予測値
量子化された予測誤差
量子化
出力
(予測誤差の
予測値
み伝送する)
過去に入力された
画素値から次の画
素値を予測する
受信側
予測誤差
再生した画素値
予測値
過去に受信した画
素値から次の画素
値を予測する
千葉大学 7- 36
圧縮符号化の実験
Step size = 4, Total 233 (236) Kbytes
Y Ent=3.413672 Bytes=167243 Huffman Bytes=169512
U Ent=2.835669 Bytes=34618 Huffman Bytes=34928
V Ent=3.019002 Bytes=36856 Huffman Bytes=37376
1_q21.bmp
Step size = 8, Total 179 (180) Kbytes
Y Ent=2.668758 Bytes=130748 Huffman Bytes=131416
U Ent=2.076168 Bytes=25346 Huffman Bytes=25970
V Ent=2.239305 Bytes=27337 Huffman Bytes=27679
1_q41.bmp
Step size = 16, Total 132 (137)Kbytes
Y Ent=2.005317 Bytes=98244 Huffman Bytes=101098
U Ent=1.449804 Bytes=17699 Huffman Bytes=19539
V Ent=1.576837 Bytes=19250 Huffman Bytes=20652
1_q81.bmp
Step size = 32, Total 92(107) Kbytes
Y Ent=1.449476 Bytes=71012 Huffman Bytes=77994
U Ent=0.936545 Bytes=11433 Huffman Bytes=15875
V Ent=0.980627 Bytes=11971 Huffman Bytes=16124
1_qf1.bmp
元の画像ファイルサイズは、
1,153KByte
千葉大学 7- 37
効率的な符号化(前回の講義の復習)
ランダムな信号、各標
本が独立(前後の標
本と関連がない)であ
るような確率過程
発生確率分布に適合
した可変長符号化を
用い、サンプル毎に符
号化すればよい(逆に
言うとこれ以上の圧縮
は困難)
標本間の関連性が高
いような確率過程
関連性が及ぶ複数の
サンプルをまとめた事
象を対象に発生確率分
布を求め、可変長符号
化する(工夫によって、
圧縮が可能)
しかし、関連性が及ぶ標本の数が多い場合、事象の数(場合の数)が極端に
多くなり可変長符号化が困難となる(圧縮の可能性はあるのだが、「標本をまと
めて符号化する」という単純な方針では、具体的な処理方法(アルゴリズム)の
実現が難しい)。そこで、可変長符号化の前に信号の性質に応じた処理を行う。
千葉大学 7- 38
音声と画像の情報量圧縮の一般的「戦略」
音声、音楽、画像の各標本値は、他の近隣の標本値と関連がある。
即ち、冗長性がある。最初に、信号の性質に着目して、冗長性を削
減することで情報量を減らす。
予測、直交変換など
音声や画像では、完全に再生できなくても支障がない場合が多い。
「完全に再生する」ことをあきらめる事で、さらに情報量を削減する。
量子化
最終的に得られた値(シンボル)を効率よくビット列にする。
エントロピー符号化
「完全に再生できない」場合の元信号との差を「符号化雑音」という。
これを目立たせないように、復号の後で何らかの処理を加える。
ポストフィルター