FC2カウンター FPGAの部屋 Vivado HLS 2019.2 で xfOpenCV を使用する7(resize 2)
FC2ブログ

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

FPGAの部屋

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

Vivado HLS 2019.2 で xfOpenCV を使用する7(resize 2)

Vivado HLS 2019.2 で xfOpenCV を使用する6(resize 1)”の続き。

前回は、resize をやってみようということで、 xfOpenCV の examples/resize を使用しているが、sobel_filter と同様に、AXI4-Stream 入出力に変更するために xf_resize.cpp を追加した。そのソースコードを貼って、Vivado 2019.2 のプロジェクトを生成した。
今回は、resize の C シミュレーションを行う。

C シミュレーションを行った。
xfOpenCV_58_200301.png

resize/solution1/csim/build ディレクトリを示す。
xfOpenCV_59_200301.png

hls_out.png がほとんど真っ暗だった。

hls_out.png を表示した。
xfOpenCV_60_200301.png

何とか薄っすらと見える。
xfOpenCV_60_200301.png

OpenCV の結果の resize_ocv.png を見ると、正常に縮小されている。
xfOpenCV_61_200301.png

xf_config_param.h の INTERPOLATION を 1 に変更してみよう。1 は、Bilinear Interpolation だ。今までの INTERPOLATION は 2 で、 AREA Interpolation だった。
xfOpenCV_62_200301.png

結果の hls_out.png が完全におかしい。
xfOpenCV_63_200301.png

hls_out.png を表示した。
xfOpenCV_64_200301.png

xf_config_param.h の INTERPOLATION を 0 に変更してみよう。 0 は Nearest Neighbor Interpolation だ。
xfOpenCV_65_200301.png

1 と同様に、hls_out.png が完全におかしい。
xfOpenCV_66_200301.png

resize 後のサイズを上げてみる。
60 x 45 ピクセルから 80 x 60 ピクセルに変更した。 1/10 倍だ。 INTERPOLATION は 2 に戻した。
xfOpenCV_67_200301.png

resize/solution1/csim/build ディレクトリを示す。
xfOpenCV_68_200301.png

hls_out.png の画像が濃くなってきた。
xfOpenCV_69_200301.png

ザイリンクス OpenCV ユーザ ー ガイド UG1233 (v2019.1) 2019 年 6 月 5 日”の 230 ページの”解像度変換/リサイズ (resize)”を見ると、画像の縮小方向は 1/4 以上がサポート範囲だそうだ。 引用する。

解像度変換/リサイズ (resize)
解像度変換は、元の画像のサイズをターゲットの画像サイズに変換するのに使用される方法です。リサイズ関数には、最近傍補間、バイリニア補間、エリア補間など、さまざまな補間方法を使用できます。補間タイプは、API にテンプレート パラメーターとして渡すことができます。指定可能な補間タイプは次のとおりです。
• XF_INTERPOLATION_NN: 最近傍補間
• XF_INTERPOLATION_BILINEAR: バイリニア補間
• XF_INTERPOLATION_AREA: エリア補間
注記: ダウンスケールには 0.25 以上、アップスケールには 8 以下のスケール係数がサポートされます。


ということで、 1/4 でやってみよう。つまり、200 x 150 ピクセルだ。
xfOpenCV_70_200301.png

resize/solution1/csim/build ディレクトリを示す。縮小されているようだ。
xfOpenCV_71_200301.png

hls_out.png を表示した。
xfOpenCV_72_200301.png

200 x 150 ピクセルでは、 1 の Bilinear Interpolation でも、 0 の Nearest Neighbor Interpolation でも、うまく縮小できている。
しかし、HLS Video Library でできたていたサイズがうまくできないので、800 x 600 ピクセルの画像を 60 x 45 ピクセルの画像に変換するという用途には使えない。
ただ、 INTERPOLATION が増えていて、Bilinear Interpolation 以外も OK になったのが良かった。

これからは、HLS Video Library との比較のために、同じ縮小方式の Bilinear Interpolation でやっていこう。
  1. 2020年03月02日 05:26 |
  2. reVISION, xfOpenCV
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/4810-08563fd6
この記事にトラックバックする(FC2ブログユーザー)