留言板

尊敬的读者、作者、审稿人, 关于本刊的投稿、审稿、编辑和出版的任何问题, 您可以本页添加留言。我们将尽快给您答复。谢谢您的支持!

姓名
邮箱
手机号码
标题
留言内容
验证码

一种用于图像翘曲变换的高速缓冲存储器设计

康洁 刘强

康洁, 刘强. 一种用于图像翘曲变换的高速缓冲存储器设计[J]. 北京航空航天大学学报, 2020, 46(4): 808-813. doi: 10.13700/j.bh.1001-5965.2019.0284
引用本文: 康洁, 刘强. 一种用于图像翘曲变换的高速缓冲存储器设计[J]. 北京航空航天大学学报, 2020, 46(4): 808-813. doi: 10.13700/j.bh.1001-5965.2019.0284
KANG Jie, LIU Qiang. A Cache design for image warping[J]. Journal of Beijing University of Aeronautics and Astronautics, 2020, 46(4): 808-813. doi: 10.13700/j.bh.1001-5965.2019.0284(in Chinese)
Citation: KANG Jie, LIU Qiang. A Cache design for image warping[J]. Journal of Beijing University of Aeronautics and Astronautics, 2020, 46(4): 808-813. doi: 10.13700/j.bh.1001-5965.2019.0284(in Chinese)

一种用于图像翘曲变换的高速缓冲存储器设计

doi: 10.13700/j.bh.1001-5965.2019.0284
基金项目: 

国家自然科学基金 61574099

详细信息
    作者简介:

    康洁  女, 硕士研究生。主要研究方向:用于高效平视显示系统的高速缓冲存储器设计

    刘强  男, 博士, 副教授, 博士生导师。主要研究方向:数字集成电路设计、低功耗电路设计等

    通讯作者:

    刘强, E-mail: qiangliu@tju.edu.cn

  • 中图分类号: TN402

A Cache design for image warping

Funds: 

National Natural Science Foundation of China 61574099

More Information
  • 摘要:

    车载平视显示(HUD)系统通过图像翘曲变换将原始平面图像信息显示在挡风玻璃曲面上,原始图像数据的非线性访问会造成存储器访问效率下降。为此,设计了一种高速缓冲存储器(Cache),以最大程度保证像素数据访问的连续性,减少存储器访问次数并提高带宽资源利用率。为优化Cache性能,提出存储空间分离管理技术和地址分级比较技术,提高图像像素在Cache中的存储密度,并节省逻辑资源。此外,提出一种Cache容量动态调整的方法,在保证命中率前提下减少Cache存储资源的使用、降低功耗。实验结果显示,存储空间分离管理技术使存储资源节省25%,地址分级比较技术使逻辑资源节省近10%,Cache容量可以减少75%,且动态功耗减少67.578%,静态功耗减少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容量,降低动态功耗及静态功耗。

    图像翘曲变换过程包括坐标映射和插值运算2个步骤。贝塞尔曲面具有良好的自由特性,仅通过改变控制点的位置及权重就可以改变曲面的形状。HUD系统采用贝塞尔曲面模拟汽车的前挡风玻璃。原始图像与目的图像像素坐标映射关系为

    (1)

    式中:P(x, y)为原始图像像素点;Q(u, v)为目的图像像素点;H为两者之间映射关系。在实际应用中,由已知的目的像素坐标求得原始像素坐标:

    (2)

    (x, y)整数部分为像素坐标,小数部分为像素权重。用于双线性插值的4个像素点坐标为 表示对数据向下取整。图像翘曲变换中像素坐标映射关系如图 1所示。

    图  1  图像翘曲变换像素坐标映射关系
    Figure  1.  Coordinate mapping of pixels in image warping

    输入一个目的像素坐标,得到4个原始像素坐标,插值运算模块依次读取位于原始图像两行内的4个像素点。DDR的实际访问效率与突发式读、写数据的个数N有关,每次从DDR中读取一个像素数据时,实际访问效率变为突发式读取访问效率与突发式读取数据个数N的比值。此外,不同的目的像素可能对应相同的原始像素,对于同一原始像素的反复读取会增加DDR访问次数。

    图像位深度代表色彩等级,即一个像素包含的位数信息M(单位:bit),常见的图像位深度有16、20、24、32 bit等。Cache内的Cache块数为L,给每个Cache块编号0~(L-1)。Cache块深度为一次突发式读取的像素个数N,宽度为图像位深度M,则每个Cache块存储NM bit的原始像素数据。

    分布式RAM基于查找表(Look Up Table,LUT)进行配置,在逻辑密集型应用及小规模应用场景中具有灵活配置优势。而RAM块更适合于大规模应用场景且存储配置较为固定,难以满足Cache块深度配置要求。因此本文采用分布式RAM存储原始像素数据,每个Cache块由M个深度为N的分布式RAM块构成,结构如图 2所示。

    图  2  Cache块存储结构
    Figure  2.  Storage structure of Cache block

    图 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所示。

    图  3  存储空间分离管理技术示意图
    Figure  3.  Schematic diagram of storage separation management technology

    5) 当图像位深度处于3M/4~M之间时,像素数据正常存储。

    访问Cache内存储的数据需进行地址命中判断,通常数据的低若干位地址会直接连到Cache内部,用于确定被访问数据处于Cache中的具体位置,其余地址用于命中比较。访问像素时比较的像素地址位数越多,逻辑资源使用量越大。为节省逻辑资源,对像素地址细化分级。

    图像分辨率为A(列数)×B(行数),则像素地址位数为表示对数据向上取整,共将像素地址分为3级。

    1) 高位地址

    像素地址的高位为高位地址,用于确定被访问像素位于原始图像中的哪一行,高位地址存储在行表中,每行带一个地址比较器对其进行比较。

    2) 中位地址

    除去高位地址和低位地址,剩余的位为中位地址,用于确定被访问数据位于哪一Cache块,每个Cache块带一个地址比较器对其进行比较。

    3) 低位地址

    像素地址的低位为低位地址,直接与Cache块内的分布式RAM块连接,用于确定被访问像素处于Cache块内的具体位置。

    1) 比较行表中的高位地址与图像翘曲变换模块生成的高位地址,生成是否命中的信息。

    2) 将命中行信息转换为命中行编码,简化行表到Cache块之间的命中信息传递关系。

    3) 比较命中行编码与Cache块原本所属行编码,相等则选通相应Cache块上的中位地址比较器。

    4) 比较Cache块对应的中位地址与图像翘曲变换模块生成的中位地址,命中后选通相应的Cache块,根据图像翘曲变换模块生成的低位地址读取像素数据。

    5) 任一级未命中都会生成未命中(miss)信息,DDR更新Cache内数据,并将更新信息传回行表,及时更新行表内高位地址。

    地址命中判断过程如图 4所示。

    图  4  Cache地址分级比较过程
    Figure  4.  Multi-level comparison process of Cache addresses

    为保证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)所示。

    图  5  LRU替换算法示意图
    Figure  5.  Schematic diagram of LRU replacement algorithm

    2) 若当前Cache块命中,则其计数值取最大值为L-1,如图 5(b)所示。

    3) 若当前Cache块之后有Cache块命中,则其计数值减1,如图 5(c)所示。

    每次访问之后,同步调整每个Cache块的计数值,有未命中情况时将队尾计数值为0的Cache块替换掉。通过比较当前Cache块与命中Cache块的计数值确定两者的前后位置关系。

    Cache容量不足会导致部分像素点的误替换现象,Cache容量过大会增加面积和功耗。像素访问过程中,对命中Cache块未改变之前的计数值进行统计,记录最小命中计数值Lmin。每个Cache块带一个控制自身是否关断的使能信号,将所有计数值小于Lmin的Cache块上的使能信号置位,对时钟信号进行关断。具体做法为:将相应Cache块上的使能信号与Xilinx Virtex 7环境内部BUFGCE上的使能端CE进行连接,控制相应Cache块进行关断,进而动态调整使用Cache的容量。

    一定时间内像素访问具有集中性,不会出现相邻访问的像素跨多行的现象。在确定的图像尺寸A(列数)×B(行数)下,存储高位地址的行表行数与Cache块数L及Cache块深度N相对应,最多行。命中情况下对行表内高位地址差值进行统计,确定合理行数,以保证命中率并减少资源使用。

    本文设计的应用于图像翘曲变换的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%。

    不使用Cache时从DDR中读取像素数据。使用Cache后,命中时从Cache中读取,未命中时从DDR中读取。Cache的命中率即为DDR访问次数减少的比例,则使用Cache时DDR访问次数减少了98%以上,数据访问效率得到保证。

    本实验测试加入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 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
    下载: 导出CSV 
    | 显示表格

    本实验测试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
    下载: 导出CSV 
    | 显示表格

    本实验测试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
    下载: 导出CSV 
    | 显示表格

    在HUD系统中图像翘曲变换部分加入Cache可以有效解决像素数据访问连续性问题,极大地降低DDR访问次数,节省图像访问时间。

    1) 通过Cache容量动态调整的手段,在保证Cache命中率的前提下,确定合理且尽可能小的Cache容量,降低功耗。

    2) 针对常见的图像位深度,存储空间分离管理技术可有效节省25%存储资源,Cache块数较少的情况下效果更好。

    3) 地址分级比较技术可有效节省近10%逻辑资源。

    本文提出的应用于图像翘曲变换的Cache及其改进方案同样适用于图像旋转、缩放等图像处理应用。

  • 图 1  图像翘曲变换像素坐标映射关系

    Figure 1.  Coordinate mapping of pixels in image warping

    图 2  Cache块存储结构

    Figure 2.  Storage structure of Cache block

    图 3  存储空间分离管理技术示意图

    Figure 3.  Schematic diagram of storage separation management technology

    图 4  Cache地址分级比较过程

    Figure 4.  Multi-level comparison process of Cache addresses

    图 5  LRU替换算法示意图

    Figure 5.  Schematic diagram of LRU replacement algorithm

    表  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
    下载: 导出CSV

    表  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
    下载: 导出CSV

    表  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
    下载: 导出CSV
  • [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.0591

    DU 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
  • 加载中
图(5) / 表(3)
计量
  • 文章访问数:  762
  • HTML全文浏览量:  146
  • PDF下载量:  136
  • 被引次数: 0
出版历程
  • 收稿日期:  2019-06-10
  • 录用日期:  2019-09-29
  • 网络出版日期:  2020-04-20

目录

/

返回文章
返回
常见问答