掌桥专利:专业的专利平台
掌桥专利
首页

一种视频帧尺度变换异构系统和方法以及存储介质

文献发布时间:2023-06-19 11:45:49


一种视频帧尺度变换异构系统和方法以及存储介质

技术领域

本发明涉及图像处理技术领域,具体涉及一种视频帧尺度变换异构系统和方法以及存储介质。

背景技术

图像和视频帧数据的尺度变换是多媒体应用中的一个基本问题,一般使用的是独立处理分为纯软件处理,纯软件处理的方式主要是建立在x86或者其他系统的CPU、arm机器上,通过安装开源软件opencv、ffmpeg等方式来实现视频图像的尺度变换功能,开发既简单有又很多基于相同开发的方案,但是在性能的处理以及灵活度上,并不能满足需求,如一开始提到的视频图像实时处理一路转多路或者多路转多路的情形下,会大大消耗CPU的资源降低整个机器的稳定性,这样处理效率比较低,如果通过更换CPU来满足处理效率的需求,会增加了产品成本。

发明内容

本发明主要解决的技术问题是现有的采用纯软件的系统对视频帧尺度变换进行变换时,无法同时保证效率且降低成本。

一种视频帧尺度变换异构系统,其包括:处理器单元和与该处理器单元连接的多个逻辑处理单元,该多个逻辑处理单元并行连接;

其中,所述处理器单元用于根据源图像的尺度和目标尺度计算变换时的权重和窗口大小,以得到权重列表和窗口大小列表;

所述多个逻辑处理单元用于根据所述权重列表和窗口大小列表对所述源图像进行尺寸变换以得到具有目标尺度的目标图像。

其中,所述处理器单元包括权重计算模块和窗口大小计算模块;

其中,权重计算模块用于根据源图像的尺度和目标尺度计算变换时目标图像中每个像素对应的权重,得到所述权重列表;所述窗口大小计算模块用于根据源图像的尺度和目标尺度计算变换时每个像素对应的窗口大小,得到所述窗口大小列表。

其中,所述多个逻辑处理单元同时根据所述权重列表和窗口大小列表对源图像中多个像素进行变换,得到多个目标像素;

所述视频帧尺度变换异构系统还包括缓存模块,所述缓存模块用于对所述多个目标像素进行缓存,得到目标图像。

其中,所述逻辑处理单元包括尺度变换模块,该尺度变换模块用于根据所述权重列表和窗口大小列表对源图像中的像素进行变换,得到目标图像中的目标像素。

进一步的,所述处理器单元包括存储模块,该存储模块用于对所述权重列表和窗口大小列表进行存储,并将存储地址发送给所述逻辑处理单元。

进一步的,所述逻辑处理单元还包括读取判断模块;该读取判断模块用于从所述存储模块中读取所述权重列表和窗口大小列表,并判断存储模块中是否有与当前目标图像匹配的权重列表和窗口大小列表,若是则选择与当前目标图像匹配的权重列表和窗口大小列表;

若否,则将该源图像的尺度和目标尺度发送给所述处理器单元,该处理器单元根据源图像的尺度和目标尺度计算得到权重列表和窗口大小列表后,将该权重列表和窗口大小列表存储在所述存储模块中,并将该权重列表和窗口大小列表的存储地址返回给所述读取判断模块。

一种视频帧尺度变换方法,其包括:

采用处理器单元根据源图像的尺度和目标尺度计算变换时的权重和窗口大小,以得到权重列表和窗口大小列表;

采用多个并行设置的逻辑处理单元根据所述权重列表和窗口大小列表对所述源图像进行尺寸变换以得到具有目标尺度的目标图像。

其中,所述处理器单元包括权重计算模块和窗口大小计算模块;

所述根据源图像的尺度和目标尺度计算变换时的权重和窗口大小,以得到权重列表和窗口大小列表包括:采用权重计算模块根据源图像的尺度和目标尺度计算变换时目标图像中每个像素对应的权重,得到所述权重列表;采用窗口大小计算模块根据源图像的尺度和目标尺度计算变换时每个像素对应的窗口大小,得到所述窗口大小列表。

其中,采用所述多个并行设置的逻辑处理单元同时根据所述权重列表和窗口大小列表对源图像中多个像素进行变换,得到多个目标像素;

对所述多个目标像素进行缓存,得到目标图像。

一种计算机可读存储介质,其包括程序,所述程序能够被处理器执行以实现如上所述的视频帧尺度变换方法。

依据上述实施例的视频帧尺度变换异构系统,其包括:处理器单元和与该处理器单元连接的多个逻辑处理单元,该多个逻辑处理单元并行连接;其中,处理器单元用于根据源图像的尺度和目标尺度计算变换时的权重和窗口大小,以得到权重列表和窗口大小列表;多个逻辑处理单元用于根据权重列表和窗口大小列表对源图像进行尺寸变换以得到具有目标尺度的目标图像。由于权重计算和窗口大小中包括大量浮点或者定点数据,因此将该部分处理过程放在具有丰富计算能力的处理器单元中,例如CPU或者arm中,由于像素处理过程大多是乘积和求和运算,但是像素点比较多,因此将像素的处理过程放在多个并行设置的逻辑处理单元中,例如放在FPGA(逻辑处理电路)中进行并行处理,这样可以同时对多个像素进行处理,提高了系统的整体的处理效率,且硬件成本较低。

附图说明

图1为现有技术中视频帧尺度变换系统示意图;

图2为本申请实施例的视频帧尺度变换异构系统总体结构示意图;

图3为本申请实施例的视频帧尺度变换异构系统具体结构示意图;

图4为本申请实施例的视频帧尺度变换方法总体流程图;

图5为本申请实施例的视频帧尺度变换方法的具体流程图。

具体实施方式

下面通过具体实施方式结合附图对本发明作进一步详细说明。其中不同实施方式中类似元件采用了相关联的类似的元件标号。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他元件、材料、方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。

另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。

请参考图1,图1位现有的采用纯软件的方式将源图像由一路转换为多路,例如将1080P的分别转换为8路720P、8路540P和8路360P的目标图像,如果全部处理过程都在存软件中进行,则需要提高CPU的主频率,但是现在CPU的主频率已达到瓶颈,因此采用纯软件处理则效率较慢,即使采用目前处理能力最强的CPU也无法满足图像处理的要求。如果采用纯硬件的方式是将尺度转换的功能直接采asic(特殊应用集成电路)或者fpga(逻辑处理电路)来处理,这样的纯硬件设计虽然可以很容易达到性能要求,而且可以灵活的解决不同方案,但是开发复杂,周期长,需要前期大量的时间去建立验证数学模型,然后才能在硬件中实现。特别是如果视频图像要求的细节比较丰富,就会要求更加复杂的转换方法,而这往往需求更多的数学运算,如不定长的窗口的bicubic算法(双三次插值算法),在实现权重上硬件如果要计算大量的浮点数,开发周期长,需要的资源多。

在本发明实施例中,在视频帧尺度变换过程中,由于权重计算和窗口大小中包括大量浮点或者定点数据,因此将该部分处理过程放在具有丰富计算能力的处理器单元中,例如CPU或者arm中,由于像素处理过程大多是乘积和求和运算,但是像素点比较多,因此将像素的处理过程放在多个并行设置的逻辑处理单元中,例如放在FPGA(逻辑处理电路)中进行并行处理,这样可以同时对多个像素进行处理,提高了系统的整体的处理效率,且硬件成本较低。

实施例一:

请参考图1和图2,本实施例提供一种视频帧尺度变换异构系统,其包括:处理器单元10(即软件处理单元)和与该处理器单元10连接的多个逻辑处理单元20(即硬件处理单元),该多个逻辑处理单元20并行连接,这样可以对源图像(即待变换的图像)同时进行并行处理。

其中,处理器单元10用于根据源图像的尺度和目标尺度计算变换时的权重和窗口大小,以得到权重列表和窗口大小列表;多个逻辑处理单元20用于根据权重列表和窗口大小列表对源图像进行尺寸变换以得到具有目标尺度的目标图像。由于权重计算和窗口大小中包括大量浮点或者定点数据,因此将该部分处理过程放在具有丰富计算能力的处理器单元中,例如CPU或者arm中,由于像素处理过程大多是乘积和求和运算,但是像素点比较多,因此将像素的处理过程放在多个并行设置的逻辑处理单元中,逻辑处理单元实时性好,但是运算能力和处理器相比较弱,但是并行计算可以提高处理效率,例如放在FPGA(逻辑处理电路)中进行并行处理,这样可以同时对多个像素进行处理,提高了系统的整体的处理效率,且硬件成本较低。由于纯软件跟纯硬件处理的既有各自的优越性又有各自的局限性,所以为了能够增加处理的灵活,而又减少开发周期降低开发成本提高性能,本实施例提供的异构系统计算可实现图像视频帧尺度变换,这样的设计可以提高性能,减少开发周期,降低开发成本。

其中,本实施例的异构系统对图像视频帧转换是以运算能力强任务资源紧张延时大的作为软件平台,以数据并行处理好成本低可移植性高的作为硬件平台。软件平台处理转换过程中浮点定点等复杂算法,提供硬件平台算子的参数等内容;硬件平台并行处理数据,通过软件平台提供的部分参数,配合硬件算子进行并行处理,可以搭配一个软件平台多个硬件平台。软件平台分为x86/arm等服务器下的CPU、ARM处理器、DSP、SOPC、MiscroBlaze;硬件平台可选用:GPU、FPGA、ASIC中的任一个。

具体的,如图3,处理器单元10包括权重计算模块101和窗口大小计算模块102;其中,窗口大小计算模块102用于根据源图像的尺度和目标尺度计算变换时每个像素对应的窗口大小,得到窗口大小列表。具体的,权重计算模块101用于根据源图像的尺度和目标尺度、窗口大小计算变换时目标图像中每个像素对应的权重,得到权重列表。

其中,多个逻辑处理单元20同时根据权重列表和窗口大小列表对源图像中多个像素进行变换,得到多个目标像素;进一步的,本实施例的视频帧尺度变换异构系统还包括缓存模块,该缓存模块用于对多个目标像素进行缓存,得到目标图像。

具体的,本实施例的逻辑处理单元20包括尺度变换模块,该尺度变换模块用于根据权重列表和窗口大小列表对源图像中的像素进行变换,得到目标图像中的目标像素。

其中,处理器单元10包括存储模块103,该存储模块103用于根据窗口大小存储对应的权重。一个目标像素需要一个窗口,并且含有多个权重,源分辨率跟目标分辨率确定了,所有的像素都是固定长度的窗口大小为6N,并将存储地址发送给逻辑处理单元,这样逻辑处理单元对源图像像素处理时去存储地址中读取权重列表和窗口大小列表即可。

在实际处理中,源目标图像尺度大小一般直接发送给逻辑处理单元20,如果逻辑处理单元20之前处理过该类型的源图像,例如处理过将1080P转换为720P的,本次变换的目标跟源分辨率大小都相同,则无需重新计算权重列表和窗口大小列表,直接读取原来存储的权重列表和窗口大小列表进行处理即可,因此权重对图像尺度变换过程中与源图像本身的特征信息无关,只与其尺度有关。

在另一种实施例中,逻辑处理单元还包括读取判断模块;该读取判断模块用于从存储模块103中读取所有的权重列表和窗口大小列表,并判断存储模块中是否有与当前目标图像匹配的权重列表和窗口大小列表,若是则选择与当前目标图像匹配的权重列表和窗口大小列表;若否,则将该源图像的尺度和目标尺度发送给处理器单元10的权重计算模块101和窗口大小计算模块102,该处理器单元的权重计算模块101和窗口大小计算模块102根据源图像的尺度和目标尺度计算得到权重列表和窗口大小列表后,将该权重列表和窗口大小列表存储在存储模块新的存储地址中,并将该权重列表和窗口大小列表的新的存储地址返回给读取判断模块。读取判断模块读取到该新的权重列表和窗口大小列表后再进行像素的处理。

其中,本实施例中以ARM+FPGA的平台,将其中含有大量浮点或者定点等数学运算部分,放在有丰富的计算能力的arm(软核或者硬核)上,将能够并行实时处理的放在FPGA中。不定长bicubic,即bicubic interpolation(双三次插值算法)的转换算法比其他的转换算法在细节上有更高的画质,从而需要更加复杂的数学模型,每一个目标图像点的生成都需要6*缩放倍数的窗口,而由于缩放目标分辨率不定,所以窗口长度不定,需要的权重也不定

如果采用纯软件可以便捷的调用opencv/ffmpeg的api接口函数来实现,但是在多路实时处理时,对软件处理平台有很大的要求;而采用FPGA/ASIC做处理的话,由于权重变化采用查表的方式,不能够完整的存储所有缩放的情况;而采用实时计算即:每次源来以后都需要计算一次权重的话,无疑会增加资源的消耗以及运算的延时,将拖累整个并行处理的速度。采用异构计算resize则是纯软件跟纯硬件的最优性能结合,通过ARM实现权重的运算,FPGA将得到的权重从DDR中读取出来,然后分配给每个像素点进行并行计算,提高了处理效率。

其中,Bicubic算法由于FPGA的缓存小以及运行时钟考虑,将过程分为行变换,列变换两步,用窗口来定义起始跟结束内的所有像素点。算法流程是先进行的像素×权重和的累加,如果是第一行等待第一行完成后缓存第一行的行变换值,后续跟第二行的权重和累加得到列的两个像素点的权重累加和并且缓存覆盖原来缓存的值。如果不是则得到行像素点的累加和后,跟缓存的行像素点的值分别权重相乘得到累加和缓存覆盖原来的值,这样减少了列缓存的大小,不用等到列缓存的窗口数据全部满足才得到最后的结果,提高了整个变换的时间。

实施例二:

请参考图4和图5,本实施例提供一种视频帧尺度变换方法,其包括:

步骤201:采用处理器单元根据源图像的尺度和目标尺度计算变换时的权重和窗口大小,以得到权重列表和窗口大小列表。

步骤202:采用多个并行设置的逻辑处理单元根据权重列表和窗口大小列表对源图像进行尺寸变换以得到具有目标尺度的目标图像。

其中,处理器单元包括权重计算模块和窗口大小计算模块。根据源图像的尺度和目标尺度计算变换时的权重和窗口大小,以得到权重列表和窗口大小列表包括:采用权重计算模块根据源图像的尺度和目标尺度计算变换时目标图像中每个像素对应的权重,得到所述权重列表;采用窗口大小计算模块根据源图像的尺度和目标尺度计算变换时每个像素对应的窗口大小,得到所述窗口大小列表。

其中,采用多个并行设置的逻辑处理单元同时根据所述权重列表和窗口大小列表对源图像中多个像素进行变换,得到多个目标像素;对多个目标像素进行缓存,得到目标图像。

具体的,源数据以及相应分辨率等参数进入实施例一的系统处理后,将得到的源图像分辨率和目标图像分辨率传递给读取判断模块。即一旦请求有效,将源图像分辨率以及目标图像的分辨传送给权重匹配,读取判断模块查表是否已经有生成过的权重数据,如果有直接将权重缓存地址回传给读取判断模块,没有将源图像的分辨率和目标图像分辨率传递给ARM中,ARM接收到新的权重计算后,按照bicubic算法的权重计算公式,计算每个像素点的权重,一个目标像素的bicubic起点为(x+0.5)N-3N+0.5,终点(x+0.5)N+3N+0.5,所以窗口为6N,而该点的终点是第七个目标像素的起点,所以在第一个目标像素跟第七个目标像素之间有6个窗口,对应的一个像素最多被重复计算6次,但是每个像素在不同窗口有不同的权重,每个原始像素点最多有6个权重。ARM将源图像像素的权重计算出来以后,按照YUV(颜色编码方法)以及在不同窗口中运算位置、窗口顺序存储在不同的地址中,将缓存的DDR地址传递给权重计算模块,权重计算模块匹配更新当前权重表,并且返回权重列表缓存的地址读取判断模块,读取判断模块再传递给逻辑处理单元处理。

如图5,本实施例的视频帧尺度变换异构方法的具体流程包括:

步骤301:获取源图像的尺度以及目标图像的尺度。

步骤302:根据源图像的尺度以及目标图像的尺度计算权重大小和窗口大小,得到权重列表和窗口大小列表,并将该权重列表和窗口大小列表存储在DDR中。换言之,该过程可以理解为:源图像或视频帧数据发送给实施一的处理系统后,首先对这些数据分配缓存地址,数据缓存到DDR中,同时发送源图像的目标分辨率到读取判断模块,读取判断模块接收缓存的权重以及DDR源数据缓存完成以后,启动逻辑处理单元以开始并行处理。

步骤303:从存储地址中读取权重列表和窗口大小列表。具体过程为:将权重列表从DDR中读取出来,缓存到并行的RAM中后,然后从DDR中读取源图像数据。

步骤304:多个并行设置的逻辑处理单元根据权重列表和窗口大小列表对源图像进行尺寸变换。具体的,源图像数据以1个时钟8个字节进行行的并行处理,8个并行的逻辑处理单元从源图像中提取行处的起点跟终点以及窗口内像素值,按照在行窗口的位置对像素进行权重相乘和累加得到目标点的行变换。

步骤305:缓存每一行变换后的数据到RAM。

步骤306:对当前行和上一行缓存的数据进行列处理。例如,缓存第一行变换后的数据,对第二行变换中行对应位置变换后得到的像素点和上一行缓存的点就行列权重的相乘的累加和,这样列缓存的数据只需要一行,不用所有的列窗口的数据都准备好了才开始列变换。

步骤307:对列处理后的数据进行累加后,得到目标图像。行窗口的数据权重累加和得到后就可以跟上一行缓存的数据就行列权重累加和直到列窗口的所有数据都完成,以得到目标图像。

本实施例的方法具有综合软件跟硬件优势的特点,通过提取变换算法中的浮点和定点等运算部分放在软件平台上处理,将数据进行流水线并行处理放在硬件平台中,通过减少硬件运算量带来的延时提高了算法的性能,将部分功能在软件平台中实现,减少了算法开发周期,综合软件平台跟硬件平台的异构计算,实现一软件多硬件可以灵活的设计不同的需求。

实施例三

本实施例提供一种计算机可读存储介质,其包括程序,所述程序能够被处理器执行以实现如实施例二提供视频帧尺度变换方法。

本领域技术人员可以理解,上述实施方式中各种方法的全部或部分功能可以通过硬件的方式实现,也可以通过计算机程序的方式实现。当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机存储器、磁盘、光盘、硬盘等,通过计算机执行该程序以实现上述功能。例如,将程序存储在设备的存储器中,当通过处理器执行存储器中程序,即可实现上述全部或部分功能。另外,当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序也可以存储在服务器、另一计算机、磁盘、光盘、闪存盘或移动硬盘等存储介质中,通过下载或复制保存到本地设备的存储器中,或对本地设备的系统进行版本更新,当通过处理器执行存储器中的程序时,即可实现上述实施方式中全部或部分功能。

以上应用了具体个例对本发明进行阐述,只是用于帮助理解本发明,并不用以限制本发明。对于本发明所属技术领域的技术人员,依据本发明的思想,还可以做出若干简单推演、变形或替换。

相关技术
  • 一种视频帧尺度变换异构系统和方法以及存储介质
  • 一种多功能视频编码帧内划分方法、系统及存储介质
技术分类

06120113046021