一种基于芯片的图像仿射变换方法及芯片与流程

文档序号:31804140发布日期:2022-10-14 19:45阅读:67来源:国知局
一种基于芯片的图像仿射变换方法及芯片与流程

1.本技术属于图像处理及芯片技术领域,尤其涉及一种基于芯片的图像仿射变换方法及芯片。


背景技术:

2.在图像识别中,为提高图像识别的准确率,经常需要对图像进行视角变换。例如,摄像头从不同的距离及不同的角度拍摄得到墙上一幅画的图像是不同的,如果将这些从不同距离及不同角度拍摄的图像通过变换矩阵统一投影成摄像头在画的正前方固定距离处拍摄的图像,可有利于提高图像识别的准确率。这种变换称为射影变换。然而在实际应用中,由于平行的直线在射影变换下可能变成不平行的,一般采用仿射变换来近似代替射影变换,如人脸识别的预处理。
3.现有技术中,常采用中央处理器(central processing unit,cpu)和双倍数据率同步动态随机存取存储器(double data rate synchronous dynamic random access memory,ddr sdram)的计算机系统实现仿射变换,但在该系统中直接通过变换矩阵进行仿射变换会出现速度慢及耗时长的问题,因为ddr是一种动态存储器,在ddr中对随机地址进行读写访问花费的时间要远远长于对连读地址进行访问。


技术实现要素:

4.有鉴于此,本技术实施例提供了一种基于芯片的图像仿射变换方法及芯片,能够解决相关技术中的一个或多个技术问题。
5.第一方面,本技术一实施例提供了一种基于芯片的图像仿射变换方法,所述数字芯片包括多组输入缓存、中间缓存、计算单元及输出缓存,其中,所述图像仿射变换方法包括:触发多组输入缓存中的当前组输入缓存及中间缓存从片外存储器中读取输入图像的当前部分图像数据和计算所需的参数数据,并分别写入所述当前组输入缓存及所述中间缓存;其中,参数数据包括所需视角的目标输出图像及对应的分辨率;在读取输入图像当前部分数据的同时,致动计算单元利用所述参数数据对多组输入缓存中的历史组输入缓存获取的输入图像历史部分图像数据进行仿射变换及插值计算,得到目标输出图像的历史部分处理结果;将历史部分处理结果写入输出缓存并同时对当前部分数据执行仿射变换及插值计算,以得到目标输出图像的完整处理结果。
6.第二方面,本技术一实施例提供一种芯片,包括:多组输入缓存,用于轮循从片外存储器读取输入图像的部分图像数据;中间缓存,用于根据多组输入缓存读取数据的时序从片外存储器读取所述输入图像的部分参数数据;其中,参数数据包括输入图像数据在所述片外存储器的起始地址、目标输出图像的分辨率、输出图像的指定存储地址;计算模块,用于在多组输入缓存中的当前组输入缓存从片外存储器中获取输入图像的当前部分数据的同时,利用参数数据对多组输入缓存中的历史组输入缓存从所述片外存储器中获取的输入图像的历史部分数据进行插值计算,得到输出图像的部分处理结果;输出缓存,用于存储
所述部分处理结果。
7.第三方面,本技术一实施例提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面实施例所述的方法。
8.第四方面,本技术一实施例提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备实现如第一方面实施例所述的方法。
9.本技术实施例通过芯片内部的几块输入缓存对存储在片外存储器中的输入图像的局部图像数据(或称部分图像数据)进行缓存,并通过插值计算方法计算仿射变换后的像素值使得插值计算过程与图像缓存过程可并行进行,不仅控制了成本,还极大地提高图像仿射变换的计算速度。
附图说明
10.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
11.图1是本技术一实施例提供的一种芯片的架构示意图;
12.图2是本技术一实施例提供的一种基于芯片的图像仿射变换方法的实现流程示意图;
13.图3是本技术一实施例提供的一种输入图像和所需视场的目标输出图像在仿射变换下的映射关系示意图;
14.图4是本技术一实施例提供的一种基于芯片的图像仿射变换方法中步骤s120的实现流程示意图;
15.图5是本技术一实施例提供的一种顶点和主边位置示意图;
16.图6是本技术一实施例提供一种目标输出图像在输入图像中的映射图像示意图;
17.图7是本技术一实施例提供的一种芯片的架构示意图。
具体实施方式
18.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本技术。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本技术的描述。
19.在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
20.在本技术说明书中描述的“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
21.此外,在本技术的描述中,“多个”的含义是两个或两个以上。术语“第一”和“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
22.还应当理解,除非另有明确的规定或限定,术语“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是直接相连,也可以是通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域普通技术人员而言,可以根据具体情况理解上述术语在本技术中的具体含义。
23.目前,图像仿射变换常应用于cpu和ddr的计算机系统中,其直接通过变换矩阵实现仿射变换,但该方法速度慢及耗时长。
24.有鉴于此,本技术实施例提供一种基于芯片的图像仿射变换方法及芯片,仅通过几块小容量sram对存储在ddr中的局部图像数据(或部分图像数据)进行缓存;并在利用插值计算方法计算仿射变换后的像素值时,使插值计算过程与图像缓存过程并行进行,不仅控制了成本,还极大地提高图像仿射变换的计算速度。
25.为了更好地说明本技术的技术方案,下述实施例将结合一些具体参数对本技术的技术方案进行详细的阐述和说明。应理解,这些参数只是为了便于说明而优选的一些参数,并不能解释为对本技术的具体限定。
26.图1为根据本技术一实施例提供的一种芯片的架构示意图,为了更好地说明本实施例的芯片,在图1中示出了与芯片23耦接的片外存储器23a。更具体地,芯片23包括多组输入缓存231、计算模块232、输出缓存233及中间缓存234,其中:
27.多组输入缓存231,用于轮循从片外存储器23a获取输入图像的部分数据,直至输入图像的全部数据获取完毕则停止获取。
28.中间缓存234,用于缓存计算模块232计算时所需的参数;其中,参数包括所需视场的目标输出图像及对应的分辨率。
29.计算模块232用于在多组输入缓存231中的当前组输入缓存从片外存储器23a中获取输入图像的当前部分数据的同时,利用中间缓存234缓存的参数对多组输入缓存中的历史组输入缓存从片外存储器23a中获取到的输入图像的历史部分数据进行插值计算,得到输出图像的部分处理结果。
30.输出缓存233,用于存储部分处理结果,并待输出图像的完整处理结果写入输出缓存后,将输出图像的完整处理结果写入片外存储器23a指定的对应地址中。
31.在一个实施例中,输入图像数据存储在片外存储器23a中。优选地,片外存储器23a可为ddr存储器。在其他一些实施例中,ddr存储器还可以采用诸如同步动态随机存储器(synchronous dynamic random access memory,sdram)、动态随机存储器(dynamic random access memory,dram),或伪静态随机存储器(pseudo static random access memory,psram)等替代,此处不作限制。
32.图2为根据本技术一实施例提供的一种基于数字芯片的图像仿射变换方法的实现流程示意图,图像仿射变换方法可以包括步骤s110至s130。
33.s110,触发多组输入缓存中的当前组输入缓存从片外存储器中获取输入图像的当前部分数据,并写入当前组输入缓存中及中间缓存。
34.在一个实施例中,获取输入图像的数据包括图像数据和参数数据,其中,图像数据写入输入缓存中,参数数据写入中间缓存中;优选地,图像数据包括输入图像的像素值及像
素坐标等,参数数据包括所需视角的目标输出图像及对应的分辨率、输入图像对应的输出图像在片外存储器中的指定地址等。
35.进一步地,多组输入缓存轮流切换为当前组输入缓存并从片外存储器中获取输入图像的部分数据,直至输入图像的全部数据获取完毕则停止获取;优选地,多组输入缓存至少包括两组输入缓存,两组输入缓存乒乓操作从片外存储器中获取输入图像的部分数据,即当前组输入缓存是当前执行缓存操作的输入缓存,而下述提及的历史组输入缓存则是已执行缓存操作的输入缓存,即其读取输入图像数据的时刻位于当前组输入缓存之前。
36.s120,在当前组输入缓存从片外存储器中获取输入图像的当前部分数据的同时,利用中间缓存中的数据对多组输入缓存中的历史组输入缓存从片外存储器中获取到的输入图像的历史部分数据进行仿射变换及插值计算,得到所需视角的目标输出图像的部分处理结果。
37.更具体地,当多组输入缓存轮流切换为当前组输入缓存并从片外存储器中获取输入图像的部分数据时,对历史组输入缓存从片外存储器中获取到的输入图像的部分数据进行仿射变换及插值计算,得到所需视角的目标输出图像的部分处理结果,直至得到目标输出图像的全部或完整处理结果。此时,由于插值计算过程与图像缓存过程并行进行,极大地提高了图像仿射变换的计算速度。
38.图3为输入图像和所需视场的目标输出图像在仿射变换下的映射关系示意图。如图3所示,若目标输出图像为矩形图像,由于平行线在仿射变换下仍保持平行,则该目标输出图像映射在输入图像上是一个形状为平行四边形的映射图像。在一些实施例中,基于仿射变换原理计算出目标输出图像的四个顶点在输入图像的坐标,从而根据顶点坐标获取目标输出图像在输入图像中的映射图像;在其他一些实施例中,还可根据目标输出图像的分辨率并通过仿射变换原理计算出目标输出图像的四个顶点在输入图像的亚像素精度坐标,后再通过插值计算便可得到输出图像的所有像素。需要说明的是,本技术可优选使用亚像素精度坐标,以得到高分辨率的输出图像。
39.有鉴于此,在一个实施例中,步骤s120更具体地如图4所示,可以包括步骤s121至s123。
40.s121,基于所需视角的目标输出图像及仿射变换原理,获取目标输出图像在输入图像中的映射图像。
41.在一个实施例中,仿射变换是射影变换的特例,其公式为:
[0042][0043]
其中,(x0,y0)和(x1,y1)代表同一个点在两个不同视角下拍摄的图像中的坐标,a
11
至a
23
是变换矩阵的参数,即表征输入图像和目标输出图像的变换,且基于该公式可将目标输出图像变换至与输入图像同一坐标系下,得到目标输出图像在输入图像中的映射图像。
[0044]
s122,定义映射图像中任一顶点所在的一边为主边,另一边为副边,根据目标输出图像的分辨率计算映射图像主边及副边的点数及各点坐标。
[0045]
在一个实施例中,假设第一顶点为映射图像的任一顶点,如图5所示,第一顶点为映射图像的主顶点,主边为映射图像上主顶点左边,而主顶点右边为副边。需要说明的是,
主顶点可优选为位于映射图像中最高处的点,以便于后续计算。
[0046]
进一步地,在一个实施例中,根据目标输出图像的分辨率以及映射图像的顶点在输入图像中的亚像素精度坐标,从主顶点开始沿映射图像的主边和副边向映射图像的另外两个顶点前进分别计算主边和副边的各点数及坐标,并利用主边和副边的点数及坐标确定插值计算时的前进步长,其中每一步长所到达的位置都对应输出图像的一个像素。因此,沿着映射图像的主边和副边前进各有一个步长,主边上的步长称为主边步长,副边上的步长称为副边步长,每个步长带有方向性,如图5箭头排布路径所示的向左下方前进或者向右下方前进。
[0047]
s123,根据主边及副边上各点的坐标对历史部分数据进行插值计算,生成目标输出图像的部分处理结果。
[0048]
在一些实施例中,步骤s123可以包括根据主边上间隔主边步长的各点坐标,以主边上各点为起始点,沿着平行于映射图像的副边方向且以副边步长前进,对到达的且属于历史部分数据的各点进行插值计算得到各点的像素值,生成目标输出图像的部分处理结果;对到达且不属于历史部分数据的各点,将这些点的相关信息写入中间缓存,待当前组输入缓存获取到的当前部分数据中包括这些点时,可直接从中间缓存中读取数据对这些点进行插值计算生成各点的像素值,得到输出图像的部分处理结果。
[0049]
更具体地,如图6所示,平行四边形abdc为目标输出图像在输入图像中的映射图像,点c为映射图像的主顶点,ca为映射图像的主边,cd为映射图像的副边。根据目标输出图像的分辨率计算映射图像主边ca和副边cd的点数和坐标得到主边步长和副边步长,后从主边的每个点起始沿副边方向以副边步长前进(如图6的箭头路径所示)插值计算各点的像素值。当多组输入缓存执行乒乓操作轮流读取输入图像的部分数据时,假设输入图像最上方被映射图像覆盖的历史部分数据存储到历史组输入缓存,输入图像中间被映射图像覆盖的当前部分数据存储到当前组输入缓存。
[0050]
当当前组输入缓存读取输入图像中间被映射图像覆盖的部分时,计算单元对历史组输入缓存读取的映射图像数据以点c为主顶点,以主边ca上间隔主边步长的各点为起始点,沿副边cd方向(即图6所示的箭头方向)以副边步长前进,对到达的且属于历史部分数据的各点(如图6所示箭头的实线)进行插值计算得到各点的像素值,生成输出图像的部分处理结果;对到达的且不属于历史部分数据的各点(如图6所示箭头的虚线),将这些点的相关信息写入中间缓存,待当前组输入缓存获取到的当前部分数据中包括这些点时,可直接从中间缓存中读取数据对这些点进行插值计算生成各点的像素值,得到输出图像的部分处理结果。
[0051]
在另一个实施例中,由于所需视场的目标输出图像的分辨率受输出缓存的限制,所以会存在实际所需的目标输出图像的分辨率大于输出缓存所预设的标准输出图像分辨率的情况。因此,在执行步骤s121之前还包括步骤s1201:判断目标输出图像的分辨率与输出缓存中的标准输出图像分辨率的大小关系,并根据判断结果自适应选择是否利用标准输出图像替换目标输出图像进行后续计算。优选地,可分为三种情形:
[0052]
(1)第一种情形:若目标输出图像的分辨率等于输出缓存中的标准输出图像分辨率,则直接执行前述步骤s121、步骤s122和步骤s123;
[0053]
(2)第二种情形:若目标输出图像的分辨率小于输出缓存中的标准输出图像的分
辨率,则仍按标准输出图像的分辨率计算,同时在输出缓存存储的标准输出图像中指定目标输出图像所在区域,并利用标准输出图像代替前述的目标输出图像继续执行前述步骤s121、步骤s122和步骤s123。
[0054]
在一个实施例中,指定标准输出图像的左上角部分为目标输出图像,待芯片计算出最终的处理结果后,即得到标准输出图像的全部或完整处理结果,可根据指定区域从输出缓存内存储的完整处理结果中只读取左上角部分,从而将目标输出图像写入诸如ddr等片外存储器指定的对应地址中。
[0055]
(3)第三种情形:若目标输出图像的分辨率大于输出缓存中的标准输出图像的分辨率,步骤s120可以包括:步骤s221和步骤s222。
[0056]
s221,确定目标输出图像的分辨率大于标准输出图像分辨率,将目标输出图像分割成若干个输出图像块;其中,每个输出图像块的分辨率小于或等于标准输出图像分辨率。
[0057]
在一个实施例中,步骤s222可以包括以下两种子情形中的一种或多种。
[0058]
(1)第一种子情形:若输出图像块的分辨率等于标准输出图像分辨率,利用该输出图像块替换前述的步骤s121、步骤s122和s123中的目标输出图像继续执行前述步骤,此处不再赘述。
[0059]
(2)第二种子情形:若输出图像块的分辨率小于标准输出图像的分辨率,则仍按标准输出图像分辨率计算,同时在输出缓存输出的标准输出图像中指定输出图像块所在区域,并利用标准输出图像代替前述目标输出图像继续执行前述步骤s121、步骤s122和步骤s123。需要说明的是,第二种子情形可以与前述的第二种情形类比。
[0060]
s130,将历史部分处理结果写入输出缓存并同时执行当前部分数据的仿射变换及插值计算,以得到目标输出图像的完整处理结果。
[0061]
待目标输出图像的完整处理结果已全部写入输出缓存,则从输出缓存中读取输出图像的完整处理结果并写入片外存储器指定的地址中。
[0062]
如上所述,本技术实施例提供一种基于数字芯片的图像仿射变换方法,能够通过几块专用的小容量sram对存储在ddr中的局部图像内容进行缓存,并通过插值的方法计算出仿射变换后的像素值,插值计算过程与图像缓存过程并行进行,从而极大地提高图像仿射变换的计算速度。
[0063]
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0064]
图7为根据本技术图1的基础上提供的又一芯片的架构示意图,该芯片实施例中未详细描述之处请参见前述内容。
[0065]
在一些实施例中,多组输入缓存231至少包括第一组输入缓存和第二组输入缓存,芯片还包括调度模块235,用于调度多组输入缓存231中的第一组输入缓存和第二组输入缓存轮流切换为当前组输入缓存以读取输入图像的图像数据及调度中间缓存读取输入图像的参数数据,即当当前组输入缓存及中间缓存读取输入图像的当前部分数据时,历史组输入缓存及中间缓存已完成读取输入图像的历史部分数据的步骤并准备将数据传输至计算模块232;计算模块232,用于利用中间缓存中的参数数据对多组输入缓存231中的历史组输入缓存从片外存储器23a中获取到的输入图像的历史部分数据进行插值计算,得到输出图
像的部分处理结果。其中,调度模块235和计算模块232并行操作。
[0066]
在一些实施例中,继续参见图6所示,调度模块235包括发送读数据请求子模块2351和接收数据子模块2352。
[0067]
在一个实施例中,发送读数据请求子模块2351,用于确定输入图像中未被读入的剩余数据量,若剩余数据量为0,则待当前组输入缓存读入完成后,将多组输入缓存231均标识为不可用;若剩余数据量不为0,则确定当前组输入缓存的可用空间,若可用空间能够容纳预设长度数据量,则发送读数据请求;若所述可用空间无法容纳预设长度数据量,则切换当前组输入缓存。
[0068]
接收数据子模块2352,用于接收片外存储器响应于读数据请求发送的输入图像的当前部分数据,并将当前部分数据的图像数据及参数数据分别写入当前组输入缓存及中间缓存234。
[0069]
在一些实施例中,计算模块232包括获取主边子模块2321和插值并写入子模块2322,获取主边子模块2321和插值并写入子模块2322串联执行。
[0070]
其中,获取主边子模块2321,用于根据目标输出图像及仿射变换原理,获取目标输出图像在输入图像中的映射图像;并定义映射图像中任一顶点所在的一边为主边,另一边为副边,利用目标输出图像的分辨率计算映射图像主边及副边的点数及各点坐标,将映射图像主边及副边的点数及各点坐标写入中间缓存234。
[0071]
插值并写入子模块2322,用于从中间缓存234读取映射图像主边及副边的点数及各点坐标对历史部分数据进行插值计算,生成输出图像的部分处理结果,将部分处理结果写入输出缓存233。
[0072]
本技术一实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例中的各个步骤。
[0073]
本技术一实施例提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备可实现前述方法实施例中的各个步骤。
[0074]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0075]
其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(read-only memory,rom)、ram、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
[0076]
以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1