HLS算法分析
HLS中使用C/C++语言作为开发语言,通过高层次综合将其转为IP核,省去了使用硬件语言的开发难度
该项目调用HLS中的hls_opencv视频库,对图像进行处理。
使用HLS要完成的目标:
针对输入图像进行灰度处理,然后做帧差处理,在对帧差图片进行二值化。
最后生成IP核,再使用vivado工具。完成图像处理的硬件加速过程。
针对上述目标,设计如下算法:
1):输入图像一和图像二,两个输入的InputImage ,使用HLS_OPENCV库将图像转换为Mat
hls::AXIvideo2Mat(INPUT_STREAM1, img_01);
hls::AXIvideo2Mat(INPUT_STREAM2, img_02);
2):对两幅图像做RGB2GRAY处理,将RGB图像转换为灰度图,为帧差做处理
hls::CvtColor<HLS_RGB2GRAY>(img_01, img_1);
hls::CvtColor<HLS_RGB2GRAY>(img_02, img_2);
3):对两幅灰度图片做帧差
hls::AbsDiff(img_1, img_2, img_4);
4):对帧差图片做二值化处理,二值化阈值使用OTSU自适应算法
hls::Threshold(img_4,img_5, Thresh,255,HLS_THRESH_BINARY);
参数说明:
Thresh为阈值,255为二值最大值,HLS_THRESH_BINARY 详细见文档
5):将Mat数组转为视频流输出
hls::Mat2AXIvideo(img_5, OUTPUT_STREAM);
针对上述步骤,需提前设定好各类参数,包括:
图像的尺寸
图像的输入输出
输入流的位宽
输出流的位宽
图像Mat数组的大小,图像的通道问题