Vivado HLSでxfOpenCVを使う


概要

xilinxの画像処理実装用のライブラリであるxfOpenCVを用いて画像処理のIPを作成する。
vivado HLSでの画像処理の実装は数年前までHLSビデオライブラリが使われていたが、1,2年前に廃止されxfOpenCVに移行したようだ。
今回は簡単なsobelフィルタを実装してみる。

環境

使用した環境は以下の通り。
・vivado HLS 2019.1

実装

まずはxilinxのgithubからxfOpenCVをダウンロードする。
ダウンロードするとexamples/sobelfilterの中にsobelフィルタのソースコードがある。
この中の画像処理関数をAXIインターフェースに変換するxf_ip_accel_app.cppでラップする。
このソースの中で以下のようにAXIvideoとxfMatを変換している。

xf::AXIvideo2xfMat(_src, imgInput1);
sobel_accel(imgInput1, dstgx, dstgy);
xf::xfMat2AXIvideo(dstgx, _dst);

Csimの結果は以下のようになった。
x軸方向のみであるが、正しくエッジ検出ができている。

また、レイテンシは次のようになった。
サイズを1280×720=921600にしているので妥当な値であろう。