空間フィルタ本実験では画像フィルタのうち空間フィルタ(spatial filtering)の処理回路をFPGA上に実装します。空間フィルタとは、ある注目している画素点とその周辺画素の濃度に対してフィルタの係数との畳み込み演算等の計算を行い、その結果を注目画素の新しい濃度とする処理のことです。図にすると以下のようになります。 具体的には次のような演算を行います。Iを入力画像の画素、Cをフィルタの係数(k×kのフィルタ)、出力結果をS,注目画素の座標を(x,y)とすると、これらの畳み込み演算は以下のようになります。 上図では注目画素点とその周囲8画素を用いて演算しています。これを3×3の近傍処理といい、フィルタのサイズは3×3になります。5×5、7×7などのより大きなサイズのフィルタも存在します。フィルタの係数をオペレータと呼び、オペレータの値によってノイズ軽減やエッジ抽出、シャープ化など様々な効果を与えることができます。 応用実験のシステム概要システムの全体構成本実験では、あらかじめ用意したシステムを使って、画像フィルタ処理を行う回路データをFPGAにダウンロードし、回路の動作確認を行います。システムの構成は、ホストコンピュータ(PC)、首振りUSBビデオカメラ(BWC35H01SVA Buffalo社製)、FPGA(xc4vsx55 Xilinx社製)、FPGAを搭載したFPGAボード(RC1000-PP Celoxica社製)。USBビデオカメラ以外に、それぞれをPCIバスでつないだものになっています。 本実験のシステムは以下の手順でデータの処理を行います。
PC、FPGA間のデータ通信の概要FPGAボードの詳細を以下に示します。 PCから送られた画像データは、一旦FPGAボード内の外部RAM (SRAM)に保存されます。外部RAMはFPGAの内部メモリ(Block RAM)より容量が大きいためです。画像データが外部RAMへ保存された後、外部RAMよりFPGAに送られます。FPGAで処理された画像データも同様に、外部RAMを経由し、PCへと送られ、処理結果として画面に表示されます。 画像フィルタ処理回路の設計サンプルプロジェクトの概要今回、皆さんにはデータの入出力やフィルタ処理に必要な回路があらかじめインプリメントされているサンプルプロジェクト(memory.ise)を利用して設計を進めていただきます。ISEからFile > Open ProjectでFilter.iseを選択するか、プロジェクトファイルを直接ダブルクリックすることでサンプルプロジェクトを開いてください。 サンプルプロジェクトは、こちらからダウンロードしてください。 フィルタ処理回路部(filter_unit.v)の詳細filter_unit.vではあらかじめフィルタ処理に必要な回路が記述されています。制御ユニットを除いたfilter_unit.vの回路図を下図に示します。まず、ラスタースキャンされた画素が、1画素ずつfilter_unitの回路に送られてきます。 この回路の主な目的は、注目画素を中心とした3×3の画素値をoperationに与えることです。画像上では、下図のような処理を行っていることになります。 operation.vでは、3×3の画素値を用いてフィルタオペレータとの演算を行います。operation.vはまだ何も記述されていないため、今週の課題でこの演算回路の設計をしていただきます。 回路データ(ビットファイル)の作成フィルタ処理回路が完成したら、実際に動作確認を行うために回路データを作成します。その際、必ずソ ースウィンドウのツリー最上位にあたるmemory (memory-xrc4sx.vhd)を選択し、回路データを作成してください。作成方法は前回の資料を参考にしてください。今回、UCFファイルはあらかじめ用意してあるので作成する必要はありません。 動作確認設計した回路の動作確認を行うため、回路データ(memory.bit)を以下の手順でFPGAを搭載しているPCに転送します。
以上の手順の後、FPGAを搭載しているPCに移動し、ソフトウェアの使い方を参考に、動作確認を行ってください。 課題課題2 |