United Statesからアクセスのようです。言語設定をEnglishに切り替えますか?
Switch to English site
Skip to main content

ノイズに埋もれた信号はどう計測する?

ひどい騒音での会話で、滝のような無秩序なノイズ音に困った経験は誰にでもあると思います。あなたとっては「ノイズ」ですが、この会話の当人達にとってはそれぞれが「欲しい信号」なのです。このような事から、本当に不要な信号を「外乱」、自分が集めたいと望む情報には「信号」というように、私は区別して言い表すようにしています。

SNR

外乱によって信号が埋もれてしまうことがあります。この現象は、高度な数学的計算で表すことが可能です。理論的な話を深くはしたくありませんが、信号対雑音比(SNR: Signal to Noise Ratio)と信号の潜在的な情報の間の数学的関係をイメージしてもらうために、アナログからデジタルへの変換を考えてみてください。例えば、ここでの量子化誤差はノイズのような振る舞いをしています。4ビット深度の情報を得るには、4ビットの量子化が必要になります。4ビットは24dB(4 x 6dB)と同等なので、24 dBのSNRは、理論的に最大4ビットの情報(16の異なる状態や振幅を区別する可能性)を得ることが可能になります。

説明をより視覚的にするために、一般的な波形の代わりに、画像を用いて説明していきます。この画像にも、信号とノイズがあります。x方向とy方向の解像度を、写真をぼかす(最初の3例)ことや、少ないピクセル数を使用する(2番目の3例)ことによって減少させると、外乱(花の背景)が、得たい信号(文字)を消してしまう閾値があることが分かると思います。これらの情報は永遠に失われ、元に戻すことはできません。このような処理は不可逆です。

Gradual reduction of resolution in X and Y resulting in blurring of letters

gradual reduction of pixels - threshold where disturbance blurs the letters

それでは、SNRが低く、外乱に信号が埋もれてしまった場合には何ができるでしょうか。

信号の振幅

SNRは信号電力と雑音電力の比である、と定義されています。この電力は平均電圧の二乗(「有効電圧」) に比例するので、信号か外乱の振幅が変わることで、SNRが大きく変化します。つまり、SNRを先に考慮すべきだということです。

信号振幅を増幅させる可能性がある(つまり、シグナルパスのダイナミックレンジをまだ最大限まで使用していない)のなら、SNRを先に考慮するべきです。昔から、AC信号の振幅を上げる良い方法は、トランスを使用することだといわれてきました。ただ、信号源に可能な限り近づけて行うのが賢明です。もちろん、可能ならば外乱の振幅を下げることもできます(例えば、より効果的なシールドを使用する方法が挙げられます)。外乱が主に熱雑音によって引き起こされているのであれば、温度を下げて信号経路のインピーダンスを低くすると良くなるかもしれません。なぜなら、熱雑音の電力は温度とインピーダンスに比例するためです。しかし、ここで話しているのは絶対温度であることに注意してください。 50℃から25℃へ下げることはノイズを半減させることにはならず、温度やノイズは25 K / 323 K = 8%しか減少しません。一方、インピーダンスを1 MΩから500 kΩに低下させると、ノイズ(電力)は半減します。

フィルタリング

信号周波数が制限されている場合、異なる周波数で外乱を遮断できます。このテクニックは従来の電話通信で用いられたものでした。信号としての人間の声は、大半の情報が3 kHz未満の周波数帯に含まれています。そのため、ローパスフィルタを追加することで、より高い周波数で外乱を遮断し、SNRを向上させることが可能です。ただし、高品質のオーディオ機器では、ハイパスフィルタが低い周波数のゴロゴロと鳴るノイズを遮断することもあります。例えば、ECGやEEGのような医療機器は、ノッチフィルタを使用して主電源の50 / 60 Hzの外乱を取り除いています。

では、視覚的な例に戻るとしましょう。今度はガウスノイズを最初の画像に加えてみました。望んだ情報(文字)は2番目の画像では検出が困難です。しかし、強いローパスフィルタをかけた後(不変色や輝度をx、y方向に低減させる)で、はるかに良いSNRで画像を修復することができました。3番目の写真は、2番目の写真に軽いブラー(ぼかし)フィルタをかけることで作成したものです。また4番目の写真はデジタルローパスフィルタを使用して作成しています。

Gaussian noise added to first image then filtering in other images

信号とそれに付加されている外乱をデジタル化することで、様々なデジタル信号処理手法を適用できるようになります。平均値の計算といったような簡単な手法から始まり、多くのフィルタ処理が使用できます。ただし、デジタル化することで、エイリアシング(後述)のような別の外乱が追加されてしまうかもしれない点に注意してください。

外乱が「ホワイトガウスノイズ」(完全にランダム)とは異なるものの、繰り返しのパターンを含む場合、アダプティブフィルタを適用可能です。フィルタがバックグラウンド(外乱)を「学習」して、信号からそれを抽出します。こういったフィルタは通常、DSP(デジタル信号処理)パスのデジタルフィルタとして実現されます。この記事の最初の例を覚えていらっしゃいますか?パーティーで会話をし、多くの人が並行して話をしている時、あなたの脳は適応フィルタリングを使用して外乱を取り除いているのです。

空間情報を使用:信号の相関と整合フィルタ

信号相関フィルタリングの最適な例として、「パーティー・コミュニケーション」を挙げてみます。私たちには耳が2つあり、両耳からの信号は異なります (「バイノーラル」や「ステレオ」信号と呼ばれます)。この、2つの信号から、それぞれの位相差(「伝播遅延」)を比較することで、音源の方向を検知し、空間情報を抽出できるようになります。私たちの脳はこの情報を使って目を向けている方向からの信号を強化しています。すると、後ろや横からくる外乱を軽減することが可能になるのです。 技術的に言えば、私たちは(音源により近い方の)信号検知後、2つめの信号を観察し、最初の音源と一致する遅延信号を見つけることができます。これが、整合フィルタが行うことなのです(かなり簡潔にまとめていますが)。このフィルタは既知の信号を必要とし、未知の信号と相互に関連付けることで一致するパターンを見つけています。この概念をさらに簡単にしたものがが「ロックインアンプ」です。 このアンプは、信号の位相を知ることで、位相に相関する整流を行います。 位相の同期した信号を増幅する間、位相が不一致の信号をすべて低減させます。一般的にレーダーシステムでは、整合フィルタを使用して、少し前に送った信号(=既知の信号)の小さな反射信号(エコー)を検出しています。

反復トリガー信号

以前私が行った調査の際に、ピコアンペアという極小の生物学的電流を測定していました。アンプのノイズに埋もれたこれらの電流を抽出する唯一の方法は「平均化」と呼ばれる方法しかありませんでした。この微小電流が、私たちが電子的に注入したトリガー信号に対する答えであったため、ランダムなノイズに隠れた、似た反復信号を何十回も測定することができました。これらの測定値をすべて足し合わせると、信号の振幅が反復回数のN回分増加します。トリガーに相関しないランダムなノイズ振幅 (「ホワイトノイズ」)は(平均して)増加しません。SNRが10 log [N²/N]分増加します。例えば、100回の反復では、SNRは20 dB増加します。ちなみに、平均化とは、位相相関増幅に他なりません。

視覚的な例でもう一度見ていきますが、今回はグレースケールのみを使って事象を簡素化しています。最初の画像にはガウスノイズが混ぜられており、これが結果として、生成された2枚目の画像で文字を読みにくくする原因になっています。しかし、このようなノイズ画像を8枚作成(それぞれ異なるノイズで生成)し、それらを混ぜ合わせると、3枚目の画像のような、ノイズ無しの画像が完全に復元されました。

Greyscale with Gaussian noise added to create second image and then combining noise images in the third

つまり、これは単純で効果的なSNRを上げる方法になります。しかし、ノイズに埋もれた小さな信号をシステムが捉える必要がある点に注意してください。極端な例を挙げて説明していきます。

10 Vの振幅を持ったノイズに埋もれた、1 mVの振幅を持つ信号を考えます。入力範囲0~10 V、分解能が10ビットのADCを使っていたら、このシステムで捕捉される最小信号は0V / 1024(約10 mV)です。100万回平均化したとしても、ADCの分解能よりも小さいため、1 mVの信号を見ることはできません。 しかし、16ビットのADCを使用すると、理論上は10V / 65536(約150 µV)程の小さな信号でも捉えることができます。つまり、それが1 mV信号をほぼ3ビットで補足可能です。また、10万回平均化を行えば、信号ノイズの振幅比を1:10,000から10:1に向上できるはずです。平均化には当然、N回分の測定時間が必要であり、応答性が求められる信号検出タスクには不向きな場合が多いです。

エイリアシングによるノイズを回避

エイリアシングとは、元のデータには含まれていないはずの疑似信号のことで、アナログからデジタルへの変換によって生まれてしまいます。入力信号のサンプルを定期的に取得することで変換されますが、サンプリングの間隔が信号の変化に対し遅すぎると、エイリアシングが発生します。視覚的に理解できる例として、ウェブカメラに電動ドリルを映してみてください。次に、ゆっくりとドリルの速度を上げてみます。映像を見てみると、面白い現象が起きていることがわかります。ドリルが減速していたり、回転方向が変わったりしているように見えるのです。この原因は、ウェブカメラが定期的にドリルの写真のサンプルを取得しているためです。ドリルの動きがサンプリング間隔と比較して速すぎると、映像には「オルタナティブ・ファクト(代替的事実)」、つまり、決して起こってはいないけれども現実的に思えるものが映し出されるのです。

信号経路でサンプリングADCを使用するたびに、 サンプル周波数の ½ よりも高い信号周波数はどれも、エイリアシングノイズが混ざった信号になる点に注意が必要です。デルタシグマADCを使用すると、エイリアシングが一層複雑になります(この点について詳しく知りたい場合はTI社の動画をご覧ください)。

これらを解決するために、サンプリング周波数の ½ を大きく下回るカットオフ周波数(「ナイキスト」周波数)を持つアンチエイリアスフィルタ(ローパス)を常に使用してください。ここでは、間違えた選択をした場合の例を考えていきましょう。

14ビットADCには、14 x 6 = 84 dBの動的解像度があります。これは、1 µs あたり1つのサンプルを変換することができます(サンプリング周波数は1 MHz)。ここで、 カットオフ周波数が100 kHzの、2次ローパスフィルタを選択しました。2次フィルタには1ディケードあたり-40 dBのロールオフがあり、1 MHzの信号成分は-40 dB分減少します。この値は、ADCの分解能である84 dBを大きく下回ってしまいます。つまり、信号の最後の7ビットがエイリアシングに埋もれてしまうため、実効分解能が7ビット(42 dB)以上減少することになります(信号が500 kHzよりも高い周波数を含んでいた場合)。14ビットの精度を維持するためには、例えば、-80 dBのロールオフと、50 kHzのコーナー周波数を持つ、4次ローパスフィルタを使用することが正しい選択だと言えます。

この記事がきっかけでアイデアが浮かんだ、もしくは、自分の小さな信号の検出体験を共有したいと思った方は、学びを深めることができるよう、コメントしていただけると幸いです!

Volker de Haas started electronics and computing with a KIM1 and machine language in the 70s. Then FORTRAN, PASCAL, BASIC, C, MUMPS. Developed complex digital circuits and analogue electronics for neuroscience labs (and his MD grade). Later: database engineering, C++, C#, industrial hard- and software developer (transport, automotive, automation). Designed and constructed the open-source PLC / IPC "Revolution Pi". Now offering advanced development and exceptional exhibits.