FPGA活用回路&サンプル記述集(3) ―― ビデオ信号処理回路
tag: 半導体 電子回路 ディジタル・デザイン
技術解説 2009年3月25日
●○● Column ●○●
メディアン・フィルタ
ソフトウェアの授業などで「ソート」の課題を出されたことがありませんか? 読者の中にも「バブル・ソート」など,ソート・アルゴリズムの名称をご存じの方も多いのではないかと思います.
日本語でソートは「整列(せいれつ)」と訳されています.データを指定された順序に並べ替えることをソートといいます.ソート・アルゴリズムには,さまざまなものがあります.例えば,
- バブル・ソート
- 選択ソート
- 挿入ソート
- マージ・ソート
- ヒープ・ソート
- クイック・ソート
などです.
このように,いろいろなアルゴリズムが存在し,「アルゴリズム」というものを学習するのに最適なので,情報工学やソフトウェア工学の入門的題材として広く用いられています.囲碁のルールがシンプルであるように,ソートは単純な課題なのですが,すべてにおいて効率的な「神の手」の存在しない奥深さがあります.
参考文献(1)によれば,バブル・ソートの考え方は,ソフトウェア工学のれい明期から既に存在していたようです.読者の方など多くの方にとって,ソート・アルゴリズムは既に解決済みと考えている場合もあるようです.しかし,ソート・アルゴリズムは現在でも研究され続けています(2).
● ハードウェアなら瞬時にソートできる...メディアン・フィルタ
ここでメディアン・フィルタの話をさせていただきます.メディアン・フィルタとは,データの中間値(メディアン)を出力するフィルタです.3×3サイズのメディアン・フィルタの場合,9個のデータの中間値は5番目(大きいほうからでも小さいほうからでも中央値なので同じ)のデータを出力すればよいことになります(図3-A).このため,メディアン・フィルタを実現するにはソート処理が必要になります.このソート処理をハードウェア記述言語を用いて,FPGAで実現しています.ハードウェアで実現するメリットは,処理を並列に行うことにより,原理的に逐次処理であるソフトウェアよりも高速に処理できることです.ソフトウェアでは少ないデータ数でも複数のマシン・サイクルが必要になりますが,ハードウェアならデータ数によっては瞬時にソート処理を実行できます.
図3-A 3×3メディアン・フィルタの動作イメージ
ハードウェアによるソート処理はリアルタイム処理が必要になる画像処理などの分野で必須になります.ディジタル画像処理における,このようなメディアン(中間値)フィルタがその一例です.ソート処理はソフトウェアで実現した場合,原理的に処理時間を多く必要とします.ハードウェアで並列に処理することにより,1ピクセル分のデータ処理を1ピクセル・クロック時間内で処理できます.このためメディアン・フィルタのような重たい動画処理についても,簡単にリアルタイムで処理できます.
● ノイズの影響が少ないデータを選択するメディアン・フィルタ
次にメディアン・フィルタがどのような場合に用いられているか説明します.メディアン・フィルタは,ディジタル画像処理を行う際に,ノイズ除去などを目的として最もよく使われています.しかし,動作の単純な平均値フィルタなどに比較して処理時間が多く必要になってしまいます.メディアン・フィルタが平均値フィルタと比較して,ノイズ除去においてどれほど効果があるのかは写真3-1に示した通りです.
電気的なサージ・ノイズや電磁的な外乱ノイズなどによる影響はは,周期的な波であるため機器が出力する画像データに極端に大きな値や極端に小さな値のデータが周期的にばらまかれたようなノイズが重畳されることが多くあります.また,撮影時のコンディションやそのほかの要因により,同じようなノイズ状態となるケースもあります.
メディアン・フィルタは,このようなノイズに最も効果を発揮します.このフィルタの動作では,ノイズが重畳されていないと考えられる中間値データ(正しいピクセル・データ)を選別して出力しています.ノイズが重畳していると考えられる極端に大きな値を持ったデータや極端に小さな値のデータ(正しくないピクセル・データ)は,このフィルタの動作により除去されることになります.
また,このフィルタの動作はソート処理を行い,中間値データを選択するだけですから,ピクセル・データそのものの値を「改ざん」しません.このため,元画像に近いデータを画像がぼけることなく復元することが可能になります.
筆者らは近日中にAltera社およびXilinx社のFPGA上で動作可能なダウンロード・ファイルを用意する予定です.アップデータなどの更新情報はディーエスオーのサーバに置かせていただく予定です.