HLS
文章平均质量分 81
FPGA高级综合
希言自然也
记录自己遇到的问题,与君共勉。文章中若有侵权,联系删除。
展开
-
vitis HLS中实现canny算法的IP核
canny边缘检测主要用于提取图像的边缘,是最常用且有效的边缘检测算法。在AMD赛灵思提供的库函数中,使用xf::cv::Canny和xf::cv::EdgeTracing两个函数实现canny边缘提取。本文举例说明如何在vitis HLS 2023.1中实现canny算法。原创 2023-12-23 16:06:29 · 1116 阅读 · 0 评论 -
vitis HLS中实现求平方根的库函数Sqrt解析
一直没有找到相似的算法实现原理,但是在《算法心得-高效算法的奥秘》一书中,找到了类似的“移位并相减”的平方根算法(书中也描述了恢复余数除法和不恢复余数除法,并且计算平方根时采用了与恢复余数除法相似的办法)。不恢复余数除法是对应着恢复余数除法来说的,核心是不再将数据进行恢复,而是在下一次运算时,更改remainder[i] = remainder[i-1]+D*quotient[j]*2^j的运算符号,由加法变为减法或者减法变加法,进行结果修正。此函数中的参数Q类似于quotoent,为最终平方根的结果。原创 2024-01-21 13:45:25 · 988 阅读 · 0 评论 -
VitisHLS中读写任意深度的图像文件
这里可以使用opencv的库函数,也可以使用赛灵思提供的库函数。实际上,赛灵思的 vision库也是调用opencv的imread和imwrite库函数的,只不过封装了一下而已。上面两种方式实现的读写文件的效果是一致的,赛灵思vision库的imread和imwrite额外增加了部分模板函数的内容。最终保存的图像文件也是一模一样的,这里就不粘贴图片结果了。至于8UC3的彩色图像,实测发现输出结果异常,应该是xf::cv::imwrite内部的图像类型有问题,因为我的工程中用不到,暂时不深究了。原创 2024-01-25 14:30:28 · 508 阅读 · 0 评论 -
HLS实现图像膨胀和腐蚀运算--xf_dilation和xf_erosion
我们先定义,需要处理的图片为二值化图像A。图片的背景色为黑色,即像素值为0。图片的目标色为白色,即像素值为1。再定义一个结构元S,结构元范围内所有的像素为白色,像素值为1。原创 2023-12-09 16:59:05 · 303 阅读 · 0 评论 -
【随时更新】vitis HLS使用问题总结记录
最终发现,是linux开辟的存储图像的空间不够。比如10000*2000行的图像,linux仅开辟了起始地址为0x7000_0000,偏移为10MB的内存空间,导致图像异常。原创 2023-11-27 09:45:26 · 1150 阅读 · 0 评论 -
解析xfPackPixels和xfExtractPixels函数
template <int NPC, //每个时钟并行处理的像素数int WORDWIDTH, //组合后数据的位宽int PIXELDEPTH> //输入像素的位宽XF_PTNAME(PIXELDEPTH) * tmp_buf, // 输入变量:像素数据XF_SNAME(WORDWIDTH) & val, //输出变量:打包像素后新的变量uint16_t pos,//需要打包的像素在tmp_buf中的位置positionint16_t loopIter, //迭代次数,确定打包的像素的数量。原创 2023-11-13 14:11:33 · 288 阅读 · 0 评论