連続信号の離散化

音や光景は、それぞれ空気の圧力や光の強さや色等の連続的に値の変化する媒体を通じて知覚される。これらをマイクロフォンやカメラ等の装置を用いて他の媒体の連続的な値に置き換えることにより、音や光景を記録、伝送することができる。この章では、それらの連続的な量を離散的なディジタル情報として表現する方法について学ぶ。

この章の内容

時間方向の離散化

最初に、1個のマイクで拾った音のような1次元の信号について考える。さらに議論を簡単にするために、次のように信号の時間変化が三角関数で表されるような信号(正弦波信号)を考えることとする。三角関数を用いることには深い意味がある。後の章でFourier変換を勉強するときにもう一度説明する。

ここで t は時間、fは、信号の周波数を表す。例えばf=5を代入すると、これは一秒間に5回振動する信号を表す。この信号は、MATLABを用いると、次のように書くことができる。前の章で取り上げた例題は、この信号で周波数を440Hzとしたものである。

x=sin(2*pi*f*t);

計算機でこのような三角関数で表されるよう連続的な信号を扱う場合には、有限の個数のデータを選び出して、それらにより元の信号を表す必要がある。信号の周波数と比較して十分に細かな間隔(十分に高い周波数。この場合は、信号の周波数5Hzに対して、60倍の300Hz)で値を取り出すようにすると、以下のように、本来の連続的な信号の性質を破壊せずに離散化することができる。

t=0:1/300:1;
x=sin(2*pi*5*t);
plot(t,x);grid on
xlabel('time (s)')

ここで、離散化するときの速度(標本化周波数)をどこまで遅くできるかを調べてみる。

まず、80Hzの場合を元の図に重ねて書いてみる。赤い○で、この場合の標本点を示す。

hold on;
t=0:1/80:1;
x=sin(2*pi*5*t);
plot(t,x)

この程度の粗さであれば、元の波形を復元するのは、難しくはない。

しかし、この標本化の速度を遅くして12Hzとすると、以下のようになる。

ここまで標本化を粗くすると、この赤丸のデータだけからでは、元の信号がどのような形であったかを推測することは、困難になる。

この問題に対する理論的な答えは、日本人の染谷と米国のShannonにより独立に発見され、「染谷-Shannonの定理」あるいは単に「標本化定理」と呼ばれている。次に、この重要な定理について説明する。

[標本化定理]

信号に含まれる周波数の上限をwとすると、標本化周波数fsを 2 w 以上に選べば、信号は標本間隔T=1/fs 毎の標本値 fn=f(nT)を用いて表すことができる。

この定理を理解するためには、以下のように話を進めるのが一つの方法である。それぞれの段階で、直感的な意味を説明しながら進める。

以上の話の進め方は、信号のディジタル化の様々な性質を直感的に理解しやすくすることを狙った。数学的には、もっと厳密な形式的な進め方が必要。人によっては、以上のような直感的な方法よりも形式的な数学的方法の方が理解しやすいこともある。

振幅方向の離散化

標本化された信号をディジタル処理するためには、計算機あるいは処理装置に読み込める形に変換する必要がある。計算機で用いられる情報は有限の桁数で表現されるので、桁数が固定されている場合には、丸めによる誤差が発生する。このような有限の桁へのまるめを量子化と呼び、そのために生ずる誤差を量子化誤差と呼ぶ。

t=0:1/100:2*pi;
x=5*sin(t);
hold off;plot(t/2/pi,x);hold on;stem(t(1:19:nn)/2/pi,round(x(1:19:nn)));grid on;
ここでは、量子化を表すために、四捨五入関数roundを用いている。また、標本化を表すため、コロンを用いた標記法を利用して、1/19のデータの間引きを行っている。

上の図は、そのような極端な場合の例を示す。滑らかな曲線が元の信号を表す。縦棒は、データの標本化の位置を示す。ここでは量子化のため、縦棒の長さは整数値しか取れないものとする。その結果、棒の先の○印は、元の曲線の上に正確に乗ることができなくなる。このように標本化と量子化のため、ディジタル化された信号には誤差が含まれることとなる。同じ信号を画像として見た場合を次に示す。

まず、量子化も標本化も無い場合の画像を示す。

imagesc([0 1],[0 1],x);colormap(gray);

次に、量子化を行い、値として整数値しか取れないものとする。

imagesc([0 1],[0 1],round(x));colormap(gray);
滑らかだった元の画像に、量子化によるにせの輪郭が発生する。

更に、標本化と量子化を同時に行った場合を以下に示す。

imagesc([0 1],[0 1],round(x(1:19:nn)));colormap(gray);
さらに標本化を加えることで、にせの輪郭の位置にずれが生ずる。

このように、振幅方向の離散化による誤差の影響は、信号の変化の大きさが小さい場合に、より目立つものとなる。

振幅方向の離散化の問題は、実際のハードウェアの設計では大きな問題になる。しかし、以下の講義では、この振幅方向の離散化の問題には深入りしない。この問題は、大学院のコースにおける情報圧縮の中で、より一般的な枠組みの下で詳しく論ずることにする。具体的な情報圧縮の例に関しては、第6セメスタのメディア情報処理の中で出会うことになる。

余談:量子化誤差は、信号と関連しており、ランダムに生ずる訳ではない。そのため、視覚的にも聴覚的にも気付かれやすいという問題を有している。