-
摘要:
车载平视显示(HUD)系统通过图像翘曲变换将原始平面图像信息显示在挡风玻璃曲面上,原始图像数据的非线性访问会造成存储器访问效率下降。为此,设计了一种高速缓冲存储器(Cache),以最大程度保证像素数据访问的连续性,减少存储器访问次数并提高带宽资源利用率。为优化Cache性能,提出存储空间分离管理技术和地址分级比较技术,提高图像像素在Cache中的存储密度,并节省逻辑资源。此外,提出一种Cache容量动态调整的方法,在保证命中率前提下减少Cache存储资源的使用、降低功耗。实验结果显示,存储空间分离管理技术使存储资源节省25%,地址分级比较技术使逻辑资源节省近10%,Cache容量可以减少75%,且动态功耗减少67.578%,静态功耗减少14.060%。
Abstract:The vehicle head-up display (HUD) system displays the source image plane on the windshield surface by image warping. Non-linear access to source image pixels degrades memory access efficiency. To solve this problem, a Cache is designed to ensure pixel access continuity, reduce memory access numbers and improve bandwidth resource utilization. To optimize the performance of Cache, a storage separation management technology and an address multi-level comparison technology are proposed to improve the storage density of image pixels and save logical resources. In addition, a method for dynamically adjusting the Cache capacity is proposed to reduce storage resource usage and power consumption while ensuring the hit rate. The experimental results show that the storage separation management technology saves storage resources by 25%. The address multi-level comparison technology saves logical resources by nearly 10%. The Cache capacity can be reduced by the dynamic adjusting method by 75%, dynamic power consumption is reduced by 67.578%, and static power consumption is reduced by 14.060%.
-
图像翘曲变换是一种常见的图像处理方法,其将几何变换关系应用于图像中的每个像素,使原始平面图像经扭曲形变后变换为目的曲面图像。图像翘曲变换应用广泛,如镜头失真校正[1-2]、立体视觉图像校正[3-4]、生成全景图像的翘曲拼接[5]等。本文主要研究用于车载平视显示(Head-Up Display, HUD)系统的图像翘曲变换,它是将仪表、路况等平面信息显示在汽车的前挡风玻璃曲面上,减少驾驶员因低头查看信息而造成的安全隐患问题。
在已有的实现图像翘曲变换的方案中,使用图形处理器(Graphic Processing Unit,GPU)内置的数千个内核并行处理数据[6-7]时速度快、实时性好,但数据传输过程复杂,开销大。行缓冲器及其改进方案[8-10]不需使用外存储器时,对于高分辨率的图像,片上压力过大;使用外存储器加行缓冲器时,存储资源较为紧张。考虑到实现复杂程度及高分辨率图像可拓展性,本文将原始图像像素存储在双倍速率同步动态随机存储器(Double Data Rate Synchronous Dynamic Random Access Memory,DDR SDRAM)中。
在图像翘曲变换过程中,通过逐点计算已知目的像素坐标获得原始像素坐标,读取原始像素,但读取顺序是非线性的,即读取不是从左到右逐点、从上到下逐行按顺序进行。由于DDR最高效的访问方式是对连续地址的突发式(burst)读写,非线性读取原始像素会极大增加访问次数、降低访问效率。通常使用高速缓冲存储器(Cache)解决以上问题,通用图像Cache[11]功能结构复杂,实现难度大。专门用于图像翘曲变换的Cache[12]效果较好,但更适用于预先确定像素访问顺序而不是逐点计算目的像素坐标,且Cache存储资源使用量较大。
为实现HUD系统中的图像翘曲变换,并解决非线性读取原始像素造成的存储器访问效率下降问题,本文设计实现了一种高效率Cache,研究创新性体现在以下3个方面。①考虑到在小规模应用场景下的灵活配置优势,将原始图像像素存储在分布式随机存储器(Random Access Memory,RAM)中[13]。在Cache存储结构确定的情况下,存储不同图像位深度的像素数据会造成存储资源的浪费,本文提出存储空间分离管理技术来节省存储资源。②Cache地址命中判断过程中进行多位地址比较时,逻辑资源使用量大,本文提出地址分级比较技术来节省逻辑资源。③Cache容量不足会影响命中率,容量过大会增加面积和功耗[14-15],本文提出一种Cache容量动态调整的方法,在保证命中率的前提下减小Cache容量,降低动态功耗及静态功耗。
1. 图像翘曲变换模型分析
图像翘曲变换过程包括坐标映射和插值运算2个步骤。贝塞尔曲面具有良好的自由特性,仅通过改变控制点的位置及权重就可以改变曲面的形状。HUD系统采用贝塞尔曲面模拟汽车的前挡风玻璃。原始图像与目的图像像素坐标映射关系为
(1) 式中:P(x, y)为原始图像像素点;Q(u, v)为目的图像像素点;H为两者之间映射关系。在实际应用中,由已知的目的像素坐标求得原始像素坐标:
(2) (x, y)整数部分为像素坐标,小数部分为像素权重。用于双线性插值的4个像素点坐标为
表示对数据向下取整。图像翘曲变换中像素坐标映射关系如图 1所示。输入一个目的像素坐标,得到4个原始像素坐标,插值运算模块依次读取位于原始图像两行内的4个像素点。DDR的实际访问效率与突发式读、写数据的个数N有关,每次从DDR中读取一个像素数据时,实际访问效率变为突发式读取访问效率与突发式读取数据个数N的比值。此外,不同的目的像素可能对应相同的原始像素,对于同一原始像素的反复读取会增加DDR访问次数。
2. 存储空间分离管理技术
图像位深度代表色彩等级,即一个像素包含的位数信息M(单位:bit),常见的图像位深度有16、20、24、32 bit等。Cache内的Cache块数为L,给每个Cache块编号0~(L-1)。Cache块深度为一次突发式读取的像素个数N,宽度为图像位深度M,则每个Cache块存储N个M bit的原始像素数据。
分布式RAM基于查找表(Look Up Table,LUT)进行配置,在逻辑密集型应用及小规模应用场景中具有灵活配置优势。而RAM块更适合于大规模应用场景且存储配置较为固定,难以满足Cache块深度配置要求。因此本文采用分布式RAM存储原始像素数据,每个Cache块由M个深度为N的分布式RAM块构成,结构如图 2所示。
在图 2所示的存储结构下,存储图像位深度小于M的图像时,每个Cache块内会有一部分存储单元被浪费。针对常见的图像位深度,本文提出存储空间分离管理技术:
1) Cache块宽度设置为可存储图像的最大位深度M。
2) Cache块深度设置为一次突发式读取的像素个数N。
3) 当图像位深度小于M/2时,一个Cache块内存储两次突发式读取的像素。
4) 当图像位深度处于M/2~3M/4之间时,将每个Cache块内的存储单元按照图像位深度分为两组:被使用存储单元3M/4和空闲存储单元M/4。图 2所示地址线直接连接每个分布式RAM块内部的N个存储单元,地址不需要重新分配,每个Cache块连接一个地址比较器对其余像素地址进行比较。Cache块内每个分布式RAM块上带有一个使能信号,被使用存储单元连接原有的地址比较器,空闲存储单元内分布式RAM块上的使能信号置位后,每3个Cache块的空闲存储单元额外连接一个地址比较器,等同于增加一个Cache块。实际上增加的是比较器以及Cache块编号,数据存取方式不变。对于整个Cache,多连接了
个比较器,等同于增加 个Cache块。如图 3所示。5) 当图像位深度处于3M/4~M之间时,像素数据正常存储。
3. 地址分级比较技术
访问Cache内存储的数据需进行地址命中判断,通常数据的低若干位地址会直接连到Cache内部,用于确定被访问数据处于Cache中的具体位置,其余地址用于命中比较。访问像素时比较的像素地址位数越多,逻辑资源使用量越大。为节省逻辑资源,对像素地址细化分级。
3.1 地址分级
图像分辨率为A(列数)×B(行数),则像素地址位数为
表示对数据向上取整,共将像素地址分为3级。1) 高位地址
像素地址的高
位为高位地址,用于确定被访问像素位于原始图像中的哪一行,高位地址存储在行表中,每行带一个地址比较器对其进行比较。2) 中位地址
除去高位地址和低位地址,剩余的
位为中位地址,用于确定被访问数据位于哪一Cache块,每个Cache块带一个地址比较器对其进行比较。3) 低位地址
像素地址的低
位为低位地址,直接与Cache块内的分布式RAM块连接,用于确定被访问像素处于Cache块内的具体位置。3.2 地址命中比较过程
1) 比较行表中的高位地址与图像翘曲变换模块生成的高位地址,生成是否命中的信息。
2) 将命中行信息转换为命中行编码,简化行表到Cache块之间的命中信息传递关系。
3) 比较命中行编码与Cache块原本所属行编码,相等则选通相应Cache块上的中位地址比较器。
4) 比较Cache块对应的中位地址与图像翘曲变换模块生成的中位地址,命中后选通相应的Cache块,根据图像翘曲变换模块生成的低位地址读取像素数据。
5) 任一级未命中都会生成未命中(miss)信息,DDR更新Cache内数据,并将更新信息传回行表,及时更新行表内高位地址。
地址命中判断过程如图 4所示。
3.3 替换算法
为保证Cache命中率,需采用替换算法[16-17]更新Cache内数据。最近最少使用(Least Recently Used,LRU)替换算法根据数据的历史访问记录进行数据替换,Cache中每个Cache块带有一个计数器记录最近被访问的情况,实现方案如下。
对Cache块进行命中排队,每次命中的Cache块直接放到队头,命中Cache块之前的Cache块全部后移一个位置,Cache块都未命中时替换队尾的Cache块。实际设计中不能移动Cache块,所以对Cache块的计数值进行加减操作来等同于排队。Cache块的编号为0~(L-1),初始计数值与编号相同。对于当前Cache块,计数值变化情况如下:
1) 若当前Cache块之前有Cache块命中,则其计数值保持不变,如图 5(a)所示。
2) 若当前Cache块命中,则其计数值取最大值为L-1,如图 5(b)所示。
3) 若当前Cache块之后有Cache块命中,则其计数值减1,如图 5(c)所示。
每次访问之后,同步调整每个Cache块的计数值,有未命中情况时将队尾计数值为0的Cache块替换掉。通过比较当前Cache块与命中Cache块的计数值确定两者的前后位置关系。
4. 动态调整技术
4.1 Cache容量
Cache容量不足会导致部分像素点的误替换现象,Cache容量过大会增加面积和功耗。像素访问过程中,对命中Cache块未改变之前的计数值进行统计,记录最小命中计数值Lmin。每个Cache块带一个控制自身是否关断的使能信号,将所有计数值小于Lmin的Cache块上的使能信号置位,对时钟信号进行关断。具体做法为:将相应Cache块上的使能信号与Xilinx Virtex 7环境内部BUFGCE上的使能端CE进行连接,控制相应Cache块进行关断,进而动态调整使用Cache的容量。
4.2 行表行数
一定时间内像素访问具有集中性,不会出现相邻访问的像素跨多行的现象。在确定的图像尺寸A(列数)×B(行数)下,存储高位地址的行表行数与Cache块数L及Cache块深度N相对应,最多
行。命中情况下对行表内高位地址差值进行统计,确定合理行数,以保证命中率并减少资源使用。5. 结果与分析
本文设计的应用于图像翘曲变换的Cache及其改进方案为在专用集成电路(Application Specific Integrated Circuit,ASIC)环境中实现车载HUD系统的预研工作,当前研究内容均基于现场可编程逻辑门阵列(Field Programmable Gata Array,FPGA)开发环境实现,并对像素访问过程进行软件模拟。测试图像的分辨率为1 920×1 080,Cache可存储最大图像位深度为32 bit。未经改进的Cache包含64个Cache块,每块最多存储64个32 bit的像素数据,Cache容量为128 Kbit。此情况下系统使用5 182个可配置逻辑查找表(Configurable Logic Block LUTs, CLB LUTs),3 743个可配置逻辑寄存器(CLB Registers)和2 048个存储资源(LUTRAM),Cache的命中率为98.786%。
5.1 Cache的使用对实验结果的影响
不使用Cache时从DDR中读取像素数据。使用Cache后,命中时从Cache中读取,未命中时从DDR中读取。Cache的命中率即为DDR访问次数减少的比例,则使用Cache时DDR访问次数减少了98%以上,数据访问效率得到保证。
5.2 Cache容量动态调整技术对实验结果的影响
本实验测试加入Cache容量动态调整技术确定可对部分Cache块进行关断后,Cache块数为64、32、16,Cache块宽度为32 bit,深度为64时,命中率及功耗对比情况,如表 1所示。Cache块数由64块减少至16块后,Cache容量减少75%,命中率不会明显降低,且动态功耗减少67.578%,静态功耗减少14.060%。
表 1 Cache容量动态调整技术对实验结果的影响Table 1. Effect of Cache capacity dynamic adjustment technology on experimental resultsCache块数 命中率/% 动态功耗/W 静态功耗/W 64 98.786 20.076 3.293 32 98.736 11.610 2.988 16 98.716 6.509 2.830 变化量/% -0.071 -67.578 -14.060 5.3 存储空间分离管理技术对实验结果的影响
本实验测试Cache块数分别为64、32、16,Cache块宽度为32 bit,深度为64,存储图像位深度为16~24 bit的像素数据时,使用存储空间分离管理技术前后资源变化情况,如表 2所示。当Cache块数为32和16时,逻辑资源(CLB LUTs和CLB Registers)增减基本持平,Cache块数为64时,逻辑资源增加较为严重。在不同Cache块数下,存储资源(LUTRAM)可节省25%,此技术在节省存储资源方面更有优势。
表 2 存储空间分离管理技术对资源使用情况的影响Table 2. Effect of storage separation management technology on resource usage资源 Cache块数 改进前 改进后 变化量/% CLB LUTs 64 5182 6594 27.248 32 2628 2951 12.291 16 1209 1387 14.723 LUTRAM 64 2048 1536 -25.000 32 1024 768 -25.000 16 512 384 -25.000 CLB Registers 64 3743 3242 -13.385 32 1855 1604 -13.531 16 927 807 -12.945 5.4 地址分级比较技术对实验结果的影响
本实验测试Cache块数分别为64、32、16,Cache块宽度为32 bit,深度为64时,使用地址分级比较技术前后资源变化情况,如表 3所示。在不同的Cache块数情况下,可有效节省近10%的逻辑资源(CLB LUTs和CLB Registers)。
表 3 地址分级比较技术对资源使用情况的影响Table 3. Effect of address multi-level comparison technology on resource usage资源 Cache块数 改进前 改进后 变化量/% CLB LUTs 64 5182 5252 1.351 32 2628 2559 -2.626 16 1209 1217 0.662 CLB Registers 64 3743 3374 -9.858 32 1855 1710 -7.817 16 927 842 -9.169 6. 结论
在HUD系统中图像翘曲变换部分加入Cache可以有效解决像素数据访问连续性问题,极大地降低DDR访问次数,节省图像访问时间。
1) 通过Cache容量动态调整的手段,在保证Cache命中率的前提下,确定合理且尽可能小的Cache容量,降低功耗。
2) 针对常见的图像位深度,存储空间分离管理技术可有效节省25%存储资源,Cache块数较少的情况下效果更好。
3) 地址分级比较技术可有效节省近10%逻辑资源。
本文提出的应用于图像翘曲变换的Cache及其改进方案同样适用于图像旋转、缩放等图像处理应用。
-
表 1 Cache容量动态调整技术对实验结果的影响
Table 1. Effect of Cache capacity dynamic adjustment technology on experimental results
Cache块数 命中率/% 动态功耗/W 静态功耗/W 64 98.786 20.076 3.293 32 98.736 11.610 2.988 16 98.716 6.509 2.830 变化量/% -0.071 -67.578 -14.060 表 2 存储空间分离管理技术对资源使用情况的影响
Table 2. Effect of storage separation management technology on resource usage
资源 Cache块数 改进前 改进后 变化量/% CLB LUTs 64 5182 6594 27.248 32 2628 2951 12.291 16 1209 1387 14.723 LUTRAM 64 2048 1536 -25.000 32 1024 768 -25.000 16 512 384 -25.000 CLB Registers 64 3743 3242 -13.385 32 1855 1604 -13.531 16 927 807 -12.945 表 3 地址分级比较技术对资源使用情况的影响
Table 3. Effect of address multi-level comparison technology on resource usage
资源 Cache块数 改进前 改进后 变化量/% CLB LUTs 64 5182 5252 1.351 32 2628 2559 -2.626 16 1209 1217 0.662 CLB Registers 64 3743 3374 -9.858 32 1855 1710 -7.817 16 927 842 -9.169 -
[1] LEE M, KIM H, PAIK J.Correction of barrel distortion in fisheye lens images using image-based estimation of distortion parameters[J].IEEE Access, 2019, 7:45723-45733. doi: 10.1109/ACCESS.2019.2908451 [2] YUAN X, HU C, CHEN J, et al.Correction of capsule endoscope image distortion based on two-dimensional look-up table[C]//Proceeding of the 11th World Congress on Intelligent Control and Automation.Piscataway, NJ: IEEE Press, 2014: 553-557. [3] SHETE P P, MADHUKAR S D, BOSE S K.A real-time stereo rectification of high definition image stream using GPU[C]//2014 International Conference on Advances in Computing, Communications and Informatics (ICACCI).Piscataway, NJ: IEEE Press, 2014: 158-162. [4] MENG G, XIANG S, PAN C, et al.Active rectification of curved document images using structured beams[J].International Journal of Computer Vision, 2017, 122(1):34-60. [5] TAN Z, ZHANG S, WANG R.Stable stitching method for stereoscopic panoramic video[J].CAAI Transactions on Intelligence Technology, 2018, 3(1):1-7. [6] LIN C, TSAI Y M, WANG W, et al.GPU-accelerated high-resolution image stitching with better initial guess[C]//2018 IEEE International Conference on Consumer Electronics(ICCE).Piscataway, NJ: IEEE Press, 2018: 1-3. [7] MELO R, FALCAO G, BARRETO J P.Real-time HD image distortion correction in heterogeneous parallel computing systems using efficient memory access patterns[J].Journal of Real-Time Image Processing, 2016, 11(1):83-91. doi: 10.1007/s11554-012-0304-3 [8] RYOO J R, LEE E S, PARK H K.Real-time implementation of an LUT-based image warping system[C]//IEEE Intelligence and Safty for Robotics 2013.Piscataway, NJ: IEEE Press, 2013: 1-4. [9] RYOO J R, LEE E S, DOH T Y.An implementation of real-time image warping using FPGA[J].Journal of Embedded Systems & Applications, 2014, 9(6):335-344. [10] LU Y, LUO X, WANG Y, et al.Line buffer reduction for LUT-based real-time image inverse warping[C]//2016 14th IEEE International New Circuits and Systems Conference(NEWCAS).Piscataway, NJ: IEEE Press, 2016: 1-4. [11] GREISEN P, HEINZLE S, GROSS M, et al.An FPGA-based processing pipeline for high-definition stereo video[J].EURASIP Journal on Image & Video Processing, 2011, 2011:18. [12] JOON C Y, RAE R J.Image Cache for FPGA-based real-time image warping[J].Journal of the Institute of Electronics and Information Engineers, 2016, 53(6):91-100. doi: 10.5573/ieie.2016.53.6.091 [13] HAN X, CHEN S L, WU L, et al.Design and verification of distributed RAM using look-up tables in an SOI-based FPGA[C]//2010 10th IEEE International Conference on Solid-State and Integrated Circuit Technology.Piscataway, NJ: IEEE Press, 2010: 306-308. [14] PENG M, LIU X.Adaptive rapid reconfigurable algorithm for low power Cache[C]//International Conference on Computational & Information Sciences.Piscataway, NJ: IEEE Press, 2013: 203-206. [15] UPADHYAY B R, SUDARSHAN T S B.Low power predictive placement Cache scheme for embedded system[C]//2014 International Conference on Embedded Systems(ICES).Piscataway, NJ: IEEE Press, 2014: 250-254. [16] KUMAR S, SINGH P K.An overview of modern Cache memory and performance analysis of replacement policies[C]//2016 IEEE International Conference on Engineering and Technology(ICETECH).Piscataway, NJ: IEEE Press, 2016: 210-214. [17] 杜建海, 吕江花, 高世伟, 等.面向航天器综合测试系统的Web缓存替换策略[J].北京航空航天大学学报, 2018, 44(8):1609-1619. doi: 10.13700/j.bh.1001-5965.2017.0591DU J H, LYU J H, GAO S W, et al.A Web Cache replacement strategy for spacecraft comprehensive testing system[J].Journal of Beijing University of Aeronautics and Astronautics, 2018, 44(8):1609-1619(in Chinese). doi: 10.13700/j.bh.1001-5965.2017.0591 -