CN101365136B - 帧内预测的方法及装置 - Google Patents
帧内预测的方法及装置 Download PDFInfo
- Publication number
- CN101365136B CN101365136B CN 200810211844 CN200810211844A CN101365136B CN 101365136 B CN101365136 B CN 101365136B CN 200810211844 CN200810211844 CN 200810211844 CN 200810211844 A CN200810211844 A CN 200810211844A CN 101365136 B CN101365136 B CN 101365136B
- Authority
- CN
- China
- Prior art keywords
- buffer memory
- border
- piece
- row
- prediction piece
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种帧内预测的方法及装置,该帧内预测的方法包括:确定当前预测块的相邻上预测块的下边边界像素值的行缓存索引,并确定当前预测块的相邻左预测块的右边边界像素值的列缓存索引;在下边边界缓存中获取与确定出的相邻上预测块的下边边界像素值的行缓存索引对应的像素值,作为当前预测块的相邻上预测块的下边边界像素值,在右边边界缓存中获取与确定出的左边边界像素值的列缓存索引对应的像素值,作为当前预测块的相邻左预测块的右边边界像素值;根据获取的相邻上预测块的下边边界像素值和相邻左预测块的右边边界像素值计算出当前预测块的像素值。本发明方案大大节省了预测时间,提高了图像的解码速度。
Description
技术领域
本发明涉及图像解码技术,尤其涉及图像解码中帧内预测的方法及装置。
背景技术
参见图1,为H.264标准中的图像解码过程,包括以下步骤:
步骤101,对接收到的编码数据进行熵解码,得到熵解码后的数据。
步骤102,对熵解码后的数据进行反量化处理,得到变换系数。
步骤103,对变换系数进行逆离散余弦变换(DTC,Discrete CosineTransform),得到残差图像。
残差图像的每个像素值是原始图像相应点的像素值减去预测图像相应点的像素值之差,所谓预测图像,也就是与原始图像接近的图像。
每幅图像由多个宏块组成,每个宏块包括16×16矩阵的像素值,宏块在图像中按从左至右的顺序排列,排列完一行宏块后,再从第二行宏块开始从左至右排列,直至图像的右下角。对于图像中包含细节较多的部分,常将相应部分的宏块划分为多个子块,例如,可以将16×16的宏块矩阵划分16个4×4矩阵的子块或者划分为4个8×8矩阵的子块。
步骤104,对接收到的编码数据进行帧内预测或帧间预测,得到预测图像。
步骤105,将步骤103处理得到的残差图像和步骤104中得到的预测图像相加,得到与原始图像非常相似的图像。
至此,解码过程结束。
上述流程的步骤104中,进行帧内预测时,以宏块为单位进行预测,按照从左至右的顺序,第一行宏块内的宏块逐个进行预测,完成图像第一行宏块的预测后,进行第二行宏块从左至右的预测,依此类推,直到将整幅图像都预测完为止。如果宏块被划分为多个子块,则对该宏块进行预测时,以各个子块为单位进行预测。可见,当前预测块可能是宏块,也可能是子块。
每个宏块有一个序号,称为宏块序号,帧内预测时按照宏块序号顺序地对各个宏块进行预测。每个宏块内的各个子块有子块序号,子块序号体现了对该宏块内各个子块进行预测的顺序。
对当前预测块进行预测时,需要用到与当前预测块的上边边界相邻的预测块的下边边界像素值,以及与当前预测块的左边边界相临的预测块的右边边界像素值。进行预测时,首先确定当前预测块的邻近上预测块的下边边界各个像素在图像中的绝对坐标,以及邻近左预测块的右边边界各个像素在图像中的绝对坐标;根据确定出的当前预测块的邻近上预测块的下边边界的绝对坐标和邻近左预测块的右边边界的绝对坐标,在缓存中查询出对应位置的像素值;根据查询出的邻近上预测块的下边边界的像素值和邻近左预测块的右边边界的像素值计算出当前预测块的像素值;并且,在缓存中存储当前预测块的右边边界各像素的绝对坐标和其像素值之间的对应关系,以及当前预测块的下边边界各像素的绝对坐标和其像素值之间的对应关系,在缓存中存储的对应关系用于后续对其他预测块进行像素值预测时使用。
下面通过图2的流程对现有技术中进行帧内预测的方法进行具体说明,该方法包括以下步骤:
步骤201,判断当前预测宏块的帧内预测类型,若为16×16的矩阵类型,则执行步骤202,若为8×8的矩阵类型,则执行步骤208,若为4×4的矩阵类型,则执行步骤215。
解码端接收到的编码数据中包含有各个宏块的帧内预测类型的信息,每个宏块序号对应一个预测类型,对当前预测宏块进行帧内预测时,根据宏块序号便可获知当前预测宏块的预测类型。
步骤202,确定当前预测宏块的邻近上预测块的下边边界像素相对于其所属16×16宏块的像素坐标,以及当前预测宏块的邻近左预测块的右边边界像素相对于其所属16×16宏块的像素坐标。
步骤203,确定当前预测宏块的邻近上边宏块相对于图像左上角的坐标,以及当前预测宏块的邻近左边宏块相对于图像左上角的坐标。
步骤204,根据步骤202~203获得的坐标计算当前预测宏块的邻近上预测块的下边边界像素和邻近左预测块的右边边界像素相对于图像左上角的坐标,也就是在图像中的绝对坐标。
本步骤计算绝对坐标的方法具体包括:将步骤202中计算得到的邻近上预测块的下边边界各像素的相对坐标分别加上步骤203得到的邻近上边宏块相对于图像左上角的坐标,得到邻近上预测块的下边边界各像素在图像中的绝对坐标;将步骤202中计算得到的邻近左预测块的右边边界各像素的相对坐标分别加上步骤203得到的邻近左边宏块相对于图像左上角的坐标,得到邻近左预测块的右边边界各像素在图像中的绝对坐标。
步骤205,根据计算得到的当前预测宏块的邻近上预测块的下边边界各像素和邻近左预测块的右边边界各像素的绝对坐标,从缓存中查询对应的像素值。
该缓存的宽度为图像宽度,该缓存的长度为图像长度。
步骤206,根据查询出的邻近上预测块的下边边界像素值和邻近左预测块的右边边界像素值计算出当前预测宏块的像素值。
获取当前预测宏块的邻近上预测块的下边边界像素值和邻近左预测块的右边边界像素值之后,便可计算出当前预测子块的像素值,其计算方法为本领域技术人员公知技术,具体可参见H.264标准,这里不赘述。
步骤207,将当前预测宏块的右边边界各像素值与其绝对坐标之间的对应关系存储到缓存中,将当前预测宏块的下边边界各像素值与其绝对坐标之间的对应关系存储到缓存中。
存储到缓存中的对应关系用于后续对其他宏块进行预测。
步骤208,确定当前预测子块的邻近上预测块的下边边界像素相对于其所属8×8宏块的像素坐标,以及当前预测子块的邻近左预测块的右边边界像素相对于其所属8×8宏块的像素坐标。
步骤209,确定当前预测子块的邻近上预测块相对于所属宏块的坐标,以及当前预测子块的邻近左预测块相对于所属宏块的坐标。
步骤210,确定当前预测子块的邻近上预测块所属的宏块相对于图像左上角的坐标,以及当前预测子块的邻近左预测块所属的宏块相对于图像左上角的坐标。
步骤211,根据步骤208~210获得的坐标计算当前预测子块的邻近上预测块的下边边界像素和邻近左预测块的右边边界像素相对于图像左上角的坐标,也就是在图像中的绝对坐标。
本步骤计算绝对坐标的方法具体包括:将步骤208中计算得到的邻近上预测块的下边边界各像素的相对坐标分别加上步骤209得到的邻近上预测块相对于其所属宏块的坐标,再加上步骤210得到的邻近上预测块所属的宏块相对于图像左上角的坐标,得到邻近上预测块的下边边界像素在图像中的绝对坐标;将步骤208中计算得到的邻近左预测块的右边边界各像素的相对坐标分别加上步骤209得到的邻近左预测块相对于其所属宏块的坐标,再加上步骤210得到的邻近左预测块所属的宏块相对于图像左上角的坐标,得到邻近左预测块的右边边界像素在图像中的绝对坐标。
步骤212,根据计算得到的当前预测子块的邻近上预测块的下边边界像素和邻近左预测块的右边边界像素的绝对坐标,从缓存中查询对应的像素值。
步骤213,根据查询出的邻近上预测块的下边边界像素值和邻近左预测块的右边边界像素值计算出当前预测子块的像素值。
步骤214,将当前预测子块的右边边界像素值与其绝对坐标之间的对应关系存储到缓存中,将当前预测子块的下边边界像素值与其绝对坐标之间的对应关系存储到缓存中。
按照步骤208~214对当前预测宏块的所有预测子块进行预测,便可计算得到当前宏块内的所有像素值。
步骤215,确定当前预测子块的邻近上预测块的下边边界像素相对于其所属4×4子块的像素坐标,以及当前预测子块的邻近左预测块的右边边界像素相对于其所属4×4子块的像素坐标。
步骤216,确定当前预测子块的邻近上预测块相对于所属宏块的坐标,以及当前预测子块的邻近左预测块相对于所属宏块的坐标。
步骤217,确定当前预测子块的邻近上预测块所属的宏块相对于图像左上角的坐标,以及当前预测子块的邻近左预测块所属的宏块相对于图像左上角的坐标。
步骤218,根据步骤215~217获得的坐标计算当前预测子块的邻近上预测块的下边边界像素和邻近左预测块的右边边界像素相对于图像左上角的坐标,也就是在图像中的绝对坐标。
本步骤计算绝对坐标的方法具体包括:将步骤215中计算得到的邻近上预测块的下边边界各像素的相对坐标分别加上步骤216得到的邻近上预测块相对于其所属宏块的坐标,再加上步骤217得到的邻近上预测块所属的宏块相对于图像左上角的坐标,得到邻近上预测块的下边边界像素在图像中的绝对坐标;将步骤215中计算得到的邻近左预测块的右边边界各像素的相对坐标分别加上步骤216得到的邻近左预测块相对于其所属宏块的坐标,再加上步骤217得到的邻近左预测块所属的宏块相对于图像左上角的坐标,得到邻近左预测块的右边边界像素在图像中的绝对坐标。
步骤219,根据计算得到的当前预测子块的邻近上预测块的下边边界像素和邻近左预测块的右边边界像素的绝对坐标,从缓存中查询对应的像素值。
步骤220,根据查询出的邻近上预测块的下边边界像素值和邻近左预测块的右边边界像素值计算出当前预测子块的像素值。
步骤221,将当前预测子块的右边边界像素值与其绝对坐标之间的对应关系存储到缓存中,将当前预测子块的下边边界像素值与其绝对坐标之间的对应关系存储到缓存中。
按照步骤215~221对当前预测宏块的所有预测子块进行预测,便可计算得到当前宏块内的所有像素值。
按照步骤201~221对当前预测宏块进行预测,计算得到当前宏块内的所有像素值之后,对其他宏块类似地执行201~221,便可计算得到整幅图像的像素值。
现有帧内预测方法中,需要首先经过复杂的计算获得当前预测块的邻近上预测块的下边边界像素和邻近左预测块的右边边界像素在图像中的绝对坐标,根据绝对坐标在缓存中查询出邻近上预测块的下边边界像素值和邻近左预测块的右边边界像素值,该计算方法非常耗时。尤其对于帧内以4×4矩阵进行预测时,计算各个4×4子块的邻近左预测块的右边边界像素值和邻近上预测块的下边边界像素值的过程更加复杂,这大大影响了解码速度。并且,H.264视频压缩标准非常复杂,计算机需要进行大量的计算才能解码出图像,如果计算机的计算速度不够或计算方法太复杂,则解码速度无法达到人们观看视频的要求。
发明内容
本发明提供一种帧内预测的方法,该方法能够提高图像解码的速度。
本发明提供一种帧内预测的装置,该装置能够提高图像解码的速度。
一种帧内预测的方法,该方法包括:
将图像中每个宏块的各列像素值按照行号进行顺序编号,作为每个宏块中各列像素值的列缓存索引,设置右边边界缓存,用于对应列缓存索引存储对预测块进行预测后的最右边一列的像素值,该右边边界缓存的宽度为宏块宽度;将图像中每行像素值按照列号进行顺序编号,作为图像中各行像素值的行缓存索引,设置下边边界缓存,用于对应行缓存索引存储对预测块进行预测后的最下边一行的像素值,该下边边界缓存的宽度为图像宽度;
确定当前预测块的邻近上预测块的下边边界像素值的行缓存索引,并确定当前预测块的邻近左预测块的右边边界像素值的列缓存索引;
在下边边界缓存中获取与确定出的邻近上预测块的下边边界像素值的行缓存索引对应的像素值,作为当前预测块的邻近上预测块的下边边界像素值,在右边边界缓存中获取与确定出的左边边界像素值的列缓存索引对应的像素值,作为当前预测块的邻近左预测块的右边边界像素值;
根据获取的邻近上预测块的下边边界像素值和邻近左预测块的右边边界像素值计算出当前预测块的像素值。
一种帧内预测的装置,该装置包括邻近像素值获取模块、计算模块、下边边界缓存和右边边界缓存;
所述右边边界缓存,用于对应列缓存索引存储对预测块进行预测后的最右边一列的像素值,该右边边界缓存的宽度为宏块宽度,每个宏块中各列像素的列缓存索引为将图像中每个宏块的各列按照行号进行顺序编号后的序号;
所述下边边界缓存,用于对应行缓存索引存储对预测块进行预测后的最下边一行的像素值,该下边边界缓存的宽度为图像宽度,图像中各行像素的列缓存索引为将图像中每行像素按照列号进行顺序编号后的序号;
所述邻近像素值获取模块,用于确定当前预测块的邻近上预测块的下边边界像素值的行缓存索引,并确定当前预测块的邻近左预测块的右边边界像素值的列缓存索引;在下边边界缓存中获取与确定出的邻近上预测块的下边边界像素值的行缓存索引对应的像素值,作为当前预测块的邻近上预测块的下边边界像素值,在右边边界缓存中获取与确定出的左边边界像素值的列缓存索引对应的像素值,作为当前预测块的邻近左预测块的右边边界像素值;
所述计算模块,用于根据获取的邻近上预测块的下边边界像素值和邻近左预测块的右边边界像素值计算出当前预测块的像素值。
从上述方案可以看出,本发明中,设置的右边边界缓存用于对应列缓存索引存储对预测块进行预测后的最右边一列的像素值,每个宏块中各列像素的列缓存索引为将图像中每个宏块的各列按照行号进行顺序编号后的序号,设置的下边边界缓存用于对应行缓存索引存储对预测块进行预测后的最下边一行的像素值,图像中各行像素的行缓存索引为将图像中每行像素按照列号进行顺序编号后的序号;进行帧内预测时,确定当前预测块的邻近上预测块的下边边界像素值和邻近左预测块的右边边界像素值的列缓存索引,在下边边界缓存和右边边界缓存中获取与确定出的列缓存索引对应的像素值,以计算出当前预测块的像素值。这样,不需要进行大量的计算确定当前预测块的邻近左预测块的右边边界像素值和邻近上预测块的下边边界像素值的绝对坐标,以获得邻近左预测块的右边边界像素值和邻近上预测块的下边边界像素值,从而,节省了预测时间,提高了图像的解码速度。
附图说明
图1为H.264标准中的图像解码流程图;
图2为现有技术中进行帧内预测的方法流程图;
图3为本发明进行帧内预测的方法流程图;
图4为本发明进行帧内预测的装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明进一步详细说明。
进行帧内预测过程中,需要获取当前预测块的邻近上预测块的下边边界像素值和邻近左预测块的右边边界像素值,根据获取的邻近上预测块的下边边界像素值和和邻近左预测块的右边边界像素值计算出当前预测块的像素值。本发明中,当前预测块的邻近上预测块的下边边界像素值存储于下边边界缓存中,当前预测块的邻近左预测块的右边边界像素值存储于右边边界缓存中。将图像中每个宏块的各列像素值按照行号进行顺序编号,作为每个宏块中各列像素值的列缓存索引,设置右边边界缓存,用于对应列缓存索引存储对预测块进行预测后的最右边一列的像素值,该右边边界缓存的宽度为宏块宽度;将图像中每行像素值按照列号进行顺序编号,作为图像中各行像素值的行缓存索引,设置下边边界缓存,用于对应行缓存索引存储对预测块进行预测后的最下边一行的像素值,该下边边界缓存的宽度为图像宽度。当前预测块可能是当前预测宏块,也可能是将当前预测宏块划分后的当前预测子块。
右边边界缓存内存储了16个像素值,可以表示为16×1的矩阵,包括1行16列,从左至右,假设各个像素值对应的列缓存索引表示为:1,2,3......16;图像以宏块为单位,每个宏块的像素值为16×16的矩阵,包括16行16列,每列的像素值为16个,那么相应地,宏块内各列像素值的列缓存索引为:1,2,3......16。
用A表示图像宽度,则下边边界缓存内存储了A个像素值,可以表示为A×1的矩阵,包括1行A列,从左至右,假设各个像素值对应的行缓存索引表示为1,2,3......A;那么相应地,图像各行像素值的行缓存索引按从左至右的顺序表示为:1,2,3......A。
本发明对图像中的各个宏块进行预测的顺序与现有技术相同,也就是首先按照从左至右的顺序,对第一行宏块内的宏块逐个进行预测,完成图像第一行宏块的预测后,进行第二行宏块从左至右的预测,依此类推,直到将整幅图像都预测完为止。如果宏块被划分为多个子块,则对该宏块进行预测时,以各个子块为单位进行预测。
对各个宏块进行预测时,首先确定当前预测块的邻近上预测块的下边边界像素值的行缓存索引,并确定当前预测块的邻近左预测块的右边边界像素值的列缓存索引;然后在下边边界缓存中获取与确定出的邻近上预测块的下边边界像素值的行缓存索引对应的像素值,作为当前预测块的邻近上预测块的下边边界像素值,在右边边界缓存中获取与确定出的左边边界像素值的列缓存索引对应的像素值,作为当前预测块的邻近左预测块的右边边界像素值;再根据获取的邻近上预测块的下边边界像素值和邻近左预测块的右边边界像素值计算出当前预测块的像素值。
如果当前预测块的邻近上预测块和邻近左预测块都存在,则进行预测过程中,在下边边界缓存中获取的与确定出的邻近上预测块的下边边界像素值的行缓存索引对应的像素值,为当前预测块的邻近上预测块在计算出像素值后将其下边边界像素值存储到下边边界缓存的对应行缓存索引处的像素值;在右边边界缓存中获取的与确定出的邻近左预测块的右边边界像素值的列缓存索引对应的像素值,为当前预测块的邻近左预测块在计算出像素值后将其右边边界像素值缓存到右边边界缓存的对应列缓存索引处的像素值。
如果当前预测块的邻近左预测块存在,而邻近上预测块不存在,例如,当前预测块为图像第一行、最后一列的宏块,则进行预测过程中,在下边边界缓存中获取的与确定出的邻近上预测块的下边边界像素值的行缓存索引对应的像素值,为下边边界缓存中与确定出的邻近上预测块的下边边界像素值的行缓存索引对应的初始值;在右边边界缓存中获取的与确定出的邻近左预测块的右边边界像素值的列缓存索引对应的像素值,为当前预测块的邻近左预测块在计算出像素值后将其右边边界像素值缓存到右边边界缓存的对应列缓存索引处的像素值。
如果当前预测块的邻近左预测块不存在,而邻近上预测块存在,例如,当前预测块为图像第二行、第一列的宏块,则进行预测过程中,在下边边界缓存中获取的与确定出的邻近上预测块的下边边界像素值的行缓存索引对应的像素值,为当前预测块的邻近上预测块在计算出像素值后将其下边边界像素值存储到下边边界缓存的对应行缓存索引处的像素值;在右边边界缓存中获取的与确定出的邻近左预测块的右边边界像素值的列缓存索引对应的像素值,为右边边界缓存中存储的与确定出的邻近左预测块的右边边界像素值的列缓存索引对应的初始值。
如果当前预测块的邻近左预测块不存在,且邻近上预测块也不存在,例如,当前预测块为图像第一行、第一列的宏块,则进行预测过程中,在下边边界缓存中获取的与确定出的邻近上预测块的下边边界像素值的行缓存索引对应的像素值,为下边边界缓存中与确定出的邻近上预测块的下边边界像素值的行缓存索引对应的初始值;在右边边界缓存中获取的与确定出的邻近左预测块的右边边界像素值的列缓存索引对应的像素值,为右边边界缓存中存储的与确定出的邻近左预测块的右边边界像素值的列缓存索引对应的初始值。
计算出当前预测块的像素值之后,将当前预测块的右边边界像素值存储到右边边界缓存中相应列缓存索引的位置,如果右边边界缓存中与当前预测块的右边边界像素值相应的列缓存索引处已经存储有像素值,则用当前预测块的右边边界像素值更新右边边界缓存中相应列缓存索引处的像素值;并且,将当前预测块的下边边界像素值存储到下边边界缓存中相应行缓存索引处的位置,如果下边边界缓存中与当前预测块的下边边界像素值相应的行缓存索引处已经存储有像素值,则用当前预测块的下边边界像素值更新下边边界缓存中相应行缓存索引处的像素值。
将计算得到的当前预测块的下边边界像素值存储到下边边界缓存中的相应位置,将计算得到的当前预测块的右边边界像素值存储到右边边界缓存中的相应位置。这样,在后面的预测中便可直接从右边边界缓存和下边边界缓存中获取当前预测块的邻近左预测块的右边边界像素值和邻近上预测块的下边边界像素值,而不需要进行大量的计算确定当前预测块的邻近左预测块的右边边界像素值和邻近上预测块的下边边界像素值的绝对位置,以获得邻近左预测块的右边边界像素值和邻近上预测块的下边边界像素值。
下面结合图3对本发明方案进行具体说明,用LeftPixelBuf[16]表示右边边界缓存,用PicWidthPixelBuf[PicWidth]表示下边边界缓存。初始时,由于图像左上角第一个宏块的邻近左预测块的右边边界像素值为0,并且,图像的邻近上预测块的下边边界的像素值都为0,因此,可以将LeftPixelBuf[16]和PicWidthPixelBuf[PicWidth]]内的各个缓存索引对应的初始像素值都设为0,也可以将LeftPixelBuf[16]和PicWidthPixelBuf[PicWidth]]内的各个缓存索引对应的初始像素值都设为空。
参见图3,为本发明帧内预测的方法流程图,本实施例中,假设LeftPixelBuf[16]中存储的像素值的列缓存索引为:1,2,3......16;用A表示图像宽度,假设PicWidthPixelBuf[PicWidth]]中存储的像素值的行缓存索引为:1,2,3......A,A为16的倍数。图3的流程包括以下步骤:
步骤301,判断当前预测宏块的帧内预测类型,若为16×16的矩阵类型,则执行步骤302,若为8×8的矩阵类型,则执行步骤306,若为4×4的矩阵类型,则执行步骤310。
步骤302,确定当前预测宏块的邻近上预测块的下边边界像素值的行缓存索引,确定当前预测宏块的邻近左预测块的右边边界像素值的列缓存索引。
对当前预测宏块进行帧内预测时,根据当前预测宏块的宏块序号便可确定当前预测宏块的上边边界像素值的行缓存索引以及左边边界像素值的列缓存索引,当前预测宏块的上边边界像素值的行缓存索引也就是当前预测块邻近上预测块的下边边界像素值的行缓存索引,当前预测宏块的左边边界像素值的列缓存索引也就是当前预测块邻近左预测块的右边边界像素值的列缓存索引。
根据当前预测宏块的宏块序号确定当前预测宏块的上边边界像素值的行缓存索引的方法可以为:用当前宏块的宏块序号减去起始宏块的宏块序号,得到相减结果,判断相减结果是否小于图像每行的宏块数目,将当前宏块的宏块序号用M表示,将起始宏块的宏块序号用N表示,将M-N的结果用O表示,将图像每行的宏块数目用P表示,如果O小于P,则当前预测宏块的上边边界像素值的行缓存索引为:(M-N)×16+1,(M-N)×16+2,(M-N)×16+3......(M-N)×16+16;如果O大于或等于P,则用O对P求余,得到求余结果,将该求余结果表示为Q,则当前预测宏块的上边边界像素值的行缓存索引为:Q×16+1,Q×16+2,Q×16+3......Q×16+16。
假设当前预测宏块为图像中左上角的第一宏块,宏块序号为1,则当前预测宏块的邻近上预测块的下边边界像素值的行缓存索引为:1,2,3......16,当前预测宏块的邻近左预测块的右边边界像素值的行缓存索引为:1,2,3......16。
再比如,假设当前预测宏块为图像左上角第一宏块右边的宏块,这里将该当前预测宏块称为第二宏块,宏块序号为2,则当前预测宏块的邻近上预测块的下边边界像素值的行缓存索引为:17,18,19......32,当前预测宏块的邻近左预测块的右边边界像素值的行缓存索引为:1,2,3......16。
又比如,假设P为3,M为4,N为1,O=M-N=3=P,也就是当前预测宏块为图像第二行第一列的宏块,用O对P求余,得到的求余结果为0,则当前预测宏块的邻近上预测块的下边边界像素值的行缓存索引为:1,2,3......16,当前预测宏块的邻近左预测块的右边边界像素值的行缓存索引为:1,2,3......16。
步骤303,在PicWidthPixelBuf[PicWidth]]中获取与确定出的邻近上预测块的下边边界像素值的行缓存索引对应的像素值,在LeftPixelBuf[16]中获取与确定出的左边边界像素值的列缓存索引对应的像素值。
假设当前预测宏块为第二宏块,则本步骤具体包括:在PicWidthPixelBuf[PicWidth]]中获取行缓存索引为17,18,19......32所对应的像素值,作为当前预测宏块的邻近上预测块的下边边界像素值,此时,PicWidthPixelBuf[PicWidth]]中行缓存索引为17,18,19......32所对应的像素值为初始值,在LeftPixelBuf[16]中获取列缓存索引为1,2,3......16所对应的像素值,作为当前预测宏块的邻近左预测块的右边边界像素值。
步骤304,根据获取的邻近上预测块的下边边界像素值和邻近左预测块的右边边界像素值计算出当前预测宏块的像素值。
获取当前预测宏块的邻近上预测块的下边边界像素值和邻近左预测块的右边边界像素值之后,便可计算出当前预测宏块的像素值,其计算方法为现有技术,这里不赘述。
步骤305,将计算出的当前预测宏块的右边边界像素值存储到右边边界缓存中相应列缓存索引的位置,将计算出的当前预测宏块的下边边界像素值存储到下边边界缓存中相应行缓存索引的位置。
假设当前预测宏块为第二宏块,则当前预测宏块的右边边界像素值为该预测宏块第16列的所有像素值,第16列的各像素值对应的列缓存索引为:1,2,3......16,由于右边边界缓存中已经存储了第一宏块的右边边界像素值,因此进行存储时,用当前预测宏块的第16列的各像素值更新右边边界缓存中相应列缓存索引的像素值;当前预测宏块的下边边界像素值为该预测宏块第16行的各像素值,第16行的各像素值对应的行缓存索引为:17,18,19......32,进行存储时,将当前宏块的第16行的所有像素值存储到下边边界缓存中相应行缓存索引的位置。
步骤306,确定当前预测8×8子块的邻近上预测块的下边边界像素值的行缓存索引,确定当前预测8×8子块的邻近左预测块的右边边界像素值的右缓存索引。
当前预测子块的上边边界像素值的行缓存索引也就是当前预测子块邻近上预测块的下边边界像素值的行缓存索引,当前预测子块的左边边界像素值的列缓存索引也就是当前预测子块邻近左预测块的右边边界像素值的列缓存索引。
对当前预测子块进行帧内预测时,根据当前预测子块所属宏块的宏块序号和当前预测子块在所属宏块中的相对位置确定当前预测子块的邻近上预测块的下边边界像素值的行缓存索引,根据当前预测子块在所属宏块中的相对位置确定当前预测子块的邻近左预测块的右边边界像素值的列缓存索引,例如,对于8×8的当前预测子块,在宏块中的相对位置为其所属宏块中第一行第二列的子块,则可以简单地推知,当前预测子块的上边边界像素值的行缓存索引对应其所属宏块的上边边界像素值的行缓存索引中的后8位行缓存索引,类似地,可以简单地推知,当前预测子块的左边边界的列缓存索引对应其所属宏块的左边边界像素值的列缓存索引中的前8位列缓存索引。
假设当前预测宏块为图像中左上角的第一宏块,当前预测子块为当前预测宏块左上角的第一个8×8子块,则当前预测子块的邻近上预测块的下边边界像素值的行缓存索引为:1,2,3......8,当前预测子块的邻近左预测块的右边边界像素值的列缓存索引为:1,2,3......8。
步骤307,在PicWidthPixelBuf[PicWidth]]中获取与确定出的邻近上预测块的下边边界像素值的行缓存索引对应的像素值,在LeftPixelBuf[16]中获取与确定出的左边边界像素值的列缓存索引对应的像素值。
假设当前预测子块为第一宏块左上角的第一个8×8子块,则本步骤具体包括:在PicWidthPixelBuf[PicWidth]]中获取行缓存索引为1,2,3......8所对应的像素值,作为当前预测子块的邻近上预测块的下边边界像素值,在LeftPixelBuf[16]中获取列缓存索引为1,2,3......8所对应的像素值,作为当前预测子块的邻近左预测块的右边边界像素值。
步骤308,根据获取的邻近上预测块的下边边界像素值和邻近左预测块的右边边界像素值计算出当前预测子块的像素值。
获取当前预测子块的邻近上预测块的下边边界像素值和邻近左预测块的右边边界像素值之后,便可计算出当前预测子块的像素值,其计算方法为现有技术,这里不赘述。
步骤309,将计算出的当前预测子块的右边边界像素值存储到右边边界缓存中相应列缓存索引的位置,将计算出的当前预测子块的下边边界像素值存储到下边边界缓存中相应行缓存索引的位置。
假设当前预测子块为第一宏块左上角的第一个8×8子块,则当前预测子块的右边边界像素值为该预测子块第8列的各像素值,第8列的各像素值对应的列缓存索引为:1,2,3......8,进行存储时,将当前预测子块的第8列的各像素值存储到右边边界缓存中相应列缓存索引的位置;当前预测子块的下边边界像素值为该预测子块第8行的各像素值,第8行的各像素值对应的行缓存索引为:1,2,3......8,进行存储时,将当前预测子块的第8行的各像素值存储到下边边界缓存中相应行缓存索引的位置。
按照步骤306~309对当前预测宏块的所有预测子块进行预测,直到计算得到当前宏块内的所有像素值。
步骤310,确定当前预测4×4子块的邻近上预测块的下边边界像素值的行缓存索引,确定当前预测4×4子块的邻近左预测块的右边边界像素值的列缓存索引。
当前预测子块的上边边界像素值的行缓存索引也就是当前预测子块邻近上预测块的下边边界像素值的行缓存索引,当前预测子块的左边边界像素值的列缓存索引也就是当前预测子块的邻近左预测块的右边边界像素值的列缓存索引。
对当前预测子块进行帧内预测时,根据当前预测块所属宏块的宏块序号和当前预测块在所属宏块中的相对位置确定当前预测块的邻近上预测块的下边边界像素值的行缓存索引,根据当前预测块在所属宏块中的相对位置确定当前预测块的邻近左预测块的右边边界像素值的列缓存索引,例如,对于4×4的当前预测子块,在宏块中的相对位置为其所属宏块中第一行第四列的子块,则可以简单地推知,当前预测子块的上边边界像素值的索引对应其所属宏块的上边边界像素值的行缓存索引中的最后四位行缓存索引,类似地,可以简单地推知,当前预测子块的左边边界的列缓存索引对应其所属宏块的左边边界像素值的列缓存索引中的前四位列缓存索引。
假设当前预测宏块为图像中左上角的第一宏块,当前预测子块为第一子块右边的子块,这里将其称为第二子块,则当前预测子块的邻近上预测块的下边边界像素值的行缓存索引为:5,6,7,8,当前预测子块的邻近左预测块的右边边界像素值的列缓存索引为:1,2,3,4。
步骤311,在PicWidthPixelBuf[PicWidth]]中获取与确定出的邻近上预测块的下边边界像素值的行缓存索引对应的像素值,在LeftPixelBuf[16]中获取与确定出的左边边界像素值的列缓存索引对应的像素值。
假设当前预测子块为第一宏块内的第二子块,则本步骤具体包括:在PicWidthPixelBuf[PicWidth]]中获取行缓存索引为5,6,7,8所对应的像素值,作为当前预测子块的邻近上预测块的下边边界像素值,在LeftPixelBuf[16]中获取列缓存索引为1,2,3,4所对应的像素值,作为当前预测子块的邻近左预测块的右边边界像素值。
步骤312,根据获取的邻近上预测块的下边边界像素值和邻近左预测块的右边边界像素值计算出当前预测子块的像素值。
步骤313,将计算出的当前预测子块的右边边界像素值存储到右边边界缓存中相应列缓存索引的位置,将计算出的当前预测子块的下边边界像素值存储到下边边界缓存中相应行缓存索引的位置。
假设当前预测子块为第一宏块内的第二子块,则当前预测子块的右边边界像素值为该预测子块第4列的各像素值,第4列的各像素值对应的列缓存索引为:1,2,3,4,进行存储时,将当前预测子块的第4列的各像素值存储到右边边界缓存中相应列缓存索引的位置;当前预测子块的下边边界像素值为该预测子块第4行的各像素值,第4行的各像素值对应的行缓存索引为:5,6,7,8,进行存储时,将当前预测子块的第4行的各像素值存储到下边边界缓存中相应行缓存索引的位置。
按照步骤310~313对当前预测宏块的所有预测子块进行预测,直到计算得到当前宏块内的所有像素值。
按照步骤301~313对当前预测宏块进行预测,计算得到当前宏块内的所有像素值之后,对其他宏块类似地执行301~313,便可计算得到整幅图像的像素值。
如果预先得知需要进行预测的图像内各个宏块的预测类型都相同,则上述流程中无需执行步骤301,也就是不需要判断当前预测宏块为何种帧内预测类型。例如:若图像的帧内预测类型都为16×16的矩阵,则直接执行步骤302;若图像的帧内预测类型都为8×8的矩阵,则直接执行步骤306;若图像的帧内预测类型都为4×4的矩阵形式,则直接执行步骤310。
参见图4,为本发明帧内预测的装置结构示意图,该装置包括邻近像素值获取模块、计算模块、下边边界缓存和右边边界缓存;
所述右边边界缓存,用于对应列缓存索引存储对预测块进行预测后的最右边一列的像素值,该右边边界缓存的宽度为宏块宽度,每个宏块中各列像素的列缓存索引为将图像中每个宏块的各列按照行号进行顺序编号后的序号;
所述下边边界缓存,用于对应行缓存索引存储对预测块进行预测后的最下边一行的像素值,该下边边界缓存的宽度为图像宽度,图像中各行像素的列缓存索引为将图像中每行像素按照列号进行顺序编号后的序号;
所述邻近像素值获取模块,用于确定当前预测块的邻近上预测块的下边边界像素值的行缓存索引,并确定当前预测块的邻近左预测块的右边边界像素值的列缓存索引;在下边边界缓存中获取与确定出的邻近上预测块的下边边界像素值的行缓存索引对应的像素值,作为当前预测块的邻近上预测块的下边边界像素值,在右边边界缓存中获取与确定出的左边边界像素值的列缓存索引对应的像素值,作为当前预测块的邻近左预测块的右边边界像素值;
所述计算模块,用于根据获取的邻近上预测块的下边边界像素值和邻近左预测块的右边边界像素值计算出当前预测块的像素值;
可选地,该装置包括存储模块,用于将计算出的当前预测块的像素值中的右边边界像素值对应列缓存索引存储到右边边界缓存中,将计算出的当前预测块的下边边界像素值对应行缓存索引存储到下边边界缓存中。
本发明提出的快速计算当前预测块的邻近上预测块的下边边界像素值和邻近左预测块的右边边界像素值的方法,解决了H.264标准中计算邻近边界像素值速度慢的问题。本发明对当前预测块进行预测后,将计算得到的当前预测块的下边边界像素值存储到下边边界缓存中的相应位置,将计算得到的当前预测块的右边边界像素值存储到右边边界缓存中的相应位置,这样,使后续的预测可以直接从右边边界缓存和下边边界缓存中获取需要的像素值,而不需要进行大量的计算确定当前预测块的邻近左预测块的右边边界像素值和邻近上预测块的下边边界像素值的绝对位置,以获得邻近左预测块的右边边界像素值和邻近上预测块的下边边界像素值,从而,大大节省了预测时间,提高了图像的解码速度。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种帧内预测的方法,其特征在于,该方法包括:
将图像中每个宏块的各列像素值按照行号进行顺序编号,作为每个宏块中各列像素值的列缓存索引,设置右边边界缓存,用于对应列缓存索引存储对预测块进行预测后的最右边一列的像素值,该右边边界缓存的宽度为宏块宽度;将图像中每行像素值按照列号进行顺序编号,作为图像中各行像素值的行缓存索引,设置下边边界缓存,用于对应行缓存索引存储对预测块进行预测后的最下边一行的像素值,该下边边界缓存的宽度为图像宽度;
确定当前预测块的相邻上预测块的下边边界像素值的行缓存索引,并确定当前预测块的相邻左预测块的右边边界像素值的列缓存索引;
在下边边界缓存中获取与确定出的相邻上预测块的下边边界像素值的行缓存索引对应的像素值,作为当前预测块的相邻上预测块的下边边界像素值,在右边边界缓存中获取与确定出的左边边界像素值的列缓存索引对应的像素值,作为当前预测块的相邻左预测块的右边边界像素值;
根据获取的相邻上预测块的下边边界像素值和相邻左预测块的右边边界像素值计算出当前预测块的像素值。
2.如权利要求1所述的方法,其特征在于,在下边边界缓存中获取的与确定出的相邻上预测块的下边边界像素值的行缓存索引对应的像素值,为当前预测块的相邻上预测块在计算出像素值后将其下边边界像素值存储到下边边界缓存的对应行缓存索引处的像素值;
在右边边界缓存中获取的与确定出的相邻左预测块的右边边界像素值的列缓存索引对应的像素值,为当前预测块的相邻左预测块在计算出像素值后将其右边边界像素值缓存到右边边界缓存的对应列缓存索引处的像素值。
3.如权利要求1所述的方法,其特征在于,在当前预测块位于所述图像最上边时,在下边边界缓存中获取的与确定出的相邻上预测块的下边边界像素值的行缓存索引对应的像素值,为下边边界缓存中与确定出的相邻上预测块的下边边界像素值的行缓存索引对应的初始值;
在右边边界缓存中获取的与确定出的相邻左预测块的右边边界像素值的列缓存索引对应的像素值,为当前预测块的相邻左预测块在计算出像素值后将其右边边界像素值缓存到右边边界缓存的对应列缓存索引处的像素值。
4.如权利要求1所述的方法,其特征在于,在当前预测块位于所述图像最左边时,在右边边界缓存中获取的与确定出的相邻左预测块的右边边界像素值的列缓存索引对应的像素值,为右边边界缓存中存储的与确定出的相邻左预测块的右边边界像素值的列缓存索引对应的初始值。
5.如权利要求1所述的方法,其特征在于,在当前预测块位于所述图像最上边和最左边时,在下边边界缓存中获取的与确定出的相邻上预测块的下边边界像素值的行缓存索引对应的像素值,为下边边界缓存中与确定出的相邻上预测块的下边边界像素值的行缓存索引对应的初始值;
在右边边界缓存中获取的与确定出的相邻左预测块的右边边界像素值的列缓存索引对应的像素值,为右边边界缓存中存储的与确定出的相邻左预测块的右边边界像素值的列缓存索引对应的初始值。
6.如权利要求1所述的方法,其特征在于,所述确定当前预测块的相邻上预测块的下边边界像素值的行缓存索引之前,该方法包括:
判断当前预测宏块的矩阵形式,若当前预测宏块的矩阵形式为16×16的矩阵形式,则所述当前预测块为当前预测宏块,所述确定当前预测块的相邻上预测块的下边边界像素值的行缓存索引为:根据当前预测宏块的宏块序号确定当前预测宏块的相邻上预测块的下边边界像素值的行缓存索引;
若当前预测宏块的矩阵形式为4×4的矩阵形式或8×8的矩阵形式,则所述当前预测块为当前预测子块,所述确定当前预测块的相邻上预测块的下边边界像素值的行缓存索引为:根据当前预测子块所属宏块的宏块序号和当前预测子块在所属宏块中的相对位置确定当前预测子块的相邻上预测块的下边边界像素值的行缓存索引,所述确定当前预测子块的相邻左预测块的右边边界像素值的列缓存索引为:根据当前预测子块在所属宏块中的相对位置确定当前预测子块的相邻左预测块的右边边界像素值的列缓存索引。
7.一种帧内预测装置,其特征在于,该装置包括相邻像素值获取模块、计算模块、下边边界缓存和右边边界缓存;
所述右边边界缓存,用于对应列缓存索引存储对预测块进行预测后的最右边一列的像素值,该右边边界缓存的宽度为宏块宽度,每个宏块中各列像素的列缓存索引为将图像中每个宏块的各列按照行号进行顺序编号后的序号;
所述下边边界缓存,用于对应行缓存索引存储对预测块进行预测后的最下边一行的像素值,该下边边界缓存的宽度为图像宽度,图像中各行像素的列缓存索引为将图像中每行像素按照列号进行顺序编号后的序号;
所述相邻像素值获取模块,用于确定当前预测块的相邻上预测块的下边边界像素值的行缓存索引,并确定当前预测块的相邻左预测块的右边边界像素值的列缓存索引;在下边边界缓存中获取与确定出的相邻上预测块的下边边界像素值的行缓存索引对应的像素值,作为当前预测块的相邻上预测块的下边边界像素值,在右边边界缓存中获取与确定出的左边边界像素值的列缓存索引对应的像素值,作为当前预测块的相邻左预测块的右边边界像素值;
所述计算模块,用于根据获取的相邻上预测块的下边边界像素值和相邻左预测块的右边边界像素值计算出当前预测块的像素值。
8.如权利要求7所述的装置,其特征在于,该装置包括存储模块,用于将计算出的当前预测块的像素值中的右边边界像素值对应列缓存索引存储到右边边界缓存中,将计算出的当前预测块的下边边界像素值对应行缓存索引存储到下边边界缓存中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810211844 CN101365136B (zh) | 2008-09-09 | 2008-09-09 | 帧内预测的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810211844 CN101365136B (zh) | 2008-09-09 | 2008-09-09 | 帧内预测的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101365136A CN101365136A (zh) | 2009-02-11 |
CN101365136B true CN101365136B (zh) | 2011-01-26 |
Family
ID=40391226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200810211844 Expired - Fee Related CN101365136B (zh) | 2008-09-09 | 2008-09-09 | 帧内预测的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101365136B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120314767A1 (en) | 2011-06-13 | 2012-12-13 | Qualcomm Incorporated | Border pixel padding for intra prediction in video coding |
PL3588949T3 (pl) | 2011-10-28 | 2021-03-08 | Samsung Electronics Co., Ltd. | Sposób i urządzenie do predykcji wewnątrzramkowej wideo |
CN105981380B (zh) | 2013-12-18 | 2019-08-20 | 寰发股份有限公司 | 利用调色板编码的编码视频数据区块的方法和装置 |
EP3087743A4 (en) | 2013-12-27 | 2017-02-22 | HFI Innovation Inc. | Method and apparatus for major color index map coding |
CN106031171B (zh) * | 2013-12-27 | 2019-08-30 | 联发科技股份有限公司 | 具有跨块预测的调色板编码的方法和装置 |
CA2934743C (en) | 2013-12-27 | 2018-11-27 | Hfi Innovation Inc. | Method and apparatus for syntax redundancy removal in palette coding |
CN104363455A (zh) * | 2014-10-29 | 2015-02-18 | 复旦大学 | 一种适用于hevc标准中帧内预测的参考像素的硬件片上存储方法 |
CN104933670B (zh) * | 2015-07-02 | 2018-06-15 | 北京电子工程总体研究所 | 一种图像像素数据的存储方法及*** |
CN112022065A (zh) * | 2020-09-24 | 2020-12-04 | 电子科技大学 | 一种快速定位胶囊进入十二指肠时间点的方法及*** |
-
2008
- 2008-09-09 CN CN 200810211844 patent/CN101365136B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101365136A (zh) | 2009-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101365136B (zh) | 帧内预测的方法及装置 | |
US10542276B2 (en) | Data caching method and apparatus for video decoder | |
KR100621137B1 (ko) | 동화상 부호화 장치 및 동화상 처리장치 | |
CN101848391B (zh) | 运动图像编码装置以及运动图像译码装置 | |
CN102547296B (zh) | 移动估计加速电路、移动估计方法及环路滤波加速电路 | |
CN103686044B (zh) | 像素缓冲 | |
WO2022104498A1 (zh) | 帧内预测方法、编码器、解码器以及计算机存储介质 | |
CN101431675B (zh) | 一种像素运动估计方法和装置 | |
CN104202602B (zh) | 执行视频编码的装置及方法 | |
US8902994B1 (en) | Deblocking filtering | |
KR20190117708A (ko) | 부호화유닛 심도 확정 방법 및 장치 | |
CN101505427A (zh) | 视频压缩编码算法中的运动估计装置 | |
US20100020879A1 (en) | Method for decoding a block of a video image | |
CN102291581B (zh) | 支持帧场自适应运动估计的实现方法 | |
CN103414895A (zh) | 一种适用于hevc标准的编码器帧内预测装置及方法 | |
CN101540911A (zh) | 产生图像数据流的方法和设备及重建图像的方法和设备 | |
CN103188496A (zh) | 基于运动矢量分布预测的快速运动估计视频编码方法 | |
CN103188493A (zh) | 图像编码装置及图像编码方法 | |
CN111741297B (zh) | 帧间预测方法、视频编码方法及其相关装置 | |
CN109618157A (zh) | 一种视频显示流压缩编码的硬件实现***及方法 | |
CN102088610A (zh) | 视频编解码器及运动估计方法 | |
US10999586B2 (en) | Image encoding method and equipment for implementing the method | |
CN101170696A (zh) | 一种运动估计方法 | |
CN112449182A (zh) | 视频编码方法、装置、设备及存储介质 | |
WO2023155751A1 (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110126 |
|
CF01 | Termination of patent right due to non-payment of annual fee |