温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
Vivado_HLS
图像
预处理
IP
设计
王小丽
2023.4电脑编程技巧与维护1概述图像中的边缘信息是图像的基本信息,同时也是图像信息集中的地方。图像中细节信息的提取对图像后续的进一步处理起着至关重要的作用。大雾和雾霾天气出现时,受空气中雾霾小颗粒等的影响,成像设备采集到的图像含有白雾等,无法清晰地看见图像中目标物体因素。为了更好地提取出雾天图像中目标的边缘等信息,需要对图像进行去雾操作。随着物联网技术的迅速发展,图像采集终端设备日益增多,采集的图像数据成倍增长,给数据传输网络带宽和数据存储空间造成一定的负担。为了缓解这一问题,在终端设备附近加入可进行数据实时处理的“边缘计算终端设备”,并提取数据中的关键信息边缘。通过传输图像中的关键信息而不是原图像,不仅能够减轻网络传输带宽压力,还能缓解数据存储压力。雾天图像的预处理需联合去雾处理和边缘检测两种不同的算法处理,针对此图像预处理操作,采用高层次综合工具Vivado HLS将图像预处理两种不同的方法封装在一个IP核中,具有功能继承性高、工程内部连线复杂度低等优点1。2VivadoHLS2.1VivadoHLS 开发流程Vivado HLS是Xilinx公司推出的高层次综合工具,采用C/C+/System语言对HLS进行编程,实现功能和硬件分离,通过不同优化方式找出满足约束和功能要求且花费最小的硬件结构2。Vivado HLS的设计流程如图1所示,Vivado HLS的设计流程主要分为源文件的C代码设计、C源文件的验证、高层次综合并不断迭代优化、RTL输出并打包IP核。源文件的C代码设计指编写实现雾天图像边缘检测功能的C代码;C源文件的验证测试是否实现雾天图像边缘检测功能,是否满足设计的需求;高层次综合表示对C源文件实现的功能是否满足需求,进行相应的综合验证。根据综合报告和需求进行分析,对顶层函数各部分进行迭代优化,直至满足需求;输出是指能够正确实现雾天图像边缘检测功能及资源和时间消耗满足约束即可打包输出IP核。2.2VivadoHLS 优化方法Vivado HLS进行仿真综合时,当不满足时间消耗和资源利用要求时,或者对时间和资源有更高要求时,可以采用Vivado HLS的优化方法对一些消耗时间和资源的代码部分进行优化处理。2.2.1 任意精度数据类型在C/C+中的数据类型一般是8的倍数bit,定义数据类型后,即使数据很小,也和大的数据占相同的内存,造成资源的浪费。针对这种情况,Vivado HLS允许任意精度数据类型,能够定义位数、小数位数等,减少不必要的资源浪费,节省硬件成本。2.2.2for 循环优化对for循环进行优化,主要针对单层循环和嵌套循环进行优化,采用的方法主要是并行、合并循环、展开作者简介:王小丽(1996),女,研究方向为计算机系统结构。基于 Vivado HLS 雾天图像预处理 IP 核设计王小丽(吉利学院,四川 简阳641400)摘要:雾天的出现给图像预处理带来了挑战。同时,随着机器视觉技术的发展,人们对图像预处理的功能集成和时间消耗提出了更高的要求。Vivado HLS 高层次综合工具,采用 C 语言实现雾天图像的预处理 IP 设计,实现图像的去雾和边缘检测处理,将不同图像预处理算法打包在一起,形成 IP 核。关键词:图像预处理;边缘检测;流水线;Vivado HLS 工具图1Vivado HLS的设计流程源文件的C代码设计C源文件的验证高层次综合迭代优化C/RTL协同仿真和评估不满足要求满足要求RTL输出并打包IP核158DOI:10.16184/prg.2023.04.0202023.4电脑编程技巧与维护循环等的优化,降低延迟,提升时间效率。并行优化是指将不同的循环或内层循环做pipeline优化处理;合并循环优化是指将两个满足条件的循环合并成一个循环,一般为循环结束条件一个大一个小;展开循环优化则是将嵌套的内层循环展开。2.2.3 函数优化函数的优化方法有Inline、Allocation、DataFlow等,其中,较为常用的函数优化方法是DataFlow,它可将顺序执行的任务变成并行执行,从而降低延迟,提高时间效率。该方法不仅限于应用函数,还可针对循环进行优化。DataFlow任务之间也可以重叠,即实现并行处理。2.2.4 数组优化在硬件中数组一般以内存的形式来实现,是设计过程中的一个瓶颈问题,为了解决这个问题,对数据进行分割,将数组分割成不同的小块。Vivado HLS提供了Block、Cyclic和Complete 3种不同的对数据分割的方法。采用HLS优化方法多数是消耗资源来提高时间效率,从而达到约束要求。3雾天图像边缘检测方法3.1图像去雾算法图像去雾算法主要有基于非物理模型的去雾算法、基于物理模型的去雾算法和基于深度学习的3种图像去雾算法,如表1所示3。基于非物理模型的去雾算法根据图像本身的特征和统计特征进行图像还原;基于物理模型的去雾算法主要根据图像成像原理和雾霾颗粒散射造成光线衰减的原理,通过积累的含雾图像的先验知识进行图像还原;基于深度学习的去雾算法从还原大气散射模型某些参数和利用数据集训练模型量方面来进行去雾处理3。针对不同去雾算法的特点并考虑在硬件平台上的资源等综合因素,采用的去雾算法是基于直方图均衡化的非物理模型的去雾算法,其基本原理是将图像中起主要作用的灰度值展宽,将对图像中不起作用的灰度值归并,以此增加图像对比度,从而达到图像增强的目的4。直方图均衡化去雾算法一般处理单色道图像,其处理步骤如下2。(1)列出归一化处理图像的灰度级sk。(2)计算各灰度级的像素个数nk,k=0,1,2,L-1,L为灰度级。(3)计算灰度级在图像中出现的频率ps(sk)=nk/N。(4)计算累计分布函数E(si)=ps(si)。(5)确定映射关系sktk=INT(L-1)E(sk)+0.5)/255,INT表示取整数。(6)计算映射后各灰度级的像素数目nk。(7)可得到新的灰度归一化表达式pt(tk)=nk/N,N为输出图像的像素数目,也是原始图像的像素数目,映射前后像素个数不变。3.2边缘检测方法边缘检测方法主要有基于边缘检测的边缘检测算子、基于蚁群算法的边缘检测、基于形态学的边缘检测、基于深度学习的边缘检测等方法。基于边缘检测的边缘检测算子主要是寻找图像中急剧变化的点,即梯度;基于蚁群算法的边缘检测利用蚁群的共同行为让蚂蚁寻找最优路径;基于形态学的边缘检测一般通过膨胀或腐蚀运算作差得出边缘;基于深度学习的边缘检测分为有监督和无监督两类进行边缘计算的研究5,3种边缘检测算法如表2所示。采用的边缘检测方法为Sobel边缘检测算子。Sobel边缘算子是一个离散微分算子,该算子利用大小为33的两个卷积模板Gx和Gy,针对水平x和垂直y的两个方向与原图像进行卷积操作,用两个模板卷积中的最大值替换模板中心像素值,将大于阈值的像素视为图像边缘2,6。x方向和y方向上的卷积模板,如公式(1)和公式(2)所示:(1)(2)通过公式(3)和公式(4)计算出梯度的大小和方向。(3)(4)基于非物理模型的去雾算法直方图均衡化去雾算法、基于Retinex的去雾算法、小波和同态滤波算法基于物理模型的去雾算法基于大气散射模型的去雾算法、基于暗通道先验理论的去雾算法基于深度学习的去雾算法DehazeNet去雾算法、GCANet算法表13种图像去雾算法基于边缘检测的边缘检测算子Sobel、Prewitt、Laplacian、Canny基于形态学的边缘检测膨胀、腐蚀、开运算、闭运算基于深度学习的边缘检测细胞神经网络(CNN)、深度神经网络(DNN)表23种边缘检测算法1592023.4电脑编程技巧与维护4雾天图像预处理 IP 核实现4.1雾天图像预处理功能户外采集的图像一般为彩色图像,彩色图像具有R、G、B 3个颜色通道,即使是在包含大量白色雾的雾天采集的图像,仍然包含R、G、B 3个颜色通道。但直方图均衡化只针对单颜色通道进行,由于雾天图像中包含大量白色雾,如果将雾天彩色图像转为灰度图,那么图像中的信息会丢失。因此,将彩色图像进行R、G、B 3个颜色通道划分,再分别针对不同颜色的通道进行直方图均衡化。直方图均衡化处理流程如图2所示。在进行直方图均衡化处理后,需要对图像进行边缘检测,这里分别将经过直方图均衡化的R、G、B 3个颜色通道进行融合,形成去雾后的彩色图像。在此基础上,将去雾彩色图像复制成两份一模一样的图像,再分别对图像进行X、Y方向的Sobel边缘检测,将X、Y方向的检测结果结合起来,输出检测图像,将图像复制成两份一模一样的,目的是防止Vivado HLS中的数据只能流向一处,否则会造成读空数据的问题。根据以上雾天图像处理过程,在Vivado HLS中编写实现雾天图像预处理功能的C源文件,并编写测试文件,对雾天图像预处理功能文件实现的去雾、边缘检测功能进行测试。测试需要收集含雾的图像,功能测试的测试原图(选取其中3张测试原图)如图3所示,清晰可见所拍摄图像中包含大量的白雾,遮掩了图像中的部分物体。结合测试文件及收集的含雾图像,分别输入测试原图,用于测试雾天边缘检测预处理功能函数是否正确。经过测试,其测试结果如图4所示,对图像中物体的边缘进行检测,边缘信息多呈现白色,因为是对彩色图像进行检测,所以有些边缘会呈现出彩色的效果,测试雾天图像预处理功能是否正确。4.2雾天图像预处理迭代优化通过测试文件,验证雾天图像预处理功能正确后,观察其是否满足约束条件。对整个雾天图像预处理功能函数进行仿真综合,查看综合分析报告1,如图5所示。对进行优化前后的时间和延时进行对比。图5(a)中是未对函数、循环等进行优化的时间和延迟;图5(b)中是采用函数优化DataFlow、循环展开(unroll)等优化方法优化后的时间和延迟。通过对比分析,优化前后总的时间未变换,但延迟和间隔优化后明显少于优化前。除对时间的优化前后进行简单分析外,还需要对前后的资源占用比例等进行分析。综合分析报告2如图6所示,是优化前后的资源消耗的对比。图6(a)中是对未优化的资源利用;图6(b)是优化后的资源利用,对比前后的资源,优化后的数字信号处理(DSP)减少了,但增加了查找表的利用率,前后的触发器、块内存等均未发生变化。对比两个解决方法,选择解决方法2来导出IP核。执行Solution/Export RTL命令,得到IP核的封装文件。5结语随着雾天的增多,雾天图像的预处理在图像处理领域中越来越重要,对于图像的深度处理更有着不可或缺图2直方图均衡化处理流程图3功能测试的测试原图(a)(b)(c)图4测试结果(a)(b)(c)图5综合分析报告1(a)(b)(a)(b)图6综合分析报告2彩色图像拆分RGB直方图均衡化直方图均衡化直方图均衡化合并去雾彩色图像1602023.4电脑编程技巧与维护比对数据库中的身份信息,确定人员身份。32生成数据表格采用xlrd库,调用读取,将最后结果写入Excel表格,写入字段分别为“姓名”“时间”“结果”“身份证号”,识别完毕后自动输出。图像识别输出结果截图,如图4所示。4文字识别方法与结果分析该软件识别的正确率在98%以上。由于检测结果截图取自不同的手机,并且图片的质量、像素和尺度都不同,因此存在识别误差。经由图像预处理和DB算法检测匹配后,正确率进一步提高。5结语对基于深度学习的文本检测和文字识别方法进行理论分析与实验。首先,对图像进行预处理,采用Berson二值化方法,通过膨胀和腐蚀进行图像形态学去噪;其次,对预处理后的图像采用Canny算法检测文本区域,根据身份证信息文本的特征检出并截取身份信息区域;最后,通过DB算法和CRNN算法引擎对检测报告文字进行检测识别。5202个图像文字的识别实验表明,对文字区域检测截取的准确率为9802;在对图像文字结果的识别中,对常规字体的识别准确率可以达到98.02,这对进一步研究提高识别效果具有参考意义。参考文献1王栋.人工智能OCR技术的应用研究J.电子技术与软件工程,2022(1):122-125.2王珂,杨芳,姜杉.光学字符识别综述J.计算机应用研究,2020,37(S