CN104202602B - 执行视频编码的装置及方法 - Google Patents
执行视频编码的装置及方法 Download PDFInfo
- Publication number
- CN104202602B CN104202602B CN201410407515.3A CN201410407515A CN104202602B CN 104202602 B CN104202602 B CN 104202602B CN 201410407515 A CN201410407515 A CN 201410407515A CN 104202602 B CN104202602 B CN 104202602B
- Authority
- CN
- China
- Prior art keywords
- macro
- frame
- block
- row
- image frame
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明提供了一种执行视频编码的装置及方法,所述装置包括:帧类型判断单元,用于判断视频的原始图像帧中的当前图像帧是帧内预测图像帧还是帧间预测图像帧;宏块划分模式确定单元,用于从多个宏块划分模式中确定帧内预测图像帧的宏块划分模式和帧间预测图像帧的宏块划分模式;预测单元,用于在确定的帧内预测图像帧的宏块划分模式下对帧内预测图像帧进行帧内预测,并在确定的帧间预测图像帧的宏块划分模式下对帧间预测图像帧进行帧间预测;编码单元,用于对帧内预测后的帧内预测图像帧和帧间预测后的帧间预测图像帧进行变换、量化和编码,以得到编码后的当前图像帧。根据所述装置和方法,能够在很大程度上提高编码过程的速度。
Description
技术领域
本发明涉及视频编码技术,更具体地讲,涉及一种执行视频编码的装置及方法。
背景技术
随着多媒体信号处理技术的飞速发展,出现了很多用于执行视频编码的装置和方法。
在现有的视频编码方案中,无论执行帧内预测还是帧间预测,均需要进行宏块划分。具体说来,根据不同的宏块划分模式,每个帧内预测图像帧或帧间预测图像帧可被划分为多个宏块,这里,不同的宏块划分模式对应于不同的宏块大小。例如,根据16×16的宏块划分模式所划分出的每个宏块可包含16×16个像素点。
在现有的视频编码方案中,为了确定宏块划分模式,将串行地针对各个宏块进行运算,这种方式不仅速度慢,且执行过程复杂繁琐,编码效率比较低下。
发明内容
本发明的示例性实施例在于提供了一种执行视频编码的装置和方法,通过所述装置和方法,可提高编码速度。
根据本发明的一方面,提出了一种执行视频编码的装置,所述装置包括:帧类型判断单元,用于判断视频的原始图像帧中的当前图像帧是帧内预测图像帧还是帧间预测图像帧;宏块划分模式确定单元,用于从多个宏块划分模式中确定帧内预测图像帧的宏块划分模式和帧间预测图像帧的宏块划分模式;预测单元,用于在确定的帧内预测图像帧的宏块划分模式下对帧内预测图像帧进行帧内预测,并在确定的帧间预测图像帧的宏块划分模式下对帧间预测图像帧进行帧间预测;编码单元,用于对帧内预测后的帧内预测图像帧和帧间预测后的帧间预测图像帧进行变换、量化和编码,以得到编码后的当前图像帧,其中,针对所述多个宏块划分模式中的每一个宏块划分模式,宏块划分模式确定单元利用图形处理器的多个线程并行地计算帧内预测图像帧在所述每一个宏块划分模式下划分的所有宏块各自的最小匹配误差,将所有宏块各自的最小匹配误差求和以获得帧内预测图像帧的宏块匹配误差和,并将与最小宏块匹配误差和对应的宏块划分模式确定为帧内预测图像帧的宏块划分模式;并且,针对所述多个宏块划分模式中的每一个宏块划分模式,宏块划分模式确定单元利用图形处理器的多个线程并行地计算帧间预测图像帧在所述每一个宏块划分模式下划分的所有宏块各自的最小匹配误差,将所有宏块各自的最小匹配误差求和以获得帧间预测图像帧的宏块匹配误差和,并将与最小宏块匹配误差和对应的宏块划分模式确定为帧间预测图像帧的宏块划分模式。
在所述装置中,宏块划分模式确定单元可将以下各项中的至少一个分别存储于图形处理器的显存中的纹理内存,并利用图形处理器的多个线程基于纹理内存中存储的所述以下各项中的至少一个来确定帧内预测图像帧的宏块划分模式和帧间预测图像帧的宏块划分模式:帧内预测图像帧的各个像素点的像素值、帧间预测图像帧的各个像素点的像素值、帧间预测图像帧的参考帧的各个像素点的像素值。
在所述装置中,所述纹理内存可包括第一通道、第二通道、第三通道和第四通道,并且,四个相邻像素点的像素值被存储在同一纹理中。
在所述装置中,针对所述多个宏块划分模式中的每一个宏块划分模式,宏块划分模式确定单元可利用图形处理器的多个线程并行地通过钻石搜索方式确定帧内预测图像帧的所有宏块各自的帧内匹配宏块,其中,所述帧内匹配宏块是指针对帧内预测图像帧的每个宏块,在帧内预测图像帧的钻石搜索区域中与所述每个宏块之间具有最小匹配误差的宏块,其中,宏块划分模式确定单元利用图形处理器的所述多个线程计算帧内预测图像帧的所有宏块与各自的帧内匹配宏块之间的匹配误差,作为帧内预测图像帧的所有宏块各自的最小匹配误差;并且,针对所述多个宏块划分模式中的每一个宏块划分模式,宏块划分模式确定单元可利用图形处理器的多个线程并行地通过钻石搜索方式确定帧间预测图像帧的所有宏块各自的帧间匹配宏块,其中,所述帧间匹配宏块是指针对帧间预测图像帧的每个宏块,在帧间预测图像帧的参考帧的钻石搜索区域中与所述每个宏块之间具有最小匹配误差的宏块,其中,宏块划分模式确定单元利用图形处理器的所述多个线程计算帧间预测图像帧的所有宏块与各自的帧间匹配宏块之间的匹配误差,作为帧间预测图像帧的所有宏块各自的最小匹配误差。
在所述装置中,所述匹配误差可为宏块与各自的帧内匹配宏块或帧间匹配宏块之间的像素值绝对误差的和。
在所述装置中,帧类型判断单元可分别对当前图像帧和当前图像帧的前一帧进行降采样以得到当前缩放帧和先前缩放帧,并基于当前缩放帧与先前缩放帧之间的差异判断当前图像帧是帧内预测图像帧还是帧间预测图像帧。
在所述装置中,帧类型判断单元可计算当前缩放帧的所有宏块与各自的匹配宏块之间的匹配误差,将所述所有宏块与各自的匹配宏块之间的匹配误差求和以获得当前缩放帧的匹配误差和,当所述匹配误差和大于预定缩放帧运动阈值时,判断当前图像帧为帧内预测图像帧,其中,所述匹配宏块是指针对当前缩放帧的每个宏块,在先前缩放帧中与所述每个宏块之间的匹配误差小于预定宏块运动阈值的对应宏块或在先前缩放帧中与所述每个宏块之间的匹配误差最小的宏块。
在所述装置中,帧类型判断单元可通过钻石搜索方式计算当前缩放帧的所有宏块与各自的匹配宏块之间的匹配误差。
在所述装置中,所述装置可还包括去块滤波单元,用于对反量化和反变换后的当前图像帧进行去块滤波,以得到当前图像帧的重构帧,其中,反量化和反变换后的当前图像帧通过编码单元执行的以下处理获得:在对帧内预测后的帧内预测图像帧和帧间预测后的帧间预测图像帧进行变换、量化之后,对得到的结果进行反量化和反变换。
在所述装置中,去块滤波单元可将反量化和反变换后的当前图像帧划分成包含16×16个像素点的多个宏块,其中,去块滤波单元利用图形处理器的多个线程按照以下步骤并行地对所述多个宏块进行去块滤波:(1)对宏块中位于第0行到第15行并位于第9列到第14列的像素点进行垂直滤波;(2)对宏块中位于第9列到第15列并位于第9行到第12行的像素点进行水平滤波;(3)对宏块中位于第9列到第12列并位于第0行到第8行和第13行到第15行的像素点进行水平滤波;(4)对宏块中位于第9行到第15行并位于第0列到第8列和第13列到第15列的像素点进行垂直滤波;(5)对宏块中位于第13列到第15列并位于第0行到第8行和第13行到第15行的像素点进行水平滤波;(6)对宏块中位于第0行到第8行并位于第0列到第8列和第13列到第15列的像素点进行垂直滤波;(7)对宏块中位于第9行到第13行并位于第0列到第8列的像素点进行水平滤波;(8)对宏块中位于第0列到第8列并位于第0行到第8行和第13行到第15行的像素点进行水平滤波。
根据本发明的另一方面,提供了一种执行视频编码的方法,所述方法包括以下步骤:(a)判断视频的原始图像帧中的当前图像帧是帧内预测图像帧还是帧间预测图像帧;(b)从多个宏块划分模式中确定帧内预测图像帧的宏块划分模式和帧间预测图像帧的宏块划分模式;(c)在确定的帧内预测图像帧的宏块划分模式下对帧内预测图像帧进行帧内预测,并在确定的帧间预测图像帧的宏块划分模式下对帧间预测图像帧进行帧间预测;(d)对帧内预测后的帧内预测图像帧和帧间预测后的帧间预测图像帧进行变换、量化和编码,以得到编码后的当前图像帧,其中,在步骤(b)中,针对所述多个宏块划分模式中的每一个宏块划分模式,利用图形处理器的多个线程并行地计算帧内预测图像帧在所述每一个宏块划分模式下划分的所有宏块各自的最小匹配误差,将所有宏块各自的最小匹配误差求和以获得帧内预测图像帧的宏块匹配误差和,并将与最小宏块匹配误差和对应的宏块划分模式确定为帧内预测图像帧的宏块划分模式;并且,针对所述多个宏块划分模式中的每一个宏块划分模式,利用图形处理器的多个线程并行地计算帧间预测图像帧在所述每一个宏块划分模式下划分的所有宏块各自的最小匹配误差,将所有宏块各自的最小匹配误差求和以获得帧间预测图像帧的宏块匹配误差和,并将与最小宏块匹配误差和对应的宏块划分模式确定为帧间预测图像帧的宏块划分模式。
在所述方法中,在步骤(b)中,可将以下各项中的至少一个分别存储于图形处理器的显存中的纹理内存,并利用图形处理器的多个线程基于纹理内存中存储的所述以下各项中的至少一个来确定帧内预测图像帧的宏块划分模式和帧间预测图像帧的宏块划分模式:将以下各项中的至少一个分别存储于图形处理器的显存中的纹理内存:帧内预测图像帧的各个像素点的像素值、帧间预测图像帧的各个像素点的像素值、帧间预测图像帧的参考帧的各个像素点的像素值。
在所述方法中,所述纹理内存可包括第一通道、第二通道、第三通道和第四通道,并且,四个相邻像素点的像素值被存储在同一纹理中。
在所述方法中,在步骤(b)中,针对所述多个宏块划分模式中的每一个宏块划分模式,可通过利用图形处理器的多个线程并行地通过钻石搜索方式确定帧内预测图像帧的所有宏块各自的帧内匹配宏块,其中,所述帧内匹配宏块是指针对帧内预测图像帧的每个宏块,在帧内预测图像帧的钻石搜索区域中与所述每个宏块之间具有最小匹配误差的宏块,其中,通过利用图形处理器的所述多个线程计算帧内预测图像帧的所有宏块与各自的帧内匹配宏块之间的匹配误差,作为帧内预测图像帧的所有宏块各自的最小匹配误差;并且,针对所述多个宏块划分模式中的每一个宏块划分模式,可通过利用图形处理器的多个线程并行地通过钻石搜索方式确定帧间预测图像帧的所有宏块各自的帧间匹配宏块,其中,所述帧间匹配宏块是指针对帧间预测图像帧的每个宏块,在帧间预测图像帧的参考帧的钻石搜索区域中与所述每个宏块之间具有最小匹配误差的宏块,其中,通过利用图形处理器的所述多个线程计算帧间预测图像帧的所有宏块与各自的帧间匹配宏块之间的匹配误差,作为帧间预测图像帧的所有宏块各自的最小匹配误差。
在所述方法中,所述匹配误差可为宏块与各自的帧内匹配宏块或帧间匹配宏块之间的像素值绝对误差的和。
在所述方法中,步骤(a)可包括:(a1)分别对当前图像帧和当前图像帧的前一帧进行降采样以得到当前缩放帧和先前缩放帧;(a2)基于当前缩放帧与先前缩放帧之间的差异判断当前图像帧是帧内预测图像帧还是帧间预测图像帧。
在所述方法中,步骤(a2)可包括:计算当前缩放帧的所有宏块与各自的匹配宏块之间的匹配误差,将所述所有宏块与各自的匹配宏块之间的匹配误差求和以获得当前缩放帧的匹配误差和,当所述匹配误差和大于预定缩放帧运动阈值时,判断当前图像帧为帧内预测图像帧,其中,所述匹配宏块是指针对当前缩放帧的每个宏块,在先前缩放帧中与所述每个宏块之间的匹配误差小于预定宏块运动阈值的对应宏块或在先前缩放帧中与所述每个宏块之间的匹配误差最小的宏块。
在所述方法中,在步骤(a2)中,可通过钻石搜索方式计算当前缩放帧的所有宏块与各自的匹配宏块之间的匹配误差。
在所述方法中,所述方法可还包括:(e)对反量化和反变换后的当前图像帧进行去块滤波,以得到当前图像帧的重构帧,其中,反量化和反变换后的当前图像帧通过进行以下处理后获得:在对帧内预测后的帧内预测图像帧和帧间预测后的帧间预测图像帧进行变换、量化之后,对得到的结果进行反量化和反变换。
在所述方法中,在步骤(e)中,可将反量化和反变换后的当前图像帧划分成包含16×16个像素点的多个宏块,并利用图形处理器的多个线程按照以下步骤并行地对所述多个宏块进行去块滤波:(1)对宏块中位于第0行到第15行并位于第9列到第14列的像素点进行垂直滤波;(2)对宏块中位于第9列到第15列并位于第9行到第12行的像素点进行水平滤波;(3)对宏块中位于第9列到第12列并位于第0行到第8行和第13行到第15行的像素点进行水平滤波;(4)对宏块中位于第9行到第15行并位于第0列到第8列和第13列到第15列的像素点进行垂直滤波;(5)对宏块中位于第13列到第15列并位于第0行到第8行和第13行到第15行的像素点进行水平滤波;(6)对宏块中位于第0行到第8行并位于第0列到第8列和第13列到第15列的像素点进行垂直滤波;(7)对宏块中位于第9行到第13行并位于第0列到第8列的像素点进行水平滤波;(8)对宏块中位于第0列到第8列并位于第0行到第8行和第13行到第15行的像素点进行水平滤波。
在根据本发明示例性实施例的执行视频编码的装置和方法中,通过在确定宏块划分模式时采用并行的处理方式,可缩短确定宏块划分模式的处理时间,提高了编码速度。
附图说明
通过下面结合附图对本发明的示例性实施例进行的描述,本发明的上述和其他目的和特点将会变得更加清楚,其中:
图1示出根据本发明示例性实施例的执行视频编码的装置的框图;
图2示出根据本发明示例性实施例的执行视频编码的装置中的预测单元的框图;
图3A和图3B示出根据本发明示例性实施例的执行钻石搜索的模板的示例;
图4示出根据本发明示例性实施例的纹理内存的数据存储方式的示例;
图5示出根据本发明另一示例性实施例的纹理内存的数据存储方式的示例;
图6A至图6H示出根据本发明示例性实施例的执行去块滤波的示例;
图7示出根据本发明示例性实施例的执行视频编码的方法的流程图;
图8示出根据本发明示例性实施例的确定宏块划分模式的步骤的流程图;
图9示出根据本发明示例性实施例的对当前图像帧进行预测的步骤的流程图;
图10示出根据本发明示例性实施例的判断当前图像帧的预测类型的步骤的流程图;
图11示出根据本发明示例性实施例的执行去块滤波的步骤的流程图。
具体实施方式
现将详细参照本发明的实施例,所述实施例的示例在附图中示出,其中,相同的标号始终指的是相同的部件。
图1示出根据本发明示例性实施例的执行视频编码的装置的框图。
如图1所示,根据本发明示例性实施例的执行视频编码的装置可包括:帧类型判断单元100、宏块划分模式确定单元200、预测单元300、编码单元400。这些单元可由数字信号处理器、现场可编程门阵列等通用硬件处理器来实现,也可通过专用芯片等专用硬件处理器来实现,还可完全通过计算机程序来以软件方式实现,例如,被实现为安装在多媒体编码设备中用于执行视频编码的各个模块。这里,执行视频编码时所遵循的视频编码标准可以是基于帧内或帧间预测的视频编码标准,例如,H.264视频编码标准、HEVC视频编码标准等。
具体说来,帧类型判断单元100用于判断视频的原始图像帧中的当前图像帧是帧内预测图像帧还是帧间预测图像帧。这里,作为示例,视频的原始图像帧中的各个图像帧可具有YUV格式、RGB格式或各种其他图像格式。
作为示例,帧类型判断单元100可将原始图像帧中的当前图像帧和当前图像帧的前一帧分别划分为Z个宏块,其中,Z为大于1的自然数。然后,帧类型判断单元100基于当前图像帧的Z个宏块和当前图像帧的前一帧的Z个宏块之间的差异来判断当前图像帧是帧内预测图像帧还是帧间预测图像帧。具体说来,帧类型判断单元100可将与前一帧差异较大的当前图像帧判断为帧内预测图像帧,并将与前一帧差异较小的当前图像帧判断为帧间预测图像帧。
宏块划分模式确定单元200用于从多个宏块划分模式中确定帧内预测图像帧的宏块划分模式和帧间预测图像帧的宏块划分模式。
具体地讲,当帧类型判断单元100判断当前图像帧为帧内预测图像帧时,针对所述多个宏块划分模式中的每一个宏块划分模式,宏块划分模式确定单元200利用图形处理器的多个线程并行地计算帧内预测图像帧在所述每一个宏块划分模式下划分的所有宏块各自的最小匹配误差,将所有宏块各自的最小匹配误差求和以获得帧内预测图像帧的宏块匹配误差和,并将与最小宏块匹配误差和对应的宏块划分模式确定为帧内预测图像帧的宏块划分模式。当帧类型判断单元100判断当前图像帧为帧间预测图像帧时,针对所述多个宏块划分模式中的每一个宏块划分模式,宏块划分模式确定单元200利用图形处理器的多个线程并行地计算帧间预测图像帧在所述每一个宏块划分模式下划分的所有宏块各自的最小匹配误差,将所有宏块各自的最小匹配误差求和以获得帧间预测图像帧的宏块匹配误差和,并将与最小宏块匹配误差和对应的宏块划分模式确定为帧间预测图像帧的宏块划分模式。
作为示例,宏块划分模式可表示为P×Q,其指示相应划分的宏块大小为P×Q,其中,P表示宏块中每行的像素点个数,P为16或8;Q表示宏块中每列像素点的个数,Q为16或8。相应地,宏块划分模式可进一步表示为16×16、16×8、8×16或8×8,即,每个宏块可包含16×16、16×8、8×16或8×8个像素点。
例如,宏块划分模式确定单元200可计算帧内预测图像帧或帧间预测图像帧分别在16×16、16×8、8×16、8×8这四种宏块划分模式下的宏块匹配误差和,并将与最小宏块匹配误差和对应的宏块划分模式确定为帧内预测图像帧或帧间预测图像帧的宏块划分模式。
预测单元300用于在确定的帧内预测图像帧的宏块划分模式下对帧内预测图像帧进行帧内预测,并在确定的帧间预测图像帧的宏块划分模式下对帧间预测图像帧进行帧间预测。
作为示例,以下参照图2来描述根据本发明示例性实施例的执行视频编码的装置中的预测单元300的示例性结构。
图2示出根据本发明示例性实施例的执行视频编码的装置中的预测单元的框图。参照图2,根据本发明示例性实施例的预测单元300可包括:运动估计单元301、运动补偿单元302和帧内预测单元303。
具体地讲,运动估计单元301用于在确定的帧间预测图像帧的宏块划分模式下对帧间预测图像帧进行运动估计,以得到运动估计后的帧间预测图像帧。
作为示例,运动估计单元301可搜索帧间预测图像帧在确定的宏块划分模式下划分的各个宏块在帧间预测图像帧的参考帧中的匹配宏块,计算各个宏块相对于各自的匹配宏块的位置移动以作为所述各个宏块的运动矢量。这里,帧间预测图像帧的每个宏块与它的匹配宏块之间具有最小匹配误差。
运动补偿单元302用于在确定的帧间预测图像帧的宏块划分模式下对运动估计后的帧间预测图像帧进行运动补偿,以得到运动补偿后的帧间预测图像帧。
作为示例,运动补偿单元302可基于运动估计的结果来产生帧间预测图像帧的预测帧,并获取帧间预测图像帧与它的预测帧之间的残差信息。
帧内预测单元303用于在确定的帧内预测图像的宏块划分模式下对帧内预测图像帧进行帧内预测,以得到帧内预测后的帧内预测图像帧。
作为示例,帧内预测单元303可在确定的帧内预测图像的宏块划分模式下对帧内预测图像帧的各个宏块进行帧内预测,具体说来,帧内预测单元303可利用帧内预测图像帧中的已编码像素点来预测帧内预测图像帧中的待编码像素点。例如,假设帧内预测图像帧的宏块划分模式为4×4,因此,待编码宏块的像素值可由与待编码宏块在空间位置上最接近的已编码像素点的像素值加权求和得到。
应该理解,上述对运动估计、运动补偿、帧内预测的描述仅作为示例,本领域技术人员可采用适当的方式来执行上述处理,例如,运动补偿可通过全局运动补偿、分块运动补偿、可变分块运动补偿或重叠分块运动补偿等方式来实现。
再次参照图1,编码单元400用于对帧内预测后的帧内预测图像帧和帧间预测后的帧间预测图像帧进行变换、量化和编码,以得到编码后的当前图像帧。
作为示例,所述变换可包括离散余弦变换、离散傅里叶变换、小波变换等。所述编码可包括熵编码(例如,香农编码、哈夫曼编码、算术编码)等。
可以看出,通过在确定宏块划分模式时采用并行的处理方式,可缩短确定宏块划分模式的处理时间,提高了编码速度。
以下,将结合具体示例对根据本发明的示例性实施例的执行视频编码的装置中的帧类型判断单元100进行更加详细的描述。
优选地,帧类型判断单元100可分别对当前图像帧和当前图像帧的前一帧进行降采样以得到当前缩放帧和先前缩放帧,并基于当前缩放帧与先前缩放帧之间的差异判断当前图像帧是帧内预测图像帧还是帧间预测图像帧。
作为示例,帧类型判断单元100可将原始图像帧中的当前图像帧根据降采样表进行缩放以得到当前缩放帧,将当前图像帧的前一帧根据相同的降采样表进行缩放以得到先前缩放帧,并基于当前缩放帧与先前缩放帧之间的差异判断当前图像帧是帧内预测图像帧还是帧间预测图像帧。具体说来,如果当前缩放帧与先前缩放帧之间的差异较大,则帧类型判断单元100可将相应的当前图像帧判断为帧内预测图像帧,否则,帧类型判断单元100可将相应的当前图像帧判断为帧间预测图像帧。
这里,降采样表可包括映射矩阵,该映射矩阵是基于当前图像帧的分辨率和当前缩放帧的分辨率所得到的。当前缩放帧的分辨率可以是预先设定的分辨率。例如,当前图像帧的分辨率为A×B,当前缩放帧的分辨率被预先设定为C×D,利用A与C可计算得到像素宽度映射矩阵,利用B与D可计算得到像素高度映射矩阵,相应地,所述降采样表可包括所述像素宽度映射矩阵和所述像素高度映射矩阵。
可选地,帧类型判断单元100可计算当前缩放帧的所有宏块与各自的匹配宏块之间的匹配误差,将所有宏块与各自的匹配宏块之间的匹配误差求和以获得当前缩放帧的匹配误差和,当所述匹配误差和大于预定缩放帧运动阈值时,判断当前图像帧为帧内预测图像帧,其中,匹配宏块是指针对当前缩放帧的每个宏块,在先前缩放帧中与所述每个宏块之间的匹配误差小于预定宏块运动阈值的对应宏块或在先前缩放帧中与所述每个宏块之间的匹配误差最小的宏块。
作为示例,匹配误差可用于衡量两个宏块之间的匹配程度,具体说来,可将匹配误差表示为两个宏块之间的像素值的绝对误差的和(即,绝对误差和)。相应地,当前缩放帧的匹配误差和即为当前缩放帧的所有宏块与各自的匹配宏块之间的绝对误差和的和。
作为示例,帧类型判断单元100可通过钻石搜索方式计算当前缩放帧的所有宏块与各自的匹配宏块之间的匹配误差。例如,帧类型判断单元100可通过钻石搜索方式确定当前缩放帧的每一个宏块在先前缩放帧中的匹配宏块,从而计算所述每一个宏块与它的匹配宏块之间的匹配误差。
具体地讲,在执行钻石搜索时,可采用大钻石搜索模板(LDSP)(如图3A所示)和小钻石搜索模板(SDSP)(如图3B所示)。参照图3A和图3B,LDSP可包含9个点,SDSP可包含5个点,这里的每个点都对应一个宏块。
具体说来,针对当前缩放帧中的某个当前宏块,首先以所述某个当前宏块为中心点,基于LDSP在先前缩放帧中搜索与所述当前宏块之间的匹配误差(例如,绝对误差和)小于预定宏块运动阈值的宏块。如果搜索到了与所述当前宏块之间的匹配误差小于预定宏块运动阈值的宏块,则将搜索到的宏块确定为所述当前宏块的匹配宏块。如果未能搜索到与所述当前宏块之间的匹配误差小于预定宏块运动阈值的宏块,则以先前缩放帧中通过钻石搜索方式得到的匹配误差最小的宏块为中心点,基于SDSP继续搜索与所述当前宏块之间的匹配误差小于预定宏块运动阈值的宏块。如果搜索到了与所述当前宏块之间的匹配误差小于预定宏块运动阈值的宏块,则将搜索到的宏块确定为所述当前宏块的匹配宏块。如果仍旧不存在与所述当前宏块之间的匹配误差小于预定宏块运动阈值的宏块,则将通过钻石搜索方式得到的匹配误差最小的宏块确定为匹配宏块。在如上搜索到匹配宏块之后,帧类型判断单元100可计算当前宏块与匹配宏块之间的匹配误差。
如上所述,根据本发明示例性实施例的帧类型判断单元100通过采用降采样和钻石搜索方式来实现帧内和帧间预测图像帧的判断,不仅降低了计算量,还在保证准确度的前提下提高了判断帧类型的速度。
以下,将结合具体示例对根据本发明的示例性实施例的执行视频编码的装置中的宏块划分模式确定单元200进行更加详细的描述。
作为示例,宏块划分模式确定单元200可将以下各项中的至少一个分别存储于图形处理器的显存中的纹理内存,并利用图形处理器的多个线程基于纹理内存中存储的所述以下各项中的至少一个来确定帧内预测图像帧的宏块划分模式和帧间预测图像帧的宏块划分模式:帧内预测图像帧的各个像素点的像素值、帧间预测图像帧的各个像素点的像素值、帧间预测图像帧的参考帧的各个像素点的像素值。
这里,具体说来,当帧类型判断单元100判断当前图像帧为帧间预测图像帧时,宏块划分模式确定单元200将当前图像帧的各个像素点的像素值和当前图像帧的参考帧的各个像素点的像素值存储于纹理内存。当帧类型判断单元100判断当前图像帧为帧内预测图像帧时,宏块划分模式确定单元200将当前图像帧的各个像素点的像素值存储于纹理内存。
图4示出根据本发明示例性实施例的纹理内存的数据存储方式的示例。如图4所示,纹理内存可包括四个通道(图4中的R、G、B、A)。假设将存储编号为0到63的64个像素点的像素值,则可如图4所示依次将所述64个像素点的像素值存储在R、G、B、A这四个通道中。如图4所示,编号为0到3的像素点的像素值被存储在同一纹理中,以此类推,编号为4i到4i+3的像素点的像素值被存储在同一纹理中,其中,i为0到15之间的正整数。
在图4所示的数据存储方式下,当宏块划分模式确定单元200利用图形处理器的多个线程基于纹理内存中存储的像素值执行运算时,期望读取的相邻四个像素常常会位于两个纹理中(例如,编号为5到8的像素点的像素值即被存储在两个纹理中),这需要连续读取两个纹理中的数据,降低了运算速度。
为此,优选地,可按照图5所示的数据存储方式在纹理内存中存储像素值。具体说来,图5所示的纹理内存包括第一通道(例如,R通道)、第二通道(例如,G通道)、第三通道(例如,B通道)和第四通道(例如,A通道),并且,四个相邻像素点的像素值被存储在同一纹理中。
具体地讲,假设帧内预测图像帧、帧间预测图像帧、帧间预测图像帧的参考帧均具有N个像素点,依次编号为第0像素点到第N-1像素点,其中,N为大于1的正整数。
第一通道(例如,R通道)存储以下项中的至少一个:帧内预测图像帧的第0像素点到第N-4像素点的像素值、帧间预测图像帧的第0像素点到第N-4像素点的像素值、帧间预测图像帧的参考帧的第0像素点到第N-4像素点的像素值。
第二通道(例如,G通道)存储以下项中的至少一个:帧内预测图像帧的第1像素点到第N-3像素点的像素值、帧间预测图像帧的第1像素点到第N-3像素点的像素值、帧间预测图像帧的参考帧的第1像素点到第N-3像素点的像素值。
第三通道(例如,B通道)存储以下项中的至少一个:帧内预测图像帧的第2像素点到第N-2像素点的像素值、帧间预测图像帧的第2像素点到第N-2像素点的像素值、帧间预测图像帧的参考帧的第2像素点到第N-2像素点的像素值。
第四通道(例如,A通道)存储以下项中的至少一个:帧内预测图像帧的第3像素点到第N-1像素点的像素值、帧间预测图像帧的第3像素点到第N-1像素点的像素值、帧间预测图像帧的参考帧的第3像素点到第N-1像素点的像素值。
也就是说,第一通道的存储空间在平移一个地址、两个地址和三个地址后被分别填充到第二通道、第三通道和第四通道。特别地,对于第二通道的最后一个地址、第三通道的最后两个地址和第四通道的最后三个地址,相应地填充顺序编号的后续像素点的像素值。
参照图5,编号为0到15的像素点的像素值被存储在R通道中,编号为1到16的像素点的像素值被存储在G通道中,编号为2到17的像素点的像素值被存储在B通道中,编号为3到18的像素点的像素值被存储在A通道中。
通过采用根据本发明示例性实施例的数据存储方式,当宏块划分模式确定单元200利用图形处理器的多个线程基于纹理内存中存储的像素值执行运算时,不论期望从哪个像素开始读取连续的四个像素,均可仅通过读取一个纹理来实现,由此提高了运算速度。
在将相关图像帧的像素值存储在纹理内存之后,作为优选方式,针对多个宏块划分模式中的每一个宏块划分模式,宏块划分模式确定单元200可利用图形处理器的多个线程并行地通过钻石搜索方式确定帧内预测图像帧的所有宏块各自的帧内匹配宏块,其中,帧内匹配宏块是指针对帧内预测图像帧的每个宏块,在帧内预测图像帧的钻石搜索区域中与所述每个宏块之间具有最小匹配误差的宏块,其中,宏块划分模式确定单元200利用图形处理器的所述多个线程计算帧内预测图像帧的所有宏块与各自的帧内匹配宏块之间的匹配误差,作为帧内预测图像帧的所有宏块各自的最小匹配误差。并且,针对所述多个宏块划分模式中的每一个宏块划分模式,宏块划分模式确定单元200可利用图形处理器的多个线程并行地通过钻石搜索方式确定帧间预测图像帧的所有宏块各自的帧间匹配宏块,其中,帧间匹配宏块是指针对帧间预测图像帧的每个宏块,在帧间预测图像帧的参考帧的钻石搜索区域中与所述每个宏块之间具有最小匹配误差的宏块,其中,宏块划分模式确定单元200利用图形处理器的所述多个线程计算帧间预测图像帧的所有宏块与各自的帧间匹配宏块之间的匹配误差,作为帧间预测图像帧的所有宏块各自的最小匹配误差。
这里,宏块划分模式确定单元200可利用图像处理器的多个线程对帧内预测图像帧或帧间预测图像帧中的各个宏块并行地执行上述处理过程以确定所有宏块各自的最小匹配误差,将所有宏块各自的最小匹配误差求和以获得帧内预测图像帧或帧间预测图像帧的宏块匹配误差和,并将与最小宏块匹配误差和对应的宏块划分模式确定为帧内预测图像帧或帧间预测图像帧的宏块划分模式。
可选地,匹配误差可为宏块与各自的帧内匹配宏块或帧间匹配宏块之间的像素值绝对误差的和。
在一个示例中,当帧类型判断单元100判断当前图像帧为帧内预测图像帧时,针对多个宏块划分模式中的每一个宏块划分模式,宏块划分模式确定单元200利用图形处理器的多个线程并行地通过钻石搜索方式确定当前图像帧的所有宏块各自的帧内匹配宏块。具体地讲,针对帧内预测图像帧中的某个当前宏块,首先以所述某个当前宏块为中心点,基于LDSP在帧内预测图像帧中搜索与所述当前宏块之间的匹配误差(例如,绝对误差和)最小的宏块。然后以基于LDSP搜索到的匹配误差最小的宏块为中心点,基于SDSP在帧内预测图像帧中继续搜索与所述当前宏块之间的匹配误差最小的宏块。将基于SDSP搜索到的匹配误差最小的宏块确定为所述当前宏块的帧内匹配宏块。
在另一个示例中,当帧类型判断单元100判断当前图像帧为帧间预测图像帧时,针对多个宏块划分模式中的每一个宏块划分模式,宏块划分模式确定单元200利用图形处理器的多个线程并行地通过钻石搜索方式确定当前图像帧的所有宏块各自的帧间匹配宏块。具体地讲,针对帧间预测图像帧中的某个当前宏块,首先以所述某个当前宏块为中心点,基于LDSP在帧间预测图像帧的参考帧中搜索与所述当前宏块之间的匹配误差(例如,绝对误差和)最小的宏块。然后以以基于LDSP搜索到的匹配误差最小的宏块为中心点,基于SDSP在帧间预测图像帧的参考帧中继续搜索与所述当前宏块之间的匹配误差最小的宏块。将基于SDSP搜索到的匹配误差最小的宏块确定为所述当前宏块的帧间匹配宏块。
根据本发明示例性实施例的宏块划分模式确定单元200可并行地计算各个宏块的最小匹配误差,从而缩短了用于确定宏块划分模式的时间,提高了编码速度。
可选地,根据本发明示例性实施例的执行视频编码的装置可还包括去块滤波单元。去块滤波单元可对反量化和反变换后的当前图像帧进行去块滤波,以得到当前图像帧的重构帧,其中,反量化和反变换后的当前图像帧可通过编码单元400执行的以下处理获得:在对帧内预测后的帧内预测图像帧和帧间预测后的帧间预测图像帧进行变换、量化之后,对得到的结果进行反量化和反变换。
进一步地,当前图像帧的重构帧可被用作在当前图像帧之后进行编码的图像帧的参考帧。
以下参照图6A至图6H来描述根据本发明示例性实施例的执行视频编码的装置中的去块滤波单元执行去块滤波的过程。
具体地讲,去块滤波单元可将反量化和反变换后的当前图像帧划分成包含16×16个像素点的多个宏块,其中,去块滤波单元利用图形处理器的多个线程按照以下步骤并行地对所述宏块进行去块滤波。
第一步,如图6A所示,对宏块中位于第0行到第15行并位于第9列到第14列的像素点进行垂直滤波。
第二步,如图6B所示,对宏块中位于第9列到第15列并位于第9行到第12行的像素点进行水平滤波。
第三步,如图6C所示,对宏块中位于第9列到第12列并位于第0行到第8行和第13行到第15行的像素点进行水平滤波。
第四步,如图6D所示,对宏块中位于第9行到第15行并位于第0列到第8列和第13列到第15列的像素点进行垂直滤波。
第五步,如图6E所示,对宏块中位于第13列到第15列并位于第0行到第8行和第13行到第15行的像素点进行水平滤波。
第六步,如图6F所示,对宏块中位于第0行到第8行并位于第0列到第8列和第13列到第15列的像素点进行垂直滤波。
第七步,如图6G所示,对宏块中位于第9行到第13行并位于第0列到第8列的像素点进行水平滤波。
第八步,如图6H所示,对宏块中位于第0列到第8列并位于第0行到第8行和第13行到第15行的像素点进行水平滤波。
这里,应该理解,通过上述方式,去块滤波单元可利用图形处理器的多个线程并行地对多个宏块进行去块滤波,而且各步滤波运算的独立性好,采用的线程数量相对较少,节省了系统资源。
以下,将结合图7到图11来描述根据本发明示例性实施例的执行视频编码的方法。所述方法可以由图1到图6所示的装置来完成,也可通过计算机程序来实现。
图7示出根据本发明示例性实施例的执行视频编码的方法的流程图。
在步骤S100,判断视频的原始图像帧中的当前图像帧是帧内预测图像帧还是帧间预测图像帧。这里,作为示例,视频的原始图像帧中的各个图像帧可具有YUV格式、RGB格式或各种其他图像格式。
作为示例,在步骤S100,可将原始图像帧中的当前图像帧和当前图像帧的前一帧分别划分为Z个宏块,其中,Z为大于1的自然数。然后,基于当前图像帧的Z个宏块和当前图像帧的前一帧的Z个宏块之间的差异来判断当前图像帧是帧内预测图像帧还是帧间预测图像帧。具体说来,可将与前一帧差异较大的当前图像帧判断为帧内预测图像帧,并将与前一帧差异较小的当前图像帧判断为帧间预测图像帧。
在步骤S200,从多个宏块划分模式中确定帧内预测图像帧的宏块划分模式和帧间预测图像帧的宏块划分模式。
作为示例,宏块划分模式可表示为P×Q,其指示相应划分的宏块大小为P×Q,其中,P表示宏块中每行的像素点个数,P为16或8;Q表示宏块中每列像素点的个数,Q为16或8。相应地,宏块划分模式可进一步表示为16×16、16×8、8×16或8×8,即,每个宏块可包含16×16、16×8、8×16或8×8个像素点。
例如,在步骤S200,可计算帧内预测图像帧或帧间预测图像帧分别在16×16、16×8、8×16、8×8这四种宏块划分模式下的宏块匹配误差和,并将与最小宏块匹配误差和对应的宏块划分模式确定为帧内预测图像帧或帧间预测图像帧的宏块划分模式。
以下,参照图8对图7中确定宏块划分模式的步骤进行具体的阐述。图8示出根据本发明示例性实施例的确定宏块划分模式的步骤的流程图。
参照图8,在步骤S210,确定在步骤S100中当前图像帧被判断为帧内预测图像帧还是帧间预测图像帧。
当在步骤S210确定当前图像帧被判断为帧内预测图像帧时,在步骤S201,针对多个宏块划分模式中的每一个宏块划分模式,利用图形处理器的多个线程并行地计算帧内预测图像帧在每一个宏块划分模式下划分的所有宏块各自的最小匹配误差。
在步骤S202,将每一个宏块划分模式下所有宏块各自的最小匹配误差求和以获得帧内预测图像帧的宏块匹配误差和。
在步骤S203,将与最小宏块匹配误差和对应的宏块划分模式确定为帧内预测图像帧的宏块划分模式。
当在步骤S210确定当前图像帧被判断为帧间预测图像帧时,在步骤S204,针对多个宏块划分模式中的每一个宏块划分模式,利用图形处理器的多个线程并行地计算帧间预测图像帧在每一个宏块划分模式下划分的所有宏块各自的最小匹配误差。
在步骤S205,将每一个宏块划分模式下所有宏块各自的最小匹配误差求和以获得帧间预测图像帧的宏块匹配误差和。
在步骤S206,将与最小宏块匹配误差和对应的宏块划分模式确定为帧间预测图像帧的宏块划分模式。
再次参照图7,在步骤S300,在确定的帧内预测图像帧的宏块划分模式下对帧内预测图像帧进行帧内预测,并在确定的帧间预测图像帧的宏块划分模式下对帧间预测图像帧进行帧间预测。
以下,参照图9对图7中对当前图像帧进行预测的步骤进行具体阐述。图9示出根据本发明示例性实施例的对当前图像帧进行预测的步骤的流程图。
参照图9,在步骤S310,确定在步骤S100中当前图像帧被判断为帧内预测图像帧还是帧间预测图像帧。
当在步骤S310确定当前图像帧被判断为帧内预测图像帧时,在步骤S301,在确定的帧内预测图像帧的宏块划分模式下对帧内预测图像帧进行帧内预测。具体地讲,作为示例,可利用帧内预测图像帧中的已编码像素点来预测帧内预测图像帧中的待编码像素点。例如,假设帧内预测图像帧的宏块划分模式为4×4,因此,待编码宏块的像素值可由与待编码宏块在空间位置上最接近的已编码像素点的像素值加权求和得到。
当在步骤S310确定当前图像帧被判断为帧间预测图像帧时,在步骤S302,在确定的帧间预测图像帧的宏块划分模式下对帧间预测图像帧进行运动估计。具体地讲,作为示例,可搜索帧间预测图像帧在确定的宏块划分模式下划分的各个宏块在帧间预测图像帧的参考帧中的匹配宏块,计算各个宏块相对于各自的匹配宏块的位置移动以作为所述各个宏块的运动矢量。这里,帧间预测图像帧的每个宏块与它的匹配宏块之间具有最小匹配误差。
在步骤S303,对运动估计后的帧间预测图像帧进行运动补偿。具体地讲,作为示例,可基于运动估计的结果来产生帧间预测图像帧的预测帧,并获取帧间预测图像帧与它的预测帧之间的残差信息。
再次参照图7,在步骤S400,对帧内预测后的帧内预测图像帧和帧间预测后的帧间预测图像帧进行变换、量化和编码,以得到编码后的当前图像帧。
作为示例,所述变换可包括离散余弦变换、离散傅里叶变换、小波变换等。所述编码可包括熵编码(例如,香农编码、哈夫曼编码、算术编码)等。
应该理解,当在步骤S100中判断当前图像帧为帧内预测图像帧时,在步骤S200,从多个宏块划分模式中确定当前图像帧的帧内宏块划分模式,在步骤S300,在确定的帧内宏块划分模式下对当前图像帧进行帧内预测,在步骤S400,对帧内预测后的当前图像帧进行变换、量化和编码,以得到编码后的当前图像帧。并且,当在步骤S100中判断当前图像帧为帧间预测图像帧时,在步骤S200,从多个宏块划分模式中确定当前图像帧的帧间宏块划分模式,在步骤S300,在确定的帧间宏块划分模式下对当前图像帧进行帧间预测,在步骤S400,对帧间预测后的当前图像帧进行变换、量化和编码,以得到编码后的当前图像帧。
可以看出,通过在确定宏块划分模式时采用并行的处理方式,可缩短确定宏块划分模式的处理时间,提高了编码速度。
以下,将结合具体示例对根据本发明的示例性实施例的执行视频编码的方法中的步骤S100进行更加详细地描述和说明。
优选地,在步骤S100,可分别对当前图像帧和当前图像帧的前一帧进行降采样以得到当前缩放帧和先前缩放帧,并基于当前缩放帧与先前缩放帧之间的差异判断当前图像帧是帧内预测图像帧还是帧间预测图像帧。
作为示例,在步骤S100,可将原始图像帧中的当前图像帧根据降采样表进行缩放以得到当前缩放帧,将当前图像帧的前一帧根据相同的降采样表进行缩放以得到先前缩放帧,并基于当前缩放帧与先前缩放帧之间的差异判断当前图像帧是帧内预测图像帧还是帧间预测图像帧。具体说来,如果当前缩放帧与先前缩放帧之间的差异较大,则可将相应的当前图像帧判断为帧内预测图像帧,否则,可将相应的当前图像帧判断为帧间预测图像帧。
这里,降采样表可包括映射矩阵,该映射矩阵是基于当前图像帧的分辨率和当前缩放帧的分辨率所得到的。当前缩放帧的分辨率可以是预先设定的分辨率。例如,当前图像帧的分辨率为A×B,当前缩放帧的分辨率被预先设定为C×D,利用A与C可计算得到像素宽度映射矩阵,利用B与D可计算得到像素高度映射矩阵,相应地,所述降采样表可包括所述像素宽度映射矩阵和所述像素高度映射矩阵。
以下,将结合图10对在步骤S100中判断当前图像帧是帧内预测图像帧还是帧间预测图像帧的具体步骤进行详细描述。图10示出根据本发明示例性实施例的判断当前图像帧的预测类型的具体步骤的流程图。
在步骤S101,将原始图像帧中的当前图像帧和当前图像帧的前一帧根据降采样表分别进行缩放,得到当前缩放帧和先前缩放帧。
在步骤S102,计算当前缩放帧的所有宏块与各自的匹配宏块之间的匹配误差,其中,匹配宏块是指针对当前缩放帧的每个宏块,在先前缩放帧中与每个宏块之间的匹配误差小于预定宏块运动阈值的对应宏块或在先前缩放帧中与所述每个宏块之间的匹配误差最小的宏块。作为示例,匹配误差可用于衡量两个宏块之间的匹配程度,具体说来,可将匹配误差表示为两个宏块之间的像素值的绝对误差的和(即,绝对误差和)。相应地,当前缩放帧的匹配误差和即为当前缩放帧的所有宏块与各自的匹配宏块之间的绝对误差和的和。
在步骤S103,将所有宏块与各自的匹配宏块之间的匹配误差求和以获得当前缩放帧的匹配误差和。
在步骤S104,判断匹配误差和是否大于预定缩放帧运动阈值,如果匹配误差和大于预定缩放帧运动阈值,则在步骤S105,判断当前图像帧为帧内预测图像帧;如果匹配误差和小于或等于预定缩放帧运动阈值,则在步骤S106,判断当前图像帧为帧间预测图像帧。
作为示例,在步骤S102,可通过钻石搜索方式计算当前缩放帧的所有宏块与各自的匹配宏块之间的匹配误差。例如,可通过钻石搜索方式确定当前缩放帧的每一个宏块在先前缩放帧中的匹配宏块,从而计算所述每一个宏块与它的匹配宏块之间的匹配误差。
具体地讲,在执行钻石搜索时,可采用大钻石搜索模板(LDSP)(如图3A所示)和小钻石搜索模板(SDSP)(如图3B所示)。参照图3A和图3B,LDSP可包含9个点,SDSP可包含5个点,这里的每个点都对应一个宏块。
如上所述,在步骤S100,通过采用降采样和钻石搜索方式来实现帧内和帧间预测图像帧的判断,不仅降低了计算量,还在保证编码的准确度的前提下提高了判断帧类型的速度。
此外,在步骤S200,可将以下各项中的至少一个分别存储于图形处理器的显存中的纹理内存,并利用图形处理器的多个线程基于纹理内存中存储的所述以下各项中的至少一个来确定帧内预测图像帧的宏块划分模式和帧间预测图像帧的宏块划分模式:帧内预测图像帧的各个像素点的像素值、帧间预测图像帧的各个像素点的像素值、帧间预测图像帧的参考帧的各个像素点的像素值。
这里,具体说来,当在步骤S100中判断当前图像帧为帧间预测图像帧时,在步骤S200,可将当前图像帧的各个像素点的像素值和当前图像帧的参考帧的各个像素点的像素值存储于纹理内存。当在步骤S100中判断当前图像帧为帧内预测图像帧时,在步骤S200,可将当前图像帧的各个像素点的像素值存储于纹理内存。这里,可按照图4或图5的数据存储方式将像素值存储在纹理内存中。
在将相关图像帧的像素值存储在纹理内存之后,作为优选方式,针对多个宏块划分模式中的每一个宏块划分模式,可利用图形处理器的多个线程并行地通过钻石搜索方式确定帧内预测图像帧的所有宏块各自的帧内匹配宏块,其中,帧内匹配宏块是指针对帧内预测图像帧的每个宏块,在帧内预测图像帧的钻石搜索区域中与所述每个宏块之间具有最小匹配误差的宏块,其中,利用图形处理器的所述多个线程计算帧内预测图像帧的所有宏块与各自的帧内匹配宏块之间的匹配误差,作为帧内预测图像帧的所有宏块各自的最小匹配误差。并且,针对所述多个宏块划分模式中的每一个宏块划分模式,可利用图形处理器的多个线程并行地通过钻石搜索方式确定帧间预测图像帧的所有宏块各自的帧间匹配宏块,其中,帧间匹配宏块是指针对帧间预测图像帧的每个宏块,在帧间预测图像帧的参考帧的钻石搜索区域中与所述每个宏块之间具有最小匹配误差的宏块,其中,利用图形处理器的所述多个线程计算帧间预测图像帧的所有宏块与各自的帧间匹配宏块之间的匹配误差,作为帧间预测图像帧的所有宏块各自的最小匹配误差。
这里,可利用图像处理器的多个线程对帧内预测图像帧或帧间预测图像帧中的各个宏块并行地执行上述处理过程以确定所有宏块各自的最小匹配误差,将所有宏块各自的最小匹配误差求和以获得帧内预测图像帧或帧间预测图像帧的宏块匹配误差和,并将与最小宏块匹配误差和对应的宏块划分模式确定为帧内预测图像帧或帧间预测图像帧的宏块划分模式。
可选地,匹配误差可为宏块与各自的帧内匹配宏块或帧间匹配宏块之间的像素值绝对误差的和。
关于钻石搜索方式,以上以参照宏块划分模式确定单元200进行了详细的描述,这里将不再赘述。
在根据本发明示例性实施例的宏块划分模式确定步骤中,可并行地计算各个宏块的最小匹配误差,从而缩短了用于确定宏块划分模式的时间,提高了编码速度。
此外,图7所示的方法还可包括去块滤波步骤(未示出)。以下,将结合具体示例对在执行视频编码过程中进行去块滤波的具体步骤进行详细描述。
具体地讲,在对帧内预测后的帧内预测图像帧和帧间预测后的帧间预测图像帧进行变换和量化之后,对变换和量化后的当前图像帧进行反量化和反变换。对反量化和反变换后的当前图像帧进行去块滤波,以得到当前图像帧的重构帧。这里,进一步地,当前图像帧的重构帧可被用作在当前图像帧之后进行编码的图像帧的参考帧。
以下参照图11来描述根据本发明示例性实施例的执行视频编码的方法中执行去块滤波的具体步骤。图11示出根据本发明示例性实施例的执行去块滤波的具体步骤的流程图。这里,反量化和反变换后的当前图像帧被划分成包含16×16个像素点的多个宏块,并利用图形处理器的多个线程按照图11中示出的步骤并行地对所述多个宏块执行去块滤波。
具体地讲,在步骤S5021,对宏块中位于第0行到第15行并位于第9列到第14列的像素点进行垂直滤波。
在步骤S5022,对宏块中位于第9列到第15列并位于第9行到第12行的像素点进行水平滤波。
在步骤S5023,对宏块中位于第9列到第12列并位于第0行到第8行和第13行到第15行的像素点进行水平滤波。
在步骤S5024,对宏块中位于第9行到第15行并位于第0列到第8列和第13列到第15列的像素点进行垂直滤波。
在步骤S5025,对宏块中位于第13列到第15列并位于第0行到第8行和第13行到第15行的像素点进行水平滤波。
在步骤S5026,对宏块中位于第0行到第8行并位于第0列到第8列和第13列到第15列的像素点进行垂直滤波。
在步骤S5027,对宏块中位于第9行到第13行并位于第0列到第8列的像素点进行水平滤波。
在步骤S5028,对宏块中位于第0列到第8列并位于第0行到第8行和第13行到第15行的像素点进行水平滤波。
通过上述方式,可利用图形处理器的多个线程并行地对多个宏块进行去块滤波,而且各步滤波运算的独立性好,采用的线程数量相对较少,节省了系统资源。
作为示例,可在计算机或嵌入式多媒体播放系统中实现根据本发明示例性实施例的执行视频编码的方案。例如,表1示出在基于Win7操作系统、NvidIA GT630显卡、4G内存的计算机中,根据本发明示例性实施例的视频编码方案与现有技术的视频编码方案在性能上的对比。
表1
由表1可以看出,根据本发明示例性实施例的视频编码方案对比于现有技术的视频编码方案,能够在很大程度上减少去块滤波时间以及平均每帧编码时间。
综上所述,根据本发明示例性实施例的执行视频编码的装置和方法,通过在确定宏块划分模式时采用并行的处理方式,可缩短确定宏块划分模式的处理时间,提高了编码速度。此外,通过基于降采样图像进行图像帧预测类型判断,能够在保证准确度的同时进一步缩短编码时间。而且,通过在纹理内存中采用独特的数据存储方式,能够使得一次性读取任意的相邻像素,进一步提高了运算速度。
上面已经结合具体实施例描述了本发明,但是本发明的实施不限于此。在本发明的精神和范围内,本领域技术人员可以进行各种修改和变型,这些修改和变型将落入权利要求限定的保护范围之内。
Claims (20)
1.一种执行视频编码的装置,其特征在于,包括:
帧类型判断单元,用于判断视频的原始图像帧中的当前图像帧是帧内预测图像帧还是帧间预测图像帧;
宏块划分模式确定单元,用于从多个宏块划分模式中确定帧内预测图像帧的宏块划分模式和帧间预测图像帧的宏块划分模式;
预测单元,用于在确定的帧内预测图像帧的宏块划分模式下对帧内预测图像帧进行帧内预测,并在确定的帧间预测图像帧的宏块划分模式下对帧间预测图像帧进行帧间预测;
编码单元,用于对帧内预测后的帧内预测图像帧和帧间预测后的帧间预测图像帧进行变换、量化和编码,以得到编码后的当前图像帧,
其中,当帧类型判断单元判断当前图像帧为帧内预测图像帧时,针对所述多个宏块划分模式中的每一个宏块划分模式,宏块划分模式确定单元利用图形处理器的多个线程基于纹理内存中存储的像素值并行地计算帧内预测图像帧在所述每一个宏块划分模式下划分的所有宏块各自的最小匹配误差,将所有宏块各自的最小匹配误差求和以获得帧内预测图像帧的宏块匹配误差和,并将与最小宏块匹配误差和对应的宏块划分模式确定为帧内预测图像帧的宏块划分模式;并且,当帧类型判断单元判断当前图像帧为帧间预测图像帧时,针对所述多个宏块划分模式中的每一个宏块划分模式,宏块划分模式确定单元利用图形处理器的多个线程基于纹理内存中存储的像素值并行地计算帧间预测图像帧在所述每一个宏块划分模式下划分的所有宏块各自的最小匹配误差,将所有宏块各自的最小匹配误差求和以获得帧间预测图像帧的宏块匹配误差和,并将与最小宏块匹配误差和对应的宏块划分模式确定为帧间预测图像帧的宏块划分模式。
2.如权利要求1所述的装置,其特征在于,宏块划分模式确定单元将以下各项中的至少一个分别存储于图形处理器的显存中的纹理内存,并利用图形处理器的多个线程基于纹理内存中存储的所述以下各项中的至少一个来确定帧内预测图像帧的宏块划分模式和帧间预测图像帧的宏块划分模式:帧内预测图像帧的各个像素点的像素值、帧间预测图像帧的各个像素点的像素值、帧间预测图像帧的参考帧的各个像素点的像素值。
3.如权利要求2所述的装置,其特征在于,所述纹理内存包括第一通道、第二通道、第三通道和第四通道,并且,四个相邻像素点的像素值被存储在同一纹理中。
4.如权利要求3所述的装置,其特征在于,针对所述多个宏块划分模式中的每一个宏块划分模式,宏块划分模式确定单元利用图形处理器的多个线程并行地通过钻石搜索方式确定帧内预测图像帧的所有宏块各自的帧内匹配宏块,其中,所述帧内匹配宏块是指针对帧内预测图像帧的每个宏块,在帧内预测图像帧的钻石搜索区域中与所述每个宏块之间具有最小匹配误差的宏块,其中,宏块划分模式确定单元利用图形处理器的所述多个线程计算帧内预测图像帧的所有宏块与各自的帧内匹配宏块之间的匹配误差,作为帧内预测图像帧的所有宏块各自的最小匹配误差;并且,针对所述多个宏块划分模式中的每一个宏块划分模式,宏块划分模式确定单元利用图形处理器的多个线程并行地通过钻石搜索方式确定帧间预测图像帧的所有宏块各自的帧间匹配宏块,其中,所述帧间匹配宏块是指针对帧间预测图像帧的每个宏块,在帧间预测图像帧的参考帧的钻石搜索区域中与所述每个宏块之间具有最小匹配误差的宏块,其中,宏块划分模式确定单元利用图形处理器的所述多个线程计算帧间预测图像帧的所有宏块与各自的帧间匹配宏块之间的匹配误差,作为帧间预测图像帧的所有宏块各自的最小匹配误差。
5.如权利要求4所述的装置,其特征在于,所述匹配误差为宏块与各自的帧内匹配宏块或帧间匹配宏块之间的像素值绝对误差的和。
6.如权利要求1所述的装置,其特征在于,帧类型判断单元分别对当前图像帧和当前图像帧的前一帧进行降采样以得到当前缩放帧和先前缩放帧,并基于当前缩放帧与先前缩放帧之间的差异判断当前图像帧是帧内预测图像帧还是帧间预测图像帧。
7.如权利要求6所述的装置,其特征在于,帧类型判断单元计算当前缩放帧的所有宏块与各自的匹配宏块之间的匹配误差,将所述所有宏块与各自的匹配宏块之间的匹配误差求和以获得当前缩放帧的匹配误差和,当所述匹配误差和大于预定缩放帧运动阈值时,判断当前图像帧为帧内预测图像帧,其中,所述匹配宏块是指针对当前缩放帧的每个宏块,在先前缩放帧中与所述每个宏块之间的匹配误差小于预定宏块运动阈值的对应宏块或在先前缩放帧中与所述每个宏块之间的匹配误差最小的宏块。
8.如权利要求7所述的装置,其特征在于,帧类型判断单元通过钻石搜索方式计算当前缩放帧的所有宏块与各自的匹配宏块之间的匹配误差。
9.如权利要求1所述的装置,其特征在于,所述装置还包括去块滤波单元,用于对反量化和反变换后的当前图像帧进行去块滤波,以得到当前图像帧的重构帧,其中,反量化和反变换后的当前图像帧通过编码单元执行的以下处理获得:在对帧内预测后的帧内预测图像帧和帧间预测后的帧间预测图像帧进行变换、量化之后,对得到的结果进行反量化和反变换。
10.如权利要求9所述的装置,其特征在于,去块滤波单元将反量化和反变换后的当前图像帧划分成包含16×16个像素点的多个宏块,其中,去块滤波单元利用图形处理器的多个线程按照以下步骤并行地对所述多个宏块进行去块滤波:
(1)对宏块中位于第0行到第15行并位于第9列到第14列的像素点进行垂直滤波;
(2)对宏块中位于第9列到第15列并位于第9行到第12行的像素点进行水平滤波;
(3)对宏块中位于第9列到第12列并位于第0行到第8行和第13行到第15行的像素点进行水平滤波;
(4)对宏块中位于第9行到第15行并位于第0列到第8列和第13列到第15列的像素点进行垂直滤波;
(5)对宏块中位于第13列到第15列并位于第0行到第8行和第13行到第15行的像素点进行水平滤波;
(6)对宏块中位于第0行到第8行并位于第0列到第8列和第13列到第15列的像素点进行垂直滤波;
(7)对宏块中位于第9行到第13行并位于第0列到第8列的像素点进行水平滤波;
(8)对宏块中位于第0列到第8列并位于第0行到第8行和第13行到第15行的像素点进行水平滤波。
11.一种执行视频编码的方法,其特征在于,包括:
(a)判断视频的原始图像帧中的当前图像帧是帧内预测图像帧还是帧间预测图像帧;
(b)从多个宏块划分模式中确定帧内预测图像帧的宏块划分模式和帧间预测图像帧的宏块划分模式;
(c)在确定的帧内预测图像帧的宏块划分模式下对帧内预测图像帧进行帧内预测,并在确定的帧间预测图像帧的宏块划分模式下对帧间预测图像帧进行帧间预测;
(d)对帧内预测后的帧内预测图像帧和帧间预测后的帧间预测图像帧进行变换、量化和编码,以得到编码后的当前图像帧,
其中,在步骤(b)中,当帧类型判断单元判断当前图像帧为帧内预测图像帧时,针对所述多个宏块划分模式中的每一个宏块划分模式,利用图形处理器的多个线程基于纹理内存中存储的像素值并行地计算帧内预测图像帧在所述每一个宏块划分模式下划分的所有宏块各自的最小匹配误差,将所有宏块各自的最小匹配误差求和以获得帧内预测图像帧的宏块匹配误差和,并将与最小宏块匹配误差和对应的宏块划分模式确定为帧内预测图像帧的宏块划分模式;并且,当帧类型判断单元判断当前图像帧为帧间预测图像帧时,针对所述多个宏块划分模式中的每一个宏块划分模式,利用图形处理器的多个线程基于纹理内存中存储的像素值并行地计算帧间预测图像帧在所述每一个宏块划分模式下划分的所有宏块各自的最小匹配误差,将所有宏块各自的最小匹配误差求和以获得帧间预测图像帧的宏块匹配误差和,并将与最小宏块匹配误差和对应的宏块划分模式确定为帧间预测图像帧的宏块划分模式。
12.如权利要求11所述的方法,其特征在于,在步骤(b)中,将以下各项中的至少一个分别存储于图形处理器的显存中的纹理内存,并利用图形处理器的多个线程基于纹理内存中存储的所述以下各项中的至少一个来确定帧内预测图像帧的宏块划分模式和帧间预测图像帧的宏块划分模式:帧内预测图像帧的各个像素点的像素值、帧间预测图像帧的各个像素点的像素值、帧间预测图像帧的参考帧的各个像素点的像素值。
13.如权利要求12所述的方法,其特征在于,所述纹理内存包括第一通道、第二通道、第三通道和第四通道,并且,四个相邻像素点的像素值被存储在同一纹理中。
14.如权利要求13所述的方法,其特征在于,在步骤(b)中,针对所述多个宏块划分模式中的每一个宏块划分模式,通过利用图形处理器的多个线程并行地通过钻石搜索方式确定帧内预测图像帧的所有宏块各自的帧内匹配宏块,其中,所述帧内匹配宏块是指针对帧内预测图像帧的每个宏块,在帧内预测图像帧的钻石搜索区域中与所述每个宏块之间具有最小匹配误差的宏块,其中,通过利用图形处理器的所述多个线程计算帧内预测图像帧的所有宏块与各自的帧内匹配宏块之间的匹配误差,作为帧内预测图像帧的所有宏块各自的最小匹配误差;并且,针对所述多个宏块划分模式中的每一个宏块划分模式,通过利用图形处理器的多个线程并行地通过钻石搜索方式确定帧间预测图像帧的所有宏块各自的帧间匹配宏块,其中,所述帧间匹配宏块是指针对帧间预测图像帧的每个宏块,在帧间预测图像帧的参考帧的钻石搜索区域中与所述每个宏块之间具有最小匹配误差的宏块,其中,通过利用图形处理器的所述多个线程计算帧间预测图像帧的所有宏块与各自的帧间匹配宏块之间的匹配误差,作为帧间预测图像帧的所有宏块各自的最小匹配误差。
15.如权利要求14所述的方法,其特征在于,所述匹配误差为宏块与各自的帧内匹配宏块或帧间匹配宏块之间的像素值绝对误差的和。
16.如权利要求11所述的方法,其特征在于,步骤(a)包括:
(a1)分别对当前图像帧和当前图像帧的前一帧进行降采样以得到当前缩放帧和先前缩放帧;
(a2)基于当前缩放帧与先前缩放帧之间的差异判断当前图像帧是帧内预测图像帧还是帧间预测图像帧。
17.如权利要求16所述的方法,其特征在于,步骤(a2)包括:计算当前缩放帧的所有宏块与各自的匹配宏块之间的匹配误差,将所述所有宏块与各自的匹配宏块之间的匹配误差求和以获得当前缩放帧的匹配误差和,当所述匹配误差和大于预定缩放帧运动阈值时,判断当前图像帧为帧内预测图像帧,其中,所述匹配宏块是指针对当前缩放帧的每个宏块,在先前缩放帧中与所述每个宏块之间的匹配误差小于预定宏块运动阈值的对应宏块或在先前缩放帧中与所述每个宏块之间的匹配误差最小的宏块。
18.如权利要求17所述的方法,其特征在于,在步骤(a2)中,通过钻石搜索方式计算当前缩放帧的所有宏块与各自的匹配宏块之间的匹配误差。
19.如权利要求11所述的方法,其特征在于,所述方法还包括:
(e)对反量化和反变换后的当前图像帧进行去块滤波,以得到当前图像帧的重构帧,其中,反量化和反变换后的当前图像帧通过进行以下处理后获得:在对帧内预测后的帧内预测图像帧和帧间预测后的帧间预测图像帧进行变换、量化之后,对得到的结果进行反量化和反变换。
20.如权利要求19所述的方法,其特征在于,在步骤(e)中,将反量化和反变换后的当前图像帧划分成包含16×16个像素点的多个宏块,并利用图形处理器的多个线程按照以下步骤并行地对所述多个宏块进行去块滤波:
(1)对宏块中位于第0行到第15行并位于第9列到第14列的像素点进行垂直滤波;
(2)对宏块中位于第9列到第15列并位于第9行到第12行的像素点进行水平滤波;
(3)对宏块中位于第9列到第12列并位于第0行到第8行和第13行到第15行的像素点进行水平滤波;
(4)对宏块中位于第9行到第15行并位于第0列到第8列和第13列到第15列的像素点进行垂直滤波;
(5)对宏块中位于第13列到第15列并位于第0行到第8行和第13行到第15行的像素点进行水平滤波;
(6)对宏块中位于第0行到第8行并位于第0列到第8列和第13列到第15列的像素点进行垂直滤波;
(7)对宏块中位于第9行到第13行并位于第0列到第8列的像素点进行水平滤波;
(8)对宏块中位于第0列到第8列并位于第0行到第8行和第13行到第15行的像素点进行水平滤波。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410407515.3A CN104202602B (zh) | 2014-08-18 | 2014-08-18 | 执行视频编码的装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410407515.3A CN104202602B (zh) | 2014-08-18 | 2014-08-18 | 执行视频编码的装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104202602A CN104202602A (zh) | 2014-12-10 |
CN104202602B true CN104202602B (zh) | 2018-03-02 |
Family
ID=52087820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410407515.3A Active CN104202602B (zh) | 2014-08-18 | 2014-08-18 | 执行视频编码的装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104202602B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105812795B (zh) * | 2014-12-31 | 2019-02-12 | 浙江大华技术股份有限公司 | 一种最大编码单元的编码模式的确定方法和装置 |
CN104933731A (zh) * | 2015-04-17 | 2015-09-23 | 阔地教育科技有限公司 | 一种基于图形处理器的运动目标检测方法及装置 |
CN107623848B (zh) * | 2017-09-04 | 2019-11-19 | 浙江大华技术股份有限公司 | 一种视频编码方法及装置 |
KR102631517B1 (ko) | 2018-08-28 | 2024-01-30 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 픽처 분할 방법 및 장치 |
WO2020143684A1 (zh) * | 2019-01-08 | 2020-07-16 | 华为技术有限公司 | 图像预测方法、装置、设备、系统及存储介质 |
JP7317973B2 (ja) | 2019-01-08 | 2023-07-31 | 華為技術有限公司 | 画像予測方法、機器、及びシステム、装置、及び記憶媒体 |
CN110780780B (zh) * | 2019-09-04 | 2022-03-22 | 西安万像电子科技有限公司 | 图像处理方法及装置 |
CN111105766B (zh) * | 2019-12-04 | 2022-08-26 | 昆山龙腾光电股份有限公司 | 频率转换方法、组件、时序处理装置及可读存储介质 |
CN111447453B (zh) * | 2020-03-31 | 2024-05-17 | 西安万像电子科技有限公司 | 图像处理方法及装置 |
CN113489996B (zh) * | 2021-07-02 | 2023-09-01 | 杭州未名信科科技有限公司 | 一种基于快速帧间编码单元尺寸决策模型的编码方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4182442B2 (ja) * | 2006-04-27 | 2008-11-19 | ソニー株式会社 | 画像データの処理装置、画像データの処理方法、画像データの処理方法のプログラム及び画像データの処理方法のプログラムを記録した記録媒体 |
US8711901B2 (en) * | 2007-03-12 | 2014-04-29 | Vixs Systems, Inc. | Video processing system and device with encoding and decoding modes and method for use therewith |
CN102395030B (zh) * | 2011-11-18 | 2014-05-07 | 杭州海康威视数字技术股份有限公司 | 基于视频压缩码流的运动分析方法、码流转换方法及其装置 |
CN102917216A (zh) * | 2012-10-16 | 2013-02-06 | 深圳市融创天下科技股份有限公司 | 一种运动搜索的方法、系统和终端设备 |
CN103974081B (zh) * | 2014-05-08 | 2017-03-22 | 杭州同尊信息技术有限公司 | 一种基于多核处理器Tilera的HEVC编码方法 |
-
2014
- 2014-08-18 CN CN201410407515.3A patent/CN104202602B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN104202602A (zh) | 2014-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104202602B (zh) | 执行视频编码的装置及方法 | |
CN105812820B (zh) | 预测解码方法、预测解码装置 | |
CN101123723B (zh) | 基于图形处理器的数字视频解码方法 | |
CN103067715B (zh) | 深度图像的编解码方法和编解码装置 | |
EP1641278A2 (en) | Accelerated video encoding using a graphics processing unit | |
CN101883286B (zh) | 运动估计中的校准方法及装置、运动估计方法及装置 | |
CN101431675B (zh) | 一种像素运动估计方法和装置 | |
CN107113425A (zh) | 视频编码方法和设备以及视频解码方法和设备 | |
RU2009109204A (ru) | Способ кодирования и способ декодирования изображений, устройства для них, программа для них и носитель информации для хранения программ | |
CN107071437A (zh) | 用于帧内预测的解码图像的方法 | |
EP1653745A3 (en) | Image encoder and method thereof, computer program of image encoder, and mobile terminal | |
CN103079069A (zh) | 解码方法 | |
CN102291581A (zh) | 支持帧场自适应运动估计的实现方法 | |
CN109660800A (zh) | 运动估计方法、装置、电子设备及计算机可读存储介质 | |
CN100479527C (zh) | 一种帧内预测模式选取方法 | |
CN101873490B (zh) | 图像处理方法和使用该方法的图像信息编码设备 | |
CN105850132A (zh) | 颜色指数预测的方法和装置 | |
CN102138158A (zh) | 统一纹理压缩框架 | |
CN1589028B (zh) | 基于像素流水的帧内预测装置及预测方法 | |
CN101365136A (zh) | 帧内预测的方法及装置 | |
CN111447452B (zh) | 数据编码方法及系统 | |
CN102932643B (zh) | 一种适用于hevc标准的扩展可变块运动估计电路 | |
CN106331700A (zh) | 参考图像编码和解码的方法、编码设备和解码设备 | |
KR101604420B1 (ko) | 가변 깊이 압축 | |
CN100385957C (zh) | 一种运动矢量预测的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |