More Related Content
Similar to Pynqでカメラ画像をリアルタイムfastx コーナー検出 (20)
Pynqでカメラ画像をリアルタイムfastx コーナー検出
- 2. 2
自己紹介
● 定年間近の大学の技術職員
● 11 年前から「 FPGA の部屋」のブログを書いています
– http://marsee101.blog19.fc2.com/
● 今のところ 3735 記事
● FPGA やそのツール、日記も書いています
● 爺さんなので早起きです
– 午前 3 時か 4 時ころ起きてブログを書いています
- 3. 3
今日の発表
● PYNQ に CMOS カメラを付けて芸をさせました
– FASTX コーナー検出( OpenCV )
– ラプラシアンフィルタ
– アンシャープ・マスクキング・フィルタ
● 今のところベアメタル・アプリケーション
– Python で動かすのに失敗しています
● 誰か教えて。。。
- 4. 4
CMOS カメラ
● MT9D111 (日昇テクノロジー)
– 1,600 x 1,200 ピクセル( UXGA ) 15 fps
– preview mode 800 x 600 (SVGA) 30 fps (使用中)
– MotionJPEG
– パラレル・インターフェース
– レジスタがたくさん、 6 万個くらい
– NDA があってレジスタの使い方がよくわからない?
● PMOD x 2 とのインターフェース基板は自作
– KiCAD で基板のデータを作製
– 実は ZedBoard 用
- 6. 6
● USB カメラとの比較
● USB カメラはつなぐの簡単
– USB ポートにつないでソフトを入れれば OK
● PMOD につけるカメラ
– つなぐためにはハンダ付けが必要
– インターフェース基板を設計する手間
● 利点
– インターフェースを作ればハードウェア処理が簡単にでき
る
– フィルタをカメラのピクセルデータの取り込みデータパス
に入れればメモリ帯域を使用しない
- 7. 7
PYNQ ボード用 Vivado のブロックデザイン
カメラ
D
D
R
camera interface
switch
switch
DMAC
FASTX
laplacian filter
unsharp masking
filter
- 9. 9
高位合成ツールを使用して各フィルタ IP を作成
( Vivado HLS )
● C 、 C++ 、 SystemC から HDL を合成し IP へ
● 関数の引数がプラグマ 1 つでいろいろなインター
フェースを実装
– Vivado HLS の独自インターフェース
– AXI4-Lite Slave
– AXI4 Master
– AXI4-Stream
- 10. 10
Vivado HLS について
● C, C++ で書くと HDL に変換され IP 化(無料、ただしデバイス
限定)
● pragma で動作やインターフェースなどを指定する必要がある
● 今のところ、ハードウェアを知らないと性能が出ない
● 合成済みライブラリ
– hls_math ライブラリ( atan, sin, cos, log, log10, sqrt など)
– HLS ビデオライブラリ( OpenCV の一部をサポート)
– FFT や FIR 、線形代数ライブラリ( cholesky)
– HLS DSP ライブラリ( SDR アプリケーション)
- 11. 11
Vivado HLS の OpenCV 対応ライブラリ関数
AXIvideo2cvMat AXIvideo2CvMat AXIvideo2IplImage cvMat2AXIvideo CvMat2AXIvideo
cvMat2hlsMat CvMat2hlsMat CvMat2hlsWindow hlsMat2cvMat hlsMat2CvMat
hlsMat2IplImage hlsWindow2CvMat IplImage2AXIvideo IplImage2hlsMat
AXIvideo2Mat Mat2AXIvideo Array2Mat Array2Mat
ビデオプロセッシング
AbsDiff AddWeighted And Avg AvgSdv
Cmp CmpS CornerHarris CvtColor Dilate
Duplicate EqualizeHist Erode FASTX Filter2D
GaussianBlur Harris HoughLines2 Integral InitUndistortRectifyMap
Max MaxS Mean Merge Min
MinMaxLoc MinS Mul Not PaintMask
PyrDown PyrUp Range Remap Reduce
Resize Set Scale Sobel Split
SubRS SubS Sum Threshold Zero
OpenCVインタフェース
AXIインターフェース
「Vivado Design Suite ユーザー ガイド 高位合成 UG902 (v2016.4) 2016 年 11 月 30 日」参照
https://japan.xilinx.com/support/documentation/sw_manuals_j/xilinx2016_4/ug902-vivado-hig
h-level-synthesis.pdf
- 12. 12
宣伝
● FPGA マガジン No.14, No.15, No.16, … で Vivado
HLS の使い方を書いています
● HDL ではなく C 、 C++ でお手軽にフィルタ IP などを
書いてみませんか?
● HDL も必要ですが、 C で書いた方が 10 倍くらい書く
時間が短いです
● 皆さんも高位合成ツールを使ってみませんか?