发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种基于Lanczos插值的上采样硬件处理***,该方法旨在搜索待拼接无人机图像的重叠区域中能绕开建筑物的最优接缝线,实现图像高质量拼接;相比于传统图像拼接方法,深度学习语义感知的无人机图像拼接方法具有拼接效果好、接缝自然的优点。
第一方面,提供一种基于Lanczos 插值的上采样硬件处理***,包括:
移位存储器模块,用于获取待处理像素图片,并基于FIFO 形式的行缓存窗口输出多个像素窗口;
窗口提取模块,与所述移位存储器模块通信连接,用于提取多个像素窗口,并基于Lanczos 差值基函数获取每个像素窗口的横向权重及纵向权重;
像素填充模块,与所述窗口提取模块通信连接,用于对位于图像边缘位置的像素窗口进行像素填充;
像素值计算模块,与所述像素填充模块通信连接,用于根据所述横向权重与所述纵向权重,基于RGB三路色彩模式将像素填充后的每个像素窗口进行三路并行五级流水计算处理、并拼接三路五级流水计算结果,获取每个像素窗口对应的最终像素块;
乒乓像素拼接模块,与所述像素值计算模块通信连接,用于将所有像素窗口对应的最终像素块进行乒乓像素拼接并输出。
一些实施例中,所述移位存储器模块包括用于获取待处理像素图片的数据流输入线,与所述数据流输入线通信连接、且相互级联的多个移位存储器,及与所述数据流输入线、多个所述移位存储器均通信连接的寄存器模块;
所述寄存器模块包括多个寄存器,所述数据流输入线与一个所述寄存器通信连接,一个所述移位存储器对应与一个所述寄存器通信连接;
所述窗口提取模块包括与多个所述寄存器一一对应通信连接的多条数据流单元,每条所述数据流单元的像素长度值等于每个所述寄存器单次输出的像素长度值、且等于所有所述寄存器数量。
一些实施例中,其中一个所述移位存储器的输入端与所述数据流输入线通信连接;
其余的所述移位存储器的输入端均与相邻所述移位存储器的输出端通信连接。
一些实施例中,所述基于Lanczos 差值基函数获取每个像素窗口的横向权重及纵向权重步骤之后,包括:
对每个像素窗口的横向权重及纵向权重进行预设倍数放大;当获得所述像素窗口的横向权重及纵向权重后,对每个像素窗口的横向权重及纵向权重进行相同预设倍数缩小。
一些实施例中,所述像素值计算模块包括:
信号拆分模块,用于将每个像素窗口的像素信号拆分为R路像素信号、G路像素信号及B路像素信号;
三路并行计算模块,与所述信号拆分模块通信连接,包括用于获取R路像素信号的R路计算模块,用于获取G路像素信号的G路计算模块,及获取B路像素信号的B路计算模块;
其中,所述R路计算模块,用于在R路像素信号中,根据每个像素窗口的横向权重及纵向权重,并基于五级流水计算获得每个像素窗口对应的R路像素点;所述G路计算模块,用于在G路像素信号中,根据每个像素窗口的横向权重及纵向权重,并基于五级流水计算获得每个像素窗口对应的G路像素点;所述B路计算模块,用于在B路像素信号中,根据每个像素窗口的横向权重及纵向权重,并基于五级流水计算获得每个像素窗口对应的B路像素点;
RGB拼接模块,与所述三路并行计算模块通信连接,将所述R路像素点、所述G路像素点及所述B路像素点进行拼接,获取每个像素窗口的最终像素块。
一些实施例中,所述R路计算模块包括多个并行计算的五级流水模块;所述G路计算模块包括与R路计算模块的五级流水模块数量相等的多个五级流水模块;所述B路计算模块包括与R路计算模块的五级流水模块数量相等的多个五级流水模块;
每个所述五级流水模块,用于将像素窗口中的每个像素点乘以对应的横向权重对应得到多个第一过程值,将每一行的所有所述第一过程值相加得到每一行对应的一个第二过程值,将所有所述第二过程值乘以对应的纵向权重对应得到多个第三过程值,将所有所述第三过程值相加得到第四过程值,将所述第四过程值向右移预设位数,获得五级流水输出值,所述五级流水输出值为R路像素点、G路像素点及B路像素点;
其中,在每一路计算模块的每个所述五级流水模块中对应有一套横向权重及纵向权重。
一些实施例中,所述将所述R路像素点、所述G路像素点及所述B路像素点进行拼接,获取每个像素窗口的最终像素块步骤,包括:
将同一套横向权重及纵向权重对应的计算得出的R路像素点、G路像素点及B路像素点进行拼接,获取RGB单元像素点;
将所有所述RGB单元像素点按照相邻两行相邻两列的组成方式进行拼接,获取每个像素窗口的最终像素块
一些实施例中,所述乒乓像素拼接模块包括乒乓缓存模块及与所述乒乓缓存模块通信连接的多个BRAM存储器;
所述乒乓缓存模块,用于将所有像素窗口对应的最终像素块依次进行相邻排列,获得多行像素数据;
每个BRAM存储器,用于对相邻两行的所有最终像素块依次进行拼接并输出。
一些实施例中,所述对相邻两行的所有最终像素块依次进行拼接步骤,包括:
在相邻两行的所有最终像素块中,将第一行最终像素块的尾端与第二行最终像素块的首端进行拼接。
与现有技术相比,本发明针对 Lanczos 插值上采样所涉及到的像素窗口切换问题,提出了一种基于 FIFO 形式的行缓存窗口,实现了像素窗口的自动提取与切换,极大程度的优化了控制逻辑,使在算法复杂度、图像质量、处理效率上相对均衡统一。
具体实施方式
现在将详细参照本发明的具体实施例,在附图中例示了本发明的例子。尽管将结合具体实施例描述本发明,但将理解,不是想要将本发明限于所述的实施例。相反,想要覆盖由所附权利要求限定的在本发明的精神和范围内包括的变更、修改和等价物。应注意,这里描述的方法步骤都可以由任何功能块或功能布置来实现,且任何功能块或功能布置可被实现为物理实体或逻辑实体、或者两者的组合。
为了使本领域技术人员更好地理解本发明,下面结合附图和具体实施方式对本发明作进一步详细说明。
注意:接下来要介绍的示例仅是一个具体的例子,而不作为限制本发明的实施例必须为如下具体的步骤、数值、条件、数据、顺序等等。本领域技术人员可以通过阅读本说明书来运用本发明的构思来构造本说明书中未提到的更多实施例。
参见图1所示,以分辨率为 960*540 、 24bit 的像素数据流的待处理像素图片来进行说明,本发明实施例提供一种基于Lanczos 插值的上采样硬件处理***,包括:
移位存储器模块,用于获取待处理像素图片,并基于FIFO (First In First Out,先进先出的数据缓存)形式的行缓存窗口输出多个像素窗口;
窗口提取模块,与所述移位存储器模块通信连接,用于提取多个像素窗口,并基于Lanczos 差值基函数获取每个像素窗口的横向权重及纵向权重;
像素填充模块,与所述窗口提取模块通信连接,用于对位于图像边缘位置的像素窗口进行像素填充;
像素值计算模块,与所述像素填充模块通信连接,用于根据所述横向权重与所述纵向权重,基于RGB三路色彩模式将像素填充后的每个像素窗口进行三路并行五级流水计算处理、并拼接三路五级流水计算结果,获取每个像素窗口对应的最终像素块;
乒乓像素拼接模块,与所述像素值计算模块通信连接,用于将所有像素窗口对应的最终像素块进行乒乓像素拼接并输出。
具体的,本实施例中,本发明提供一种在算法复杂度、图像质量、处理效率上相对均衡统一的插值上采样硬件处理***,针对 Lanczos 插值上采样所涉及到的像素窗口切换问题,提出了一种基于 FIFO 形式的行缓存窗口,实现了像素窗口的自动提取与切换,极大程度的优化了控制逻辑。
可选的,所述移位存储器模块包括用于获取待处理像素图片的数据流输入线,与所述数据流输入线通信连接、且相互级联的多个移位存储器,及与所述数据流输入线、多个所述移位存储器均通信连接的寄存器模块;
所述寄存器模块包括多个寄存器,所述数据流输入线与一个所述寄存器通信连接,一个所述移位存储器对应与一个所述寄存器通信连接;
所述窗口提取模块包括与多个所述寄存器一一对应通信连接的多条数据流单元,每条所述数据流单元的像素长度值等于每个所述寄存器单次输出的像素长度值、且等于所有所述寄存器数量。
可选的,其中一个所述移位存储器的输入端与所述数据流输入线通信连接;其余的所述移位存储器的输入端均与相邻所述移位存储器的输出端通信连接。
具体的,本实施例中,输入为 24bit 的像素数据流,流入移位存储器,将输入接到移位存储器 601 的输入端口,移位存储器 1 的输出单独引出,同时接到移位存储器602的输入端口,移位存储器602 的输出单独引出,同时接到移位存储器 603 的输入端口,以此类推至移位存储器 604、605、606、607, 直至完成 7 个移位存储器级联,移位存储器深度为一行数据像素数;在本实施例中,移位存储器深度为 960,数据位宽为 24bit,当输入像素满 4 行多 5 个像素以后,将达到第一个窗口提取条件。
参见图2所示,采用 7 个移位存储器进行级联,每一个寄存器320缓存一行数据,同时,每一个寄存器320 均单独引出8个输出,结合数据流输入线330连接的寄存器320上输入的待处理像素图片的原始输入数据流,每一拍可以同时输出同一列的八个数据,对输入打八拍并各自寄存,即窗口提取模块每次可提取出一个边长为 8 个像素的正方形像素窗口340。
具体地,对于窗口提取模块608,基于Lanczos 差值基函数获取每个像素窗口的横向权重及纵向权重,具体为:
Lanczos 差值基函数如下公式,
其中 a 表示Lanczos 计算窗口值,与窗口值相对应的,该基函数会在原图中提取出边长为 2a 个像素的正方形像素窗口 100 用于上采样计算,参见图3所示,将窗口值 a取 4 效果最优,因此本发明将在原图中提取出边长为 8 个像素(此就对应上述选取 7 个移位存储器、8个寄存器,获得的一个边长为 8 个像素的正方形像素窗口340)的正方形像素窗口 200,参见图4所示。
Lanczos 基函数输入为一个带偏移的点集,产生的像素坐标偏移作为 Lanczos基函数的输入点集坐标偏移,点集代入函数以生成权值,即获取每个像素窗口的横向权重及纵向权重;当采用上采样目标像素中心点坐标进行倍数换算时,映射得出一个带偏移的窗口中心点 210,以该点为窗口中心,向左取三列像素、向上取三行像素、向右取四列像素、向下取四行像素,像素重叠区域即为需求窗口200。在图像映射阶段,若映射后的窗口中心点位于图像边缘,将无法按照上述方法得到一个完整的像素窗口,因此在进行后续权值乘加计算前,会先对边缘窗口进行像素填充,因此,将图像边缘定义为:图像的前三列、前三行、后四列、后四行。
具体地,对于像素填充模块609,对移位存储器流出的数据缓存 8 个时钟周期,得到第一个像素窗口,第一个窗口必定为边缘窗口,后续需要进行像素填充处理。当输入像素满 8 行多 8 个像素以后,将得到第一个完整的无需像素填充的像素窗口。
对于缺失窗口的边缘像素填充阶段,不难得知,此时已经获得了像素窗口中本应存在的像素数据,如图 5 中白色像素块所示,根据对称填充原则,打一拍对窗口缺失像素进行填充。模块定义了窗口移动行计数 610、窗口移动列计数 611,根据窗口移动的行列计数,来确定即将被填入空缺处的像素值。
可选的,所述基于Lanczos 差值基函数获取每个像素窗口的横向权重及纵向权重步骤之后,包括:
对每个像素窗口的横向权重及纵向权重进行预设倍数放大;当获得所述像素窗口的横向权重及纵向权重后,对每个像素窗口的横向权重及纵向权重进行相同预设倍数缩小。
具体的,本实施例中,对计算出来的权值进行 1024 倍放大,整体计算完毕后再进行 1024 倍缩小,权重平均误差可小于 5‰
表(一)为两倍放大情况下各偏移对应的Lanczos 权值;表(二)为1024倍放大情况下各偏移对应的Lanczos 权值近似整数,将表中权值近似整数作为参数,预存为有符号整数形式;具体如下:
表(一)
表(二)
可选的,所述像素值计算模块包括:
信号拆分模块,用于将每个像素窗口的像素信号拆分为R路像素信号、G路像素信号及B路像素信号;
三路并行计算模块,与所述信号拆分模块通信连接,包括用于获取R路像素信号的R路计算模块,用于获取G路像素信号的G路计算模块,及获取B路像素信号的B路计算模块;
其中,所述R路计算模块,用于在R路像素信号中,根据每个像素窗口的横向权重及纵向权重,并基于五级流水计算获得每个像素窗口对应的R路像素点;所述G路计算模块,用于在G路像素信号中,根据每个像素窗口的横向权重及纵向权重,并基于五级流水计算获得每个像素窗口对应的G路像素点;所述B路计算模块,用于在B路像素信号中,根据每个像素窗口的横向权重及纵向权重,并基于五级流水计算获得每个像素窗口对应的B路像素点;
RGB拼接模块,与所述三路并行计算模块通信连接,将所述R路像素点、所述G路像素点及所述B路像素点进行拼接,获取每个像素窗口的最终像素块。
可选的,所述R路计算模块包括多个并行计算的五级流水模块;所述G路计算模块包括与R路计算模块的五级流水模块数量相等的多个五级流水模块;所述B路计算模块包括与R路计算模块的五级流水模块数量相等的多个五级流水模块;
每个所述五级流水模块,用于将像素窗口中的每个像素点乘以对应的横向权重对应得到多个第一过程值,将每一行的所有所述第一过程值相加得到每一行对应的一个第二过程值,将所有所述第二过程值乘以对应的纵向权重对应得到多个第三过程值,将所有所述第三过程值相加得到第四过程值,将所述第四过程值向右移预设位数即缩小 2048 倍,获得五级流水输出值,所述五级流水输出值为R路像素点、G路像素点及B路像素点;
其中,在每一路计算模块的每个所述五级流水模块中对应有一套横向权重及纵向权重。
可选的,所述将所述R路像素点、所述G路像素点及所述B路像素点进行拼接,获取每个像素窗口的最终像素块步骤,包括:
将同一套横向权重及纵向权重对应的计算得出的R路像素点、G路像素点及B路像素点进行拼接,获取RGB单元像素点;
将所有所述RGB单元像素点按照相邻两行相邻两列的组成方式进行拼接,获取每个像素窗口的最终像素块。
具体的,本实施例中,像素填充完毕后将 24bit 信号拆称三路以实现RGB 并行处理,对于单路像素信号,同样获得一个边长为 8 的像素窗口,像素位宽为 8bit。
对于每一单路像素信号(R路像素信号、G路像素信号及B路像素信号)的一个边长为 8 的像素窗口,根据 4 套权重,将对应 4 个五级流水模块 612计算得出 4 个五级流水输出值,五级流水输出值为R路像素点、G路像素点及B路像素点。对于同一套权重,将三路像素信号的计算结果 RGB 进行拼接,将得到一个完整的目标图像的RGB单元像素点 613,同理可得出 4 套权重对应的 4 个RGB单元像素点,分别对应于上采样后图像中相邻两行相邻两列所组成的 4 像素正方形块 614,等价于图6所示的正方形块 420。
参见图6所示,可选的,所述乒乓像素拼接模块包括乒乓缓存模块及与所述乒乓缓存模块通信连接的多个BRAM存储器;
所述乒乓缓存模块,用于将所有像素窗口对应的最终像素块依次进行相邻排列,获得多行像素数据;
每个BRAM存储器,用于对相邻两行的所有最终像素块依次进行拼接并输出。
可选的,所述对相邻两行的所有最终像素块依次进行拼接步骤,包括:
在相邻两行的所有最终像素块中,将第一行最终像素块的尾端与第二行最终像素块的首端进行拼接。
具体的,本实施例中,使用两个 BRAM(BRAM就是Block Memory,是Zynq的PL端的存储RAM单元)410 乒乓以实现像素数据的存储与拼接输出,每一个 BRAM 存储两行数据。以BRAM 1 举例,连续四次的写入为上采样后图片相邻两行的相邻两列,也即一个含有 4 个像素点a、b、A、B 的正方形像素块 420,当相邻两行的最后两列数据(正方形像素块 430 )c、d、C、D 被写入 BRAM 1 时,两行数据拼接完成,BRAM 1 被写满,可作为数据流输出;BRAM2同BRAM 1 所述。
之所以对于一个 BRAM,连续四次的写入为上采样后图片相邻两行的相邻两列,是因为由于两倍放大的性质,对于原图中同一个边长为 8 的 Lanczos 像素窗口,将根据两两组合的四套权值对,计算出上采样后图片中的四个点,且这四个点为上采样后图片相邻两行的相邻两列 420。由于一个周期涉及到 4 个点的计算,这里采用了 4 倍于输入时钟的频率进行像素写入与像素输出,倍频通过PLL 技术生成。
因此,本发明的有益效果为:基于 Lanczos 插值实现了一种上采样硬件处理***,可以对图像进行两倍的插值上采样,实现了一种基于FIFO 形式的行缓存结构,通过对移位存储器进行级联处理,实现了像素窗口的自动提取与切换,极大程度的优化了控制逻辑。
在本发明的描述中,需要说明的是,术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
需要说明的是,在本发明中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所发明的原理和新颖特点相一致的最宽的范围。