”
ガボール・フィルタ (Gabor Filter) による白線検出4(hls::LineBuffer と hls::Window を使用1)”の続き。
前回は、hls::LineBuffer と hls::Window を使用してGabor Filter を実装し、そのC ソースコードを貼り付けた。今回はそのGabor Filter を評価した。
ZYBO 用のVivado HLS 2016.2 プロジェクトを作成した。

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

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

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


2つの画像は見た目では違いが判らない。
C シミュレーションの様子を示す。

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


Loop2 のLatency が 307209 クロックだった。今回の写真の解像度が 640 x 480 = 307200 なので、1クロックごとに1 ピクセルの画像を処理できている。
リソース的にもZYBO に実装可能のようであるが、まだ、右車線用が残っている。コードを追加して、今回の左車線用と一緒にする予定だ。
- 2016年07月25日 04:11 |
- 白線検出
-
| トラックバック:0
-
| コメント:0