FC2カウンター FPGAの部屋 ガボール・フィルタ (Gabor Filter) による白線検出5(hls::LineBuffer と hls::Window を使用2)

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

ガボール・フィルタ (Gabor Filter) による白線検出5(hls::LineBuffer と hls::Window を使用2)

ガボール・フィルタ (Gabor Filter) による白線検出4(hls::LineBuffer と hls::Window を使用1)”の続き。

前回は、hls::LineBuffer と hls::Window を使用してGabor Filter を実装し、そのC ソースコードを貼り付けた。今回はそのGabor Filter を評価した。

ZYBO 用のVivado HLS 2016.2 プロジェクトを作成した。
GaborFilter_11_160725.png

これで、C シミュレーションを行った。最初にGabor Filter のカーネルを乗算した後で、1/256 倍して、その値がマイナスだったときは絶対値を取るようにした。そのときの出力画像を示す。
GaborFilter_12_160725.jpg

ソフトウェアで実装したときのGabor Filter の画像と違っている。
GaborFilter_4_160718.jpg

値がマイナスだったときは、0 に丸めるようにコードを変更して、もう一度、C シミュレーションを行った。結果を見るとこちらが正解のようだ。
出力されたハードウェアのGabor Filterをかけた画像のtemp_gabor.bmp とテストベンチで作成された浮動小数点演算を用いたtemp_gabor_float.bmp を示す。左がtemp_gabor.bmp だ。
GaborFilter_13_160725.jpgGaborFilter_14_160725.jpg

2つの画像は見た目では違いが判らない。

C シミュレーションの様子を示す。
GaborFilter_15_160725.png

ハードウェア化する整数演算の結果と浮動小数点演算された結果の二乗誤差が 4 以上の時に表示される。ほとんどの二乗誤差は 4 以下で、表示されているのは二乗誤差が 9 だった。つまり、3 離れている。

次にC コードの合成を行った。
GaborFilter_16_160725.png
GaborFilter_17_160725.png

Loop2 のLatency が 307209 クロックだった。今回の写真の解像度が 640 x 480 = 307200 なので、1クロックごとに1 ピクセルの画像を処理できている。

リソース的にもZYBO に実装可能のようであるが、まだ、右車線用が残っている。コードを追加して、今回の左車線用と一緒にする予定だ。
  1. 2016年07月25日 04:11 |
  2. 白線検出
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/3525-3d4f01e2
この記事にトラックバックする(FC2ブログユーザー)