一种基于Canny算法的图像上采样的硬件计算系统及方法与流程

文档序号:32701557发布日期:2022-12-27 22:51阅读:88来源:国知局
一种基于Canny算法的图像上采样的硬件计算系统及方法与流程
一种基于canny算法的图像上采样的硬件计算系统及方法
技术领域
1.本发明涉及图像处理领域,特别是涉及一种基于canny算法的图像上采样的硬件计算系统及方法。


背景技术:

2.随着各类图像技术发展,当今显示分辨率需求越来越高,逐步向超高清分辨率4k或8k发展。然而gpu价格高昂,性能普遍不足以在此分辨率上流畅渲染图片。因此图像上采样技术在图像处理系统中的需求越来越高。
3.图像上采样技术用于将图像由低分辨率图像上采样为高分辨率图像,对于高倍数上采样,目前的传统插值方法,如双线性插值,双三次插值等,由于算法自身特性会获得较为平滑模糊的插值图像,对于4倍或以上的放大更是高频信息丢失严重,容易在图像的边缘出现锯齿,失真等现象。目前的基于神经网络的上采样方法,如基于srgan的上采样方法,对图像边缘的锯齿现象改善效果好,细节远高于传统插值方法,但是神经网络在硬件上资源消耗大,计算时间慢而无法达到实时性要求。
4.随着图像尺寸的增加,一般的基于边缘替代的上采样算法由于需要复杂的类似于图卷积的中间计算和较多的运算资源,常常无法通过集成电路设计实现。
5.中国专利申请,申请号cn201310412603.8,公开日2016年6月8号,公开了一种边缘导向的自适应图像插值方法及其vlsi实现装置,该专利计算源图像像素点梯度幅值和梯度方向,通过比较梯度幅值与局部自适应阈值获得边缘信息,边缘方向为梯度方向的垂直方向;将边缘方向分类,利用边缘信息进行滤波,将图像分为规则边缘和非边缘区域。规则边缘区域沿边缘方向插值,且根据边缘信息的分类分别采用基于局部梯度信息的改进双三次插值方法、斜向双三次插值方法、斜向双线性插值方法进行图像插值;非边缘区域采用基于局部梯度信息的改进双三次插值方法进行图像插值;该发明的装置包括边缘信息提取模块,自适应插值模块、输入行场以及缩放后行场同步控制模块。该发明能显著提高高倍率缩放下的图像插值效果,有利于集成电路架构实现。但是,该专利提出的vlsi实现装置由于计算时存储了整张图片的数据和对应中间结果,因而在处理大尺寸图像时,存储资源消耗很大,导致生产成本高。


技术实现要素:

6.1.要解决的技术问题
7.针对现有技术中存在的4倍或以上图像上采样操作对硬件资源消耗大、计算时间慢、无法简单通过集成电路设计实现的问题,本发明提供了基于canny算法的图像上采样的硬件计算系统和方法,它能以低硬件资源消耗为代价保证图像边缘和细节的改善,充分利用存储资源实现多路并行计算以提高运算速度实现对图像的实时处理,能够通过集成电路实现。
8.2.技术方案
9.本发明提出了一种基于canny算法的图像上采样的硬件计算系统,该系统包括ip控制单元,sram存储模块,图像边界插值控制模块,线性插值计算单元,图像核心插值控制模块,双三次插值单元,合成梯度计算单元,边缘判断单元,边缘替换单元,共三个控制模块,一个存储模块和五个计算单元。
10.ip控制单元:负责对算法流程的整体控制。
11.sram存储模块:存储计算过程中的中间结果。
12.图像边界插值控制模块:负责进行图像上边界和下边界情况的计算流程控制,通过读取sram存储模块中的数据,调用线性插值计算单元进行计算并将结果数据存入sram的结果区。
13.线性插值计算单元:负责对输入的源数据进行双线性插值并输出插值结果。
14.图像核心插值控制模块:负责进行图像的核心部分的图像插值计算流程控制,控制sram存储模块读写并调用各类计算模块进行计算。
15.双三次插值单元:负责进行双三次插值并输出插值结果。
16.合成梯度计算单元:负责将sram存储模块的中间结果区的数据进行水平与垂直的梯度计算并且计算出合成梯度的模长与相角。
17.边缘判断单元:负责判断输入数据是强边缘,弱边缘还是非边缘。
18.边缘替换单元:负责对每个像素点根据对应边缘标签执行相应替换操作。
19.基于以上图像上采样的硬件计算系统,本发明提出了一种基于canny算法的图像上采样的硬件计算方法,步骤如下:
20.ip控制单元调用图像边界插值控制模块对图像的上边界进行一般插值计算;
21.ip控制单元调用图像核心插值控制模块,依次使能双三次插值单元、合成梯度单元、边缘判断单元、边缘替换单元和双三次插值单元,对图像核心部分采用核心插值算法完成核心插值计算;在一次上采样过程中重复多次调用图像核心插值模块;
22.ip控制单元调用图像边界插值控制模块对图像的下边界进行一般插值计算;
23.所述一般插值计算及核心插值计算过程中,计算源数据从sram存储模块中读取,结果数据和计算的中间结果存储入sram存储模块中。
24.在进一步的实施例中,上采样方法为,对整张lr图像以逐行计算的形式进行,对图像核心部分采用核心算法插值;对图像上边界和下边界进行一般插值,以保证图像尺寸完整。
25.在进一步的实施例中,所述的一般插值算法为双线性插值算法;所述的核心插值算法是基于canny边缘检测与修正算法逐行进行计算的,图像核心插值模块为每次输入9行lr像素值并输出4行hr上采样结果,核心插值算法重复多次调用图像核心插值模块以得到完整高分辨率图像hr。图像核心插值模块的插值方式为对输入像素值先进行一次双三次插值将所述图像的长和宽同时放大到原有图像的两倍,再利用canny算法检测边缘并在此基础上进行边缘优化,最后再进行一次双三次插值将得到的图像长和宽同时放大到两倍以得到最终hr图像。
26.在进一步的实施例中,所述的图像核心插值模块中的canny算法检测边缘并优化的过程具体为:
27.sobel滤波:合成梯度计算单元先采用sobel算子对图像进行滤波,计算出每个像
素点水平方向梯度和垂直方向梯度;然后计算出每个像素点的合成梯度,包括其模长g和相角sita;
28.边缘判断:边缘判断单元先对合成梯度进行非极大值抑制操作,然后进行双阈值判断,输出每个像素点的边缘标签,所述边缘标签包括强边缘标签、弱边缘标签和非边缘标签;
29.边缘替换:边缘替换单元根据每个像素点对应的边缘标签执行相应替换操作。
30.在进一步的实施例中,所述的图像核心插值模块中的canny算法检测边缘并优化的过程中sobel滤波步骤中包括:合成梯度计算单元的输入为待计算像素点与周围8个点对应的lr像素值,输出为待计算像素点的合成梯度模长g和合成相角sita。合成梯度计算单元内部包含了cordic计算单元,采用计算模式为在圆周系统下的向量模式,并添加了负向迭代以满足收敛域要求,设置cordic计算单元的输入x0为水平梯度g_0,y0为垂直梯度g_90,z0为0,得到输出xn为合成梯度的模长yn为相角
31.在进一步的实施例中,所述的图像核心插值模块中的canny算法检测边缘并优化的过程中边缘判断步骤中包括:边缘判断单元的输入为待计算像素点与周围8个点对应的合成梯度的模长g,待计算像素点的合成梯度相角方向sita,输出为待计算像素点的canny边缘类型。
32.在进一步的实施例中,所述的图像核心插值模块中的canny算法检测边缘并优化的过程中的边缘替换步骤中包括:边缘替代单元的输入为待计算像素点与周围8个点对应的第一次双三次插值结果像素值,待计算像素点与周围8个点对应的边缘标签和待计算像素点的合成梯度相角方向sita,输出为待计算像素点的canny边缘替换结果。
33.在进一步的实施例中,在计算中获得的相角方向sita分为4类方向,分别为-22.5度~22.5度,22.5度~67.5度,67.5度~112.5度和112.5度~157.5度。由合成梯度计算单元输出的sita结果为标签值以减少中间结果存储比特数,0~3分别代表以上四类方向。
34.在进一步的实施例中,在边缘替换单元中,若为边缘点则会根据待求像素点的合成梯度相角方向进行相应修正插值,若为非边缘点则不会进行修正,直接引用原始值作为替换值输出。
35.在进一步的实施例中,对于rgb图像来说所有硬件计算过程为三通道并行计算,在所有计算过程中均以流水线形式将数据送入计算单元进行计算。存储模块的设计方式为基于一次输入九行lr,输出四行hr的情况,只需能够存储这种尺寸计算下对应的源数据,结果数据和图像核心插值算法计算的中间结果。
36.在进一步的实施例中,实现功能为对输入长为m宽为n的(lr)rgb图片上采样为长为4*m宽为4*n(或大于4的整数倍,通过调整双三次插值单元的放大倍数而改变)的高分辨率(hr)rgb图像。
37.3.有益效果
38.本发明实现了基于canny算法的图像上采样的硬件计算系统,本专利中提出的类似于将图片分条计算的方式,每次只需存储图片的一部分,循环多次计算,极大的减少了存储资源消耗。
39.本发明核心插值算法重复多次调用图像核心插值模块以得到完整高分辨率图像
hr,因此可以逐行进行插值计算。本发明设计的硬件系统,图像核心插值模块每次输入9行lr像素值并输出4行hr上采样结果,让每一行图像计算相互不影响。存储模块的设计只需能够存储每一条图像的计算下对应的源数据、结果数据和图像核心插值算法计算的中间结果,不必将整张图像均存入中间结果存储区,这显著降低了硬件资源消耗。
40.同时逐行计算能够提高sram存储模块的计算效率,克服了由于图卷积计算的特性导致每次图像尺寸会逐次减小而无法多行并行计算的问题,若有并行需求也可进行不同行的并行计算而不需修改核心算法。可在低面积消耗下完成图像上采样的硬件加速计算,在图像处理与视频通信等领域中具有广泛的应用前景。本发明的硬件实现中,所有计算均可以流水线形式进行相互不冲突,包括不同类型计算单元间,同类计算的不同像素点间。全流水线形式计算可以极大的减少计算总周期数,能够在低延时下完成图像上采样的硬件计算。
41.本发明的核心算法采用的是先进行一次双三次插值,在2倍放大图像的基础上进行边缘检测优化之后再进行一次双三次插值放大,相比于在双三次插值放大到4倍后再进行边缘检测优化降低计算量为原来的四分之一。这种改善方式能够在降低计算量的同时依然保持着较好的改善效果。
附图说明
42.图1为基于canny算法的图像上采样的硬件计算系统的模块示意图;
43.图2为基于canny算法的图像上采样的硬件计算系统的工作流程示意图;
44.图3为图像边界插值控制模块的工作流程示意图;
45.图4为图像核心插值控制模块的工作流程示意图;
46.图5为图像核心插值控制模块工作过程中图像尺寸变化图;
47.图6为两次图像核心插值计算情况滑动示意图;
48.图7为双三次插值计算单元的输入输出位置示意图;
49.图8为合成梯度计算单元的输入输出位置示意图;
50.图9为边缘判断单元的输入输出位置示意图;
51.图10为边缘替换单元的输入输出位置示意图;
52.图11为本系统的存储模块中三个bank存储同一项数据方式。
具体实施方式
53.下面结合说明书附图和具体的实施例,对本发明作详细描述。
54.在下文的描述中,给出了大量具体的细节以便提供对本发明更为彻底的理解。然而,对于本领域技术人员而言显而易见的是,本发明可以无需一个或多个这些细节而得以实施。在其他的例子中,为了避免与本发明发生混淆,对于本领域公知的一些技术特征未进行描述。
55.实施例一
56.提出了一种基于canny算法的图像上采样的硬件计算系统。
57.如图1所示,该系统包括:
58.ip控制单元:负责对算法流程的整体控制。
59.sram存储模块:存储计算过程中的数据。
60.图像边界插值控制模块:负责进行图像上边界和下边界情况的计算流程控制,通过读取sram存储模块中的数据,调用线性插值计算单元进行计算并将结果数据存入sram的结果区。
61.线性插值计算单元:对输入的源数据进行双线性插值并输出插值结果。
62.图像核心插值控制模块:负责进行图像的核心部分的图像插值计算流程控制,控制sram存储模块读写并调用各类计算模块进行计算。
63.双三次插值单元:进行双三次插值并输出插值结果。
64.合成梯度计算单元:将sram中间结果区的数据进行水平与垂直的梯度计算并且计算出合成梯度的模长与相角。
65.边缘判断单元:判断输入数据是强边缘,弱边缘还是非边缘。
66.边缘替换单元:对每个像素点根据对应边缘标签执行相应替换操作。
67.具体的,所述一种基于canny算法的图像上采样的硬件计算系统的sram存储模块,其中一种设计方式为:存储模块的设计基于一次输入九行lr,输出四行hr的情况,只需能够存储这种尺寸计算下对应的源数据结果数据和图像核心插值算法计算的中间结果。
68.存储方式为逐行存储,对于每个计算单元来说,其要求输入以矩阵窗口形式输入,而计算窗口在数值移动中步长为1,类似于步长为一的3*3卷积核进行卷积计算。如图11所示,对于窗口大小为3*3的计算来说,每次需多输入3个新的值并将原来的值进行平移即可,所以这类计算的输入以3个bank来隔行存储。如下图存储方式。对于4*4的计算窗口(双三次插值)同理,就需要4个bank进行存储。并且由于本设计时rgb三通道并行计算,因此基本像素的数据位宽设置为24,同时存储三通道信息。对于合成梯度的模长和相角,边缘信息标签等数据位宽不是24的设计对应的读写宽度以减小不必要的硬件存储面积消耗。
69.实施例二
70.基于实施例一提出的一种基于canny算法的图像上采样的硬件计算系统,本实施例提出基于该系统的一种基于canny算法的图像上采样的硬件计算方法。具体的,上采样方法为,对整张lr图像以逐行计算的形式进行,对图像核心部分采用核心算法插值;对图像上边界和下边界进行一般插值,以保证图像尺寸完整。过程如图2。
71.第一步:运算开始后,ip控制单元第一次读取ddr中9行源数据存入sram存储模块的bank0~bank3。
72.第二步:调用图像边界插值控制模块,进行图像上边界插值计算。
73.第三步:ip控制单元将bank18~bank21的结果数据读出存入ddr存储。
74.第四步:ip控制单元进入循环,每次读取ddr中图像核心插值需求的9行源数据,存入bank0~bank3。
75.第五步:调用图像核心插值控制模块,进行图像核心插值计算。
76.第六步:ip控制单元将bank18~bank21的结果数据读出存入ddr存储。
77.第七步:判断循环是否结束,若计算次数t小于预设的times,则重复第4~7步;若计算次数t等于times,则跳出循环进行第8步.
78.第八步:ip控制单元走出循环,读取ddr中图像下边界插值情况需求的5行源数据,存入bank0~bank3。
79.第九步:调用图像边界插值控制模块,进行图像下边界插值计算。
80.第十步:ip控制单元将bank18~bank21的结果数据读出存入ddr存储。并传出ip计算结束信号
81.对于一次完整的上采样计算,图像上下边界插值只会进行一次,图像核心插值则会进行预设的times次,调用一次图像核心插值模块将完成四行hr的计算。
82.具体的,图像边界插值控制模块的计算流程图如图3所示:
83.第一步:顺序读取sram存储模块中的bank0~bank3源数据,以流水线形式传入双线性插值计算单元计算,顺序存入sram存储模块中的bank4~bank6。
84.第二步:顺序读取bank4~bank6中间结果数据,以流水线形式传入双线性插值计算单元计算,顺序存入bank18~bank21。
85.第三步:将bank18~bank21中间结果全部读出并存入ddr,并判断是否全部计算完成,若未完成,则跳回至第二步继续计算过程;若完成则结束此模块运算。
86.图像边界插值控制模块同时能实现图像上边界和下边界的插值计算,因为上下边界的计算方法在实例中均设置为双线性插值,只是计算行数不同,上边界插值计算输出的hr行数为15行,下边界插值计算输出hr行数为17行,只需配置输出计算次数不同即可用一个图像边界插值控制模块实现两种情况。
87.每次双线性插值得到的是长和宽均放大两倍的结果,因此需总计两次线性插值运算。在实例中设计的存储模块的bank18~bank21大小只能存下四行hr像素矩阵,因此每次算入4行结果数据后给ddr控制模块发送信号,将bank18~bank21结果读出至ddr,结束后跳回至读取bank4~bank6步骤循环进行直至本应输出的15行或17行结果数据全部搬出至ddr,跳出循环,发出结束信号。
88.进一步的,图像核心插值控制模块的计算流程图如图4所示:
89.一次图像核心插值计算中,需要用到9行lr像素值进行计算。每次计算为以某一个特定滑窗在图片中移动,类似于图卷积计算,得到中心点的计算值,每次图像尺寸会逐次减小。
90.如图5所示,实例中的lr图像大小设置为10*13以方便说明,通过双三次插值计算由lr得到

号方框内的所有mr像素值(圆圈)(大小为11*20)由于后续算法需求,只计算前11行。
91.之后进行canny边缘检测与修正过程:
92.第一步:将第一次双三次插值中间结果mr(11*20)与梯度卷积核卷积后,紧接着用cordic求得合成梯度的模长g和相角sita,得到减小一圈的g和sita矩阵(9*18),对应为

号框内。
93.第二步:根据g和sita矩阵进行非极大值抑制得到d矩阵,此步不缩小矩阵尺寸。然后根据d矩阵,进行双阈值判断,得到减小一圈的阈值信息gre矩阵(7*16),对应为

号框内。
94.第三步:根据gre矩阵,进行弱边缘迭代修正,判断每个弱边缘点周围的8个点中是否有强边缘,若有,将其修正为强边缘,若无,将其修正为非边缘。得到缩小一圈的修正边缘信息矩阵(5*14),对应为

号框内。
95.第四步:根据修正边缘信息矩阵,利用与之对应位置的第一步通过双三次计算得
到的mr矩阵(11*18)进行边缘替代计算,得到mr_c(5*14),此步不缩小矩阵尺寸,对应为

号框内。
96.第五步:根据得到的mr_c采用双三次插值法,得到(4*22)的hr像素矩阵,对应为虚线框内。
97.第六步:补全由于上述缩减尺寸而导致的mr_c像素矩阵的左边框和右边框内的像素点,由于图像左右对称处理方法基本一致,补全方法为双线性插值得到hr像素矩阵。
98.我们以9行lr像素矩阵作为计算单元,在整个计算过程中通过下移计算单元来进行新的图像核心插值计算。如图6所示,其中四角星为lr像素矩阵(10*13),三角形为求出的hr像素矩阵。第二次图像核心插值计算下图中三角形同样需要9行lr像素矩阵,而由于待求的四行hr像素矩阵的位置下移了,因此需要的输入9行lr像素矩阵也对应下移一行,通过图像核心插值计算方法得到新的四行hr,即三角形,便完成第二次图像核心插值计算情况的计算。
99.对于本文提出的例子只需要两次图像核心插值计算,对于540*960的lr像素矩阵来说,共需要循环532次图像核心插值计算,每进行一次图像核心插值计算后将输入矩阵(9行lr)向下平移一次,之后开始下一次图像核心插值计算,设输入lr图像大小为n*m,则的图像核心插值计算次数times计算表达式为:
100.times=(4*n-32)/4
101.所述canny边缘检测与修正过程第一步中的双三次插值计算单元的输入为:16个源数据x0~x15,输出为四个双三次插值结果y0~y3,其位置关系如图7所示。
102.所述canny边缘检测与修正过程第一步中的合成梯度计算单元的输入为:9个源数据x0~x8,输出为待求像素点的合成梯度模长g和相角方向sita,其位置关系如图8所示。先采用sobel算子对图像进行滤波,计算出每个像素点水平方向梯度和垂直方向梯度。在调用cordic计算单元计算出合成梯度的模长和相角方向类型。
103.所述canny边缘检测与修正过程第一步中所包含的cordic计算单元在内部计算时设置定点数格式为:符号位:1位;整数位:15位;小数位:7位,来满足输入范围和输出精度要求。迭代次数设置为-2,-1,0,

,6。根据cordic原理可知迭代次数m和小数位精度p关系为p=2-m+1
。计算形式采取全流水计算。输入为水平梯度和垂直梯度,输出为合成梯度的模长g和相角sita,在计算中获得的相角方向sita分为4类方向,分别问-22.5度~22.5度,22.5度~67.5度,67.5度~112.5度和112.5度~157.5度。由合成梯度计算单元输出的sita结果为标签值以减少中间结果存储比特数,0~3分别代表以上四类方向。
104.所述canny边缘检测与修正过程第二步的边缘判断单元的输入为3*3合成梯度模长矩阵窗口,每个数据位宽为11bit,以及3*3窗口中心点对应的相角类型。输出为边缘类型gre。其位置关系如图9所示。计算原理为判断输入窗口中心点的合成梯度值是否大于sita方向上的另外两个合成梯度值,若小于,则gre赋值为0;若大于,则进行双阈值判断,得到gre。
105.所述canny边缘检测与修正过程第四步的边缘替代单元的输入为3*3的第一次双三次插值结果矩阵窗口,每个数据位宽为8bit;3*3的边缘信息矩阵窗口,每个数据位宽为2bit;3*3窗口中心点对应的相角类型sita,数据位宽为2bit。输出为边缘替代结果canny,位宽为8bit。其位置关系如图10所示。在此计算单元中,先进行边缘修正,再根据结果决定
是否进行替代,若进行替代操作,则根据sita的方向进行均值计算,若为非边缘点则不会进行修正,直接引用原始值作为替换值输出。
106.实施例三
107.基于实施例一提出的一种基于canny算法的图像上采样的硬件计算系统,应用实施例2提出的图像上采样整体计算方法,实现功能为对输入长为m宽为n的(lr)rgb图片上采样为长为4*m宽为4*n的高分辨率(hr)rgb图像。
108.对于rgb图像来说所有硬件计算过程为三通道并行计算,在所有计算过程中均以流水线形式将数据送入计算单元进行计算。
109.上述实施例中的特例利用c语言进行仿真,基于fpga平台进行了验证。实现的ip功能为将960*540的低分辨率图像(lr)上采样为3840*2160的超高分辨率图像(hr)。图像格式为rgb888。其中lr图像的获取方式为:将已有的hr图像的每个4*4像素矩阵内的所有像素点的每个通道的像素值分别取平均值以生成lr图像。采用46张hr图像进行测试,通过对比由上采样ip计算出的图像与原本的hr图像的psnr,ssim和lpips来评估计算精度。另外,对比了单独由双三次插值法上采样得到的hr图像以展示本实例的高精度。比较结果如表1所示,psnr和ssim指标越高越好,lpips指标越低越好。
110.表1:精确度验证情况表
111.算法类型psnrssimlpips本实例31.23170.857120.26719双三次插值31.03090.852660.27701
112.通过vivado软件将ip部署在fpga(型号为nexys video:artix-7(xc7a200t-1sbg484c))上验证实现,得到的逻辑消耗结果为:lut消耗13586个,block ram tile消耗为72个,dsp消耗为60个,如表2所示
113.表2:硬件逻辑资源消耗表
114.slice luts13586block ram tile72dsps60
115.综上所述,本发明实施例的一种基于canny算法的图像上采样的硬件计算系统,从表1可以看出,通过增加边缘修正方法让上采样精度得到提升,锯齿效果减弱。设计的图像核心插值模块为每次输入9行lr像素值并输出4行hr上采样结果让每一行图像计算相互不影响,核心插值算法重复多次调用图像核心插值模块以得到完整高分辨率图像hr。因此可以逐行进行插值计算,储模块的设计基于一次输入九行lr,输出四行hr的情况,只需能够存储这种尺寸计算下对应的源数据,结果数据和图像核心插值算法计算的中间结果,不必将整张图像均存入中间结果存储区,极大的减少了硬件资源消耗。同时逐行计算能够提高sram的计算效率,克服了由于图卷积计算的特性导致每次图像尺寸会逐次减小而无法多行并行计算的问题,若有并行需求也可进行不同行的并行计算而不需修改核心算法。同时流水线计算结构提升了计算速度。总体来说本实例可在低面积消耗下完成将低分辨率图像上采样为超高清分辨率图像的硬件计算,其具有低计算复杂度、低硬件开销及高硬件利用率,同时显示了对于实际应用的巨大潜力。
116.如上所述,尽管参照特定的优选实施例已经表示和表述了本发明,但其不得解释
为对本发明自身的限制。在不脱离所附权利要求定义的本发明的精神和范围前提下,可对其在形式上和细节上做出各种变化。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1