// fastx_2.cpp
// 2016/04/02 by marsee
// 2016/04/09 : FAST Corners Detection
// 2017/02/03 : 元の写真を入れないで、コーナー検出の点だけ表示した
#include "fastx.h"
void fastx_corner_det(AXI_STREAM& INPUT_STREAM, AXI_STREAM& OUTPUT_STREAM, int rows, int cols, int threshold) {
#pragma HLS INTERFACE ap_stable port=threshold
#pragma HLS INTERFACE s_axilite port=threshold
#pragma HLS DATAFLOW
#pragma HLS INTERFACE ap_stable port=cols
#pragma HLS INTERFACE ap_stable port=rows
#pragma HLS INTERFACE s_axilite port=return
#pragma HLS INTERFACE axis port=OUTPUT_STREAM
#pragma HLS INTERFACE axis port=INPUT_STREAM
#pragma HLS INTERFACE s_axilite port=cols
#pragma HLS INTERFACE s_axilite port=rows
RGB_IMAGE img_0(rows, cols);
RGB_IMAGE img_1(rows, cols);
RGB_IMAGE img_1_(rows, cols);
#pragma HLS STREAM variable=img_1_.data_stream depth=8192
// FASTX に最大 7 ラインのレイテンシ、Dilate に最大 3 ラインのレイテンシがあるそうだ
// 1ラインのピクセル数X10 ラインのFIFO バッファが必要 800x10 < 8192 (2の13乗)
// http://japan.xilinx.com/support/documentation/application_notes/xapp1167.pdf
// の 10 ページ参照
GRAY_IMAGE img_1g(rows, cols);
GRAY_IMAGE mask(rows, cols);
GRAY_IMAGE dmask(rows, cols);
GRAY_IMAGE img_2g(rows, cols);
RGB_IMAGE img_3(rows, cols);
RGB_PIXEL color(255, 0, 0);
hls::AXIvideo2Mat(INPUT_STREAM, img_0);
hls::Duplicate(img_0, img_1, img_1_);
hls::CvtColor<HLS_BGR2GRAY>(img_1, img_1g);
hls::FASTX(img_1g, mask, threshold, true);
hls::Dilate(mask, dmask);
//hls::PaintMask(img_1_, dmask, img_3, color);
hls::CvtColor<HLS_GRAY2BGR>(dmask, img_3);
hls::Mat2AXIvideo(img_3, OUTPUT_STREAM);
}
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
- | - | - | - | - | 1 | 2 |
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 | - | - | - | - | - | - |