CN103716627B - 分层编解码方法及装置 - Google Patents

分层编解码方法及装置 Download PDF

Info

Publication number
CN103716627B
CN103716627B CN201210374837.3A CN201210374837A CN103716627B CN 103716627 B CN103716627 B CN 103716627B CN 201210374837 A CN201210374837 A CN 201210374837A CN 103716627 B CN103716627 B CN 103716627B
Authority
CN
China
Prior art keywords
coding mode
value
mode
index
indexing
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
Application number
CN201210374837.3A
Other languages
English (en)
Other versions
CN103716627A (zh
Inventor
杨海涛
周建同
赵志杰
约恩·奥斯特曼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201210374837.3A priority Critical patent/CN103716627B/zh
Priority to PCT/CN2013/081980 priority patent/WO2014048188A1/zh
Publication of CN103716627A publication Critical patent/CN103716627A/zh
Application granted granted Critical
Publication of CN103716627B publication Critical patent/CN103716627B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/187Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a scalable video layer

Abstract

本发明实施例提供一种分层编解码方法及装置,该分层编码方法包括:获取底层中、与增强层的当前块对应的底层块的底层编码模式;若当前块的当前编码模式与底层编码模式相同,则根据当前编码模式对当前块进行编码生成码流,在码流的头部设置用以指示帧内编码使用层间信息的指示标识。本发明实施例提供的分层编解码方法及装置,在对当前块的编码过程中考虑到了对应的底层块的编码模式,充分利用了层间相关性,大大提高了编解码性能。

Description

分层编解码方法及装置
技术领域
本发明实施例涉及视频处理技术,尤其涉及一种分层编解码方法及装置。
背景技术
随着网络技术和终端处理能力的不断提高和发展,人们对视频编码要求越来越高。高效率视频编码(High Efficiency Video Coding,简称HEVC)是新一代的视频编码标准,在HEVC的帧内编码技术中,对亮度信号的预测有35种模式。在HEVC的帧内编码技术的应用过程中,需要构建候选模式列表来实现编解码。
可分层视频编解码(Scalable Video Coding,简称SVC),是一种能将视频流分割为多个分辨率、质量和帧速率层的技术,将SVC作为HEVC的帧内编码技术的扩展,视频数据被分为一个底层和可提高分辨率、帧速率和质量的其它可选的增强层组成的多层视频流。为了适应SVC对HEVC的帧内编码技术的扩展,亟需突出一种高效的视频编解码方法,以提高编解码性能。
发明内容
本发明实施例提供一种分层编解码方法及装置,以提高编解码性能。
第一方面,本发明实施例提供的一种分层编码方法,包括:
获取底层中、与增强层的当前块对应的底层块的底层编码模式;
若所述当前块的当前编码模式与所述底层编码模式相同,则根据所述当前编码模式对所述当前块进行编码生成码流,在所述码流的头部设置用以指示帧内编码使用层间信息的指示标识。
在第一种可能的实现方式中,所述获取底层中、与增强层的当前块对应的底层块的底层编码模式之后,所述方法还包括:
若所述当前块的当前编码模式与所述底层编码模式不同,则生成候选模式列表;
根据所述当前编码模式和所述候选模式列表生成模式值;
根据所述当前编码模式对所述当前块进行编码生成码流,将所述模式值对应的码字写入所述码流中,在所述码流的头部设置用以指示帧内编码未使用层间信息的指示标识。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述生成候选模式列表,包括:
设置所述增强层中与所述当前块的左相邻块的第一编码模式的索引为0,设置所述增强层中与所述当前块的上相邻块的第二编码模式的索引为1;
若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的值设置为1;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,则若所述底层编码模式的值大于所述第一编码模式的值,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]+29)%32),否则,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]-2+1)%32);其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值;
设置所述底层编码模式的索引为2。
结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述根据当前块的当前编码模式和所述候选模式列表生成模式值,具体为:
若所述候选模式列表中存在所述当前编码模式,则将所述模式值设置为所述候选模式列表中的所述当前编码模式对应的索引;
所述根据所述当前编码模式对所述当前块进行编码生成码流之后,所述方法还包括:
将第一标识写入所述码流的头部。
结合第一方面的第一种可能的实现方式,在第四种可能的实现方式中,所述根据当前块的当前编码模式和所述候选模式列表生成模式值,包括:
若所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序;
若所述当前编码模式的值大于出现概率为第三的编码模式的值,则将所述当前编码模式的值减1生成第一中间值,否则,将所述当前编码模式的值作为所述第一中间值;
若所述第一中间值大于出现概率为第二的编码模式的值,则将所述第一中间值减1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值大于出现概率为第一的编码模式的值,则将所述第二中间值减1生成第三中间值,否则,将所述第二中间值作为所述第三中间值;
将所述模式值设置为所述第三中间值;
所述根据所述当前编码模式对所述当前块进行编码生成码流之后,所述方法还包括:
将第二标识写入所述码流的头部。
在第五种可能的实现方式中,所述根据所述当前编码模式对所述当前块进行编码生成码流,具体为:
根据所述当前编码模式确定所述当前块的预测像素,获取所述当前块的实际像素,根据所述实际像素和所述预测像素生成当前残差,根据所述当前残差生成所述码流。
第二方面,本发明实施例提供一种分层解码方法,包括:
获取码流中的指示标识;
若所述指示标识用以指示帧内编码使用层间信息,则获取底层中与增强层的当前块对应的底层块的底层编码模式;
根据所述底层编码模式对所述当前块进行解码。。
在第一种可能的实现方式中,所述获取码流中的指示标识之后,所述方法还包括:
若所述指示标识用以指示帧内编码未使用层间信息,则生成候选模式列表;
根据所述码流中的模式值和所述候选模式列表生成当前块的当前编码模式;
根据所述当前编码模式对所述当前块进行解码。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述生成候选模式列表,包括:
设置所述增强层中与所述当前块的左相邻块的第一编码模式的索引为0,设置所述增强层中与所述当前块的上相邻块的第二编码模式的索引为1;
若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的值设置为1;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,则若所述底层编码模式的值大于所述第一编码模式的值,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]+29)%32),否则,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]-2+1)%32);其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值;
设置所述底层编码模式的索引为2。
结合第二方面的第一种可能的实现方式,在第三种可能的实现方式中,所述根据码流中的模式值和所述候选模式列表生成当前块的当前编码模式,包括:
若根据所述码流中的第一标识识别到所述候选模式列表中存在所述当前编码模式,则将所述当前编码模式设置为所述候选模式列表以所述模式值为索引的编码模式。
结合第二方面的第一种可能的实现方式,在第四种可能的实现方式中,所述根据码流中的模式值和所述候选模式列表生成当前块的当前编码模式,包括:
若根据所述码流中的第二标识识别到所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序;
若所述模式值小于出现概率为第一的编码模式的值,则将所述模式值增1生成第一中间值,否则,将所述模式值作为所述第一中间值;
若所述第一中间值小于出现概率为第二的编码模式的值,则将所述第一中间增1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值小于出现概率为第三的编码模式的值,则将所述第二中间值增1生成第三中间值,否则将所述第二中间值作为所述第三中间值;
将所述当前编码模式的值设置为所述第三中间值。
在第五种可能的实现方式中,所述根据所述底层编码模式对所述当前块进行解码,具体为:
根据所述底层编码模式确定所述当前块的预测像素,根据所述码流生成当前残差,根据所述预测像素和所述当前残差进行所述当前块的重建。
第三方面,本发明实施例提供一种分层编码装置,包括:
获取单元,用于获取底层中、与增强层的当前块对应的底层块的底层编码模式;
第一编码单元,与所述获取单元相连,用于若所述当前块的当前编码模式与所述底层编码模式相同,则根据所述当前编码模式对所述当前块进行编码生成码流,在所述码流的头部设置用以指示帧内编码使用层间信息的指示标识。
在第一种可能的实现方式中,所述分层编码装置,还包括:
列表生成单元,用于若所述当前块的当前编码模式与所述底层编码模式不同,则生成候选模式列表;
处理单元,与所述列表生成单元相连,用于根据所述当前编码模式和所述候选模式列表生成模式值;
第二编码单元,与所述处理单元相连,用于根据所述当前编码模式对所述当前块进行编码生成码流,将所述模式值对应的码字写入所述码流中,在所述码流的头部设置用以指示帧内编码未使用层间信息的指示标识。
结合第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述列表生成单元具体用于:
设置所述增强层中与所述当前块的左相邻块的第一编码模式的索引为0,设置所述增强层中与所述当前块的上相邻块的第二编码模式的索引为1;
若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的值设置为1;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,则若所述底层编码模式的值大于所述第一编码模式的值,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]+29)%32),否则,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]-2+1)%32);其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值;
设置所述底层编码模式的索引为2。
结合第三方面的第一种可能的实现方式,在第三种可能的实现方式中,所述处理单元具体用于若所述候选模式列表中存在所述当前编码模式,则将所述模式值设置为所述候选模式列表中的所述当前编码模式对应的索引;
所述第二编码单元还用于将第一标识写入所述码流的头部。
结合第三方面的第一种可能的实现方式,在第四种可能的实现方式中,所述处理单元具体用于若所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序;
若所述当前编码模式的值大于出现概率为第三的编码模式的值,则将所述当前编码模式的值减1生成第一中间值,否则,将所述当前编码模式的值作为所述第一中间值;
若所述第一中间值大于出现概率为第二的编码模式的值,则将所述第一中间值减1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值大于出现概率为第一的编码模式的值,则将所述第二中间值减1生成第三中间值,否则,将所述第二中间值作为所述第三中间值;
将所述模式值设置为所述第三中间值;
所述第二编码单元还用于将第二标识写入所述码流的头部。
在第五种可能的实现方式中,所述第一编码单元具体用于根据所述当前编码模式确定所述当前块的预测像素,获取所述当前块的实际像素,根据所述实际像素和所述预测像素生成当前残差,根据所述当前残差生成所述码流。
第四方面,本发明实施例提供一种分层解码装置,包括:
第一获取单元,用于获取码流中的指示标识;
第二获取单元,与所述第一获取单元相连,用于若所述指示标识用以指示帧内编码使用层间信息,则获取底层中与增强层的当前块对应的底层块的底层编码模式;
第一解码单元,与所述第二获取单元相连,用于根据所述底层编码模式对所述当前块进行解码。
在第一种可能的实现方式中,所述分层解码装置,还包括:
列表生成单元,与所述第一获取单元相连,用于若所述指示标识用以指示帧内编码未使用层间信息,则生成候选模式列表;
处理单元,与所述列表生成单元相连,用于根据码流中的模式值和所述候选模式列表生成当前块的当前编码模式;
第二解码单元,与所述处理单元相连,用于根据所述当前编码模式对所述当前块进行解码。
结合第四方面的第一种可能的实现方式,在第二种可能的实现方式中,所述列表生成单元具体用于:
设置所述增强层中与所述当前块的左相邻块的第一编码模式的索引为0,设置所述增强层中与所述当前块的上相邻块的第二编码模式的索引为1;
若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的值设置为1;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,则若所述底层编码模式的值大于所述第一编码模式的值,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]+29)%32),否则,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]-2+1)%32);其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值;
设置所述底层编码模式的索引为2。
结合第四方面的第一种可能的实现方式,在第三种可能的实现方式中,所述处理单元具体用于若根据所述码流中的第一标识识别到所述候选模式列表中存在所述当前编码模式,则将所述当前编码模式设置为所述候选模式列表以所述模式值为索引的编码模式。
结合第四方面的第一种可能的实现方式,在第四种可能的实现方式中,所述处理单元具体用于:
若根据所述码流中的第二标识识别到所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序;
若所述模式值小于出现概率为第一的编码模式的值,则将所述模式值增1生成第一中间值,否则,将所述模式值作为所述第一中间值;
若所述第一中间值小于出现概率为第二的编码模式的值,则将所述第一中间增1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值小于出现概率为第三的编码模式的值,则将所述第二中间值增1生成第三中间值,否则将所述第二中间值作为所述第三中间值;
将所述当前编码模式的值设置为所述第三中间值。
在第五种可能的实现方式中,所述第一解码单元具体用于根据所述底层编码模式确定所述当前块的预测像素,根据所述码流生成当前残差,根据所述预测像素和所述当前残差进行所述当前块的重建。
第五方面,本发明实施例提供一种分层编码方法,包括:
生成初始模式列表,其中,所述初始模式列表包括底层中与增强层的当前块对应的底层块的底层编码模式、所述增强层中与所述当前块的左相邻块的第一编码模式和所述增强层中与所述当前块的上相邻块的第二编码模式;
根据当前块的当前编码模式和所述候选模式列表生成模式值;
根据所述当前编码模式对所述当前块进行编码生成码流,将所述模式值对应的码字写入所述码流中。
在第一种可能的实现方式中,所述对所述初始模式列表进行修正,生成候选模式列表,包括:
按照出现概率由高到低所述底层编码模式、所述第一编码模式和所述第二编码模式进行排序,设置出现概率为第一的编码模式的索引为0,出现概率为第二的编码模式的索引为1,出现概率为第三的编码模式的索引为2;
若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的值设置为1,若索引为2的编码模式的值与所述索引为0的编码模式的值相等,则将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,根据以下公式分别设置所述索引为1的编码模式的值和所述索引为2的编码模式的值:
candModeList[1]=2+((candModeList[0]+29)%32);
candModeList[2]=2+((candModeList[0]-2+1)%32);
其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值,candModeList[2]为所述索引为2的编码模式的值;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值等于所述索引为0的编码模式的值或所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0,若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为1,则将所述索引为2的编码模式的值设置为1,否则,将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值不等于所述索引为0的编码模式的值和所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0。
在第二种可能的实现方式中,所述根据当前块的当前编码模式和所述候选模式列表生成模式值,具体为:
若所述候选模式列表中存在所述当前编码模式,则将所述模式值设置为所述候选模式列表中的所述当前编码模式对应的索引;
所述根据所述当前编码模式对所述当前块进行编码生成码流之后,所述方法还包括:
将第一标识写入所述码流的头部。
在第三种可能的实现方式中,所述根据当前块的当前编码模式和所述候选模式列表生成模式值,包括:
若所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序;
若所述当前编码模式的值大于出现概率为第三的编码模式的值,则将所述当前编码模式的值减1生成第一中间值,否则,将所述当前编码模式的值作为所述第一中间值;
若所述第一中间值大于出现概率为第二的编码模式的值,则将所述第一中间值减1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值大于出现概率为第一的编码模式的值,则将所述第二中间值减1生成第三中间值,否则,将所述第二中间值作为所述第三中间值;
将所述模式值设置为所述第三中间值;
所述根据所述当前编码模式对所述当前块进行编码生成码流之后,所述方法还包括:
将第二标识写入所述码流的头部。
在第四种可能的实现方式中,所述根据所述当前编码模式对所述当前块进行编码生成码流,具体为:
根据所述当前编码模式确定所述当前块的预测像素,获取所述当前块的实际像素,根据所述实际像素和所述预测像素生成当前残差,根据所述当前残差生成所述码流。
第六方面,本发明实施例提供一种分层解码方法,包括:
生成初始模式列表,其中,所述初始模式列表包括底层中与增强层的当前块对应的底层块的底层编码模式、所述增强层中与所述当前块的左相邻块的第一编码模式和所述增强层中与所述当前块的上相邻块的第二编码模式;
对所述初始模式列表进行修正,生成候选模式列表;
根据码流中的模式值和所述候选模式列表生成当前块的当前编码模式;
根据所述当前编码模式对所述当前块进行解码。
在第一种可能的实现方式中,所述对所述初始模式列表进行修正,生成候选模式列表,包括:
按照出现概率由高到低所述底层编码模式、所述第一编码模式和所述第二编码模式进行排序,设置出现概率为第一的编码模式的索引为0,出现概率为第二的编码模式的索引为1,出现概率为第三的编码模式的索引为2;
若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的值设置为1,若索引为2的编码模式的值与所述索引为0的编码模式的值相等,则将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,根据以下公式分别设置所述索引为1的编码模式的值和所述索引为2的编码模式的值:
candModeList[1]=2+((candModeList[0]+29)%32);
candModeList[2]=2+((candModeList[0]-2+1)%32);
其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值,candModeList[2]为所述索引为2的编码模式的值;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值等于所述索引为0的编码模式的值或所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0,若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为1,则将所述索引为2的编码模式的值设置为1,否则,将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值不等于所述索引为0的编码模式的值和所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0。
在第二种可能的实现方式中,所述根据码流中的模式值和所述候选模式列表生成当前块的当前编码模式,具体为:
若根据所述码流中的第一标识识别到所述候选模式列表中存在所述当前编码模式,则将所述当前编码模式设置为所述候选模式列表以所述模式值为索引的编码模式。
在第三种可能的实现方式中,所述根据码流中的模式值和所述候选模式列表生成当前块的当前编码模式,包括:
若根据所述码流中的第二标识识别到所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序;
若所述模式值小于出现概率为第一的编码模式的值,则将所述模式值增1生成第一中间值,否则,将所述模式值作为所述第一中间值;
若所述第一中间值小于出现概率为第二的编码模式的值,则将所述第一中间增1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值小于出现概率为第三的编码模式的值,则将所述第二中间值增1生成第三中间值,否则将所述第二中间值作为所述第三中间值;
将所述当前编码模式的值设置为所述第三中间值。
在第四种可能的实现方式中,所述根据所述当前编码模式对所述当前块进行解码,具体为:
根据所述当前编码模式确定所述当前块的预测像素,根据所述码流生成当前残差,根据所述预测像素和所述当前残差进行所述当前块的重建。
第七方面,本发明实施例提供一种分层编码装置,包括:
初始化单元,用于生成初始模式列表,其中,所述初始模式列表包括底层中与增强层的当前块对应的底层块的底层编码模式、所述增强层中与所述当前块的左相邻块的第一编码模式和所述增强层中与所述当前块的上相邻块的第二编码模式;
修正单元,与所述初始化单元相连,用于对所述初始模式列表进行修正,生成候选模式列表;
处理单元,与所述修正单元相连,用于根据当前块的当前编码模式和所述候选模式列表生成模式值;
编码单元,与所述处理单元相连,用于根据所述当前编码模式对所述当前块进行编码生成码流,将所述模式值对应的码字写入所述码流中。
在第一种可能的实现方式中,所述修正单元包括:
第一排序子单元,与所述第一初始化单元相连,用于按照出现概率由高到低所述底层编码模式、所述第一编码模式和所述第二编码模式进行排序,设置出现概率为第一的编码模式的索引为0,出现概率为第二的编码模式的索引为1,出现概率为第三的编码模式的索引为2;
第一处理子单元,与所述第一排序子单元相连,用于若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的值设置为1,若索引为2的编码模式的值与所述索引为0的编码模式的值相等,则将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,根据以下公式分别设置所述索引为1的编码模式的值和所述索引为2的编码模式的值:
candModeList[1]=2+((candModeList[0]+29)%32);
candModeList[2]=2+((candModeList[0]-2+1)%32);
其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值,candModeList[2]为所述索引为2的编码模式的值;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值等于所述索引为0的编码模式的值或所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0,若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为1,则将所述索引为2的编码模式的值设置为1,否则,将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值不等于所述索引为0的编码模式的值和所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0。
在第二种可能的实现方式中,所述处理单元具体用于若所述候选模式列表中存在所述当前编码模式,则将所述模式值设置为所述候选模式列表中的所述当前编码模式对应的索引;
所述编码单元还用于将第一标识写入所述码流的头部。
在第三种可能的实现方式中,所述处理单元包括:
第二排序子单元,与所述第一修正单元相连,用于若所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序;
第二处理子单元,与所述第二排序子单元相连,用于若所述当前编码模式的值大于出现概率为第三的编码模式的值,则将所述当前编码模式的值减1生成第一中间值,否则,将所述当前编码模式的值作为所述第一中间值;
若所述第一中间值大于出现概率为第二的编码模式的值,则将所述第一中间值减1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值大于出现概率为第一的编码模式的值,则将所述第二中间值减1生成第三中间值,否则,将所述第二中间值作为所述第三中间值;
将所述模式值设置为所述第三中间值;
所述编码单元还用于将第二标识写入所述码流的头部。
在第四种可能的实现方式中,所述编码单元具体用于根据所述当前编码模式确定所述当前块的预测像素,获取所述当前块的实际像素,根据所述实际像素和所述预测像素生成当前残差,根据所述当前残差生成所述码流。
第八方面,本发明实施例提供一种分层解码装置,包括:
初始化单元,用于生成初始模式列表,其中,所述初始模式列表包括底层中与增强层的当前块对应的底层块的底层编码模式、所述增强层中与所述当前块的左相邻块的第一编码模式和所述增强层中与所述当前块的上相邻块的第二编码模式;
修正单元,与所述初始化单元相连,用于对所述初始模式列表进行修正,生成候选模式列表;
处理单元,与所述修正单元相连,用于根据码流中的模式值和所述候选模式列表生成当前块的当前编码模式;
解码单元,与所述修正单元相连,用于根据所述当前编码模式对所述当前块进行解码。
在第一种可能的实现方式中,所述修正单元包括:
第一排序子单元,与所述初始化单元相连,用于按照出现概率由高到低所述底层编码模式、所述第一编码模式和所述第二编码模式进行排序,设置出现概率为第一的编码模式的索引为0,出现概率为第二的编码模式的索引为1,出现概率为第三的编码模式的索引为2;
第二处理子单元,与所述第一排序子单元相连,用于若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的值设置为1,若索引为2的编码模式的值与所述索引为0的编码模式的值相等,则将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,根据以下公式分别设置所述索引为1的编码模式的值和所述索引为2的编码模式的值:
candModeList[1]=2+((candModeList[0]+29)%32);
candModeList[2]=2+((candModeList[0]-2+1)%32);
其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值,candModeList[2]为所述索引为2的编码模式的值;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值等于所述索引为0的编码模式的值或所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0,若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为1,则将所述索引为2的编码模式的值设置为1,否则,将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值不等于所述索引为0的编码模式的值和所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0。
在第二种可能的实现方式中,所述处理单元具体用于若根据所述码流中的第一标识识别到所述候选模式列表中存在所述当前编码模式,则将所述当前编码模式设置为所述候选模式列表以所述模式值为索引的编码模式。
在第三种可能的实现方式中,所述处理单元包括:
第二排序子单元,与所述修正单元相连,用于若根据所述码流中的第二标识识别到所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序;
第二处理子单元,与所述第二排序子单元相连,用于若所述模式值小于出现概率为第一的编码模式的值,则将所述模式值增1生成第一中间值,否则,将所述模式值作为所述第一中间值;
若所述第一中间值小于出现概率为第二的编码模式的值,则将所述第一中间增1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值小于出现概率为第三的编码模式的值,则将所述第二中间值增1生成第三中间值,否则将所述第二中间值作为所述第三中间值;
将所述当前编码模式的值设置为所述第三中间值。
在第四种可能的实现方式中,所述解码单元具体用于根据所述当前编码模式确定所述当前块的预测像素,根据所述码流生成当前残差,根据所述预测像素和所述当前残差进行所述当前块的重建。
由上述技术方案可知,本发明实施例提供的分层编解码方法及装置,分层编码装置获取底层中、与增强层的当前块对应的底层块的底层编码模式,若当前块的当前编码模式与底层编码模式相同,则根据当前编码模式对当前块进行编码生成码流,在码流中设置用以指示帧内编码使用层间信息的指示标识。在对当前块的编码过程中考虑了对应的底层块的编码模式,充分利用了层间相关性,大大提高了编解码性能。且在当前块的编码模式与底层块的编码模式相同时,通过层间信息使用标识的设置,只需编码一个标志位,从而有效地减少了对帧内编码模式编码所需要的比特数,节省了码流对存储介质和传输带宽的要求,成功避免了编解码过程中构建候选模式列表以及其后建立在候选模式列表上的操作,有效降低了编解码过程中的内存和能量等资源消耗。本发明实施例提供的分层编解码方法及装置,分层编码装置生成初始模式列表,对初始模式列表进行修正,生成候选模式列表,根据当前块的当前编码模式和候选模式列表生成模式值,根据当前编码模式对当前块进行编码生成码流,将模式值对应的码字写入码流中。在对当前块的编码过程中考虑到了对应的底层块的编码模式,充分利用了层间相关性,大大提高了编解码性能。且在生成初始模式列表时,将对应的底层块的编码模式作为可能性较大的编码模式,基于此生成的候选模式列表用于对当前块的编码参考,进一步提高了编解码性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的第一种分层编码方法流程图;
图2为本发明实施例提供的亮度信号的帧内预测模式和方向示意图;
图3为本发明实施例提供的第二种分层编码方法流程图;
图4为本发明实施例提供的第一种分层解码方法流程图;
图5为本发明实施例提供的第二种分层解码方法流程图;
图6为本发明实施例提供的第三种分层编码方法流程图;
图7为本发明实施例提供的第三种分层解码方法流程图;
图8为本发明实施例提供的第一种分层编码装置结构示意图;
图9为本发明实施例提供的第二种分层编码装置结构示意图;
图10为本发明实施例提供的第一种分层解码装置结构示意图;
图11为本发明实施例提供的第二种分层解码装置结构示意图;
图12为本发明实施例提供的第三种分层编码装置结构示意图;
图13为本发明实施例提供的第四种分层编码装置结构示意图;
图14为本发明实施例提供的第三种分层解码装置结构示意图;
图15为本发明实施例提供的第四种分层解码装置结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的第一种分层编码方法流程图。如图1所示,本实施例提供的分层编码方法具体可以应用于对视频的编码过程,该编码过程可以基于但并不限于HEVC-SVC技术。本实施例提供的分层编码方法可以通过分层编码装置来执行,该分层编码装置可以集成在例如电视机、机顶盒、个人计算机、笔记本电脑、平板电脑或手机等设备的视频处理器中,也可以单独设置,该分层编码装置可以通过软件和/或硬件的方式来实现。
本实施例提供的分层编码方法具体包括:
步骤A10、获取底层中、与增强层的当前块对应的底层块的底层编码模式;
步骤A20、若所述当前块的当前编码模式与所述底层编码模式相同,则根据所述当前编码模式对所述当前块进行编码生成码流,在所述码流的头部设置用以指示帧内编码使用层间信息的指示标识。
具体地,视频数据被分为底层和可提高分辨率、帧速率和质量的其它可选的增强层组成的多层视频流。对视频数据进行编码需要对底层和增强层分别进行编码,对底层进行帧内编码时,可以采用底层的帧内预测模式来实现,在该实现过程中,底层的当前块的编码模式会参考底层中与该当前块空间相邻的编码块的编码模式。在HEVC的帧内编码过程中,对亮度信号的预测存在35种模式,亮度信号的帧内预测模式如表1所示。
表1
Intra prediction mode Associated names
0 Intra_Planar
1 Intra_DC
Otherwise(2..34) Intra_Angular
其中,模式2-34为角度预测。图2为本发明实施例提供的亮度信号的帧内预测模式和方向示意图,如图2所示图形可以反映表1中预测模式2-34的方向。
对底层进行编码后,再对增强层进行编码。在对该增强层的编码过程中,可以将增强层划分为多个不重叠的编码块,即最大编码单元。最大编码单元的大小可以为64×64,最大编码单元可以自适应地进一步对称或不对称地划分为多个编码块,划分后的编码块的大小例如为32×32、16×16或8×8等。对增强层的编码过程即为对增强层中所有最大编码单元的编码过程。在该实现过程中,增强层的当前块的编码模式不仅会参考增强层中与该当前块空间相邻的编码单元的编码模式,如与该当前块空间相邻的编码单元例如与该当前块左边相邻的编码单元和与该当前块上边相邻的编码单元,还会考虑底层中与该当前块对应的底层块的编码模式。
假设增强层中的当前块相对于帧左上角的位置是(x,y),其大小为N,底层和增强层的上抽样比例为1:2,则底层中相对于帧左上角的位置是(x/2,y/2),大小为N/2的块与该当前块相对应。在对底层的编码过程中,该对应块可能被分为多个子块分别进行编码,则在对增强层的当前块的编码过程中可以参考对应块中所有子块的编码模式,也可以参考其中一个或几个子块的编码模式。通过层间信息的充分利用,可以提高编解码性能。
确定当前块的编码模式,当前块的编码模式即为当前编码模式,底层中与当前块对应的底层块的编码模式为底层编码模式,若当前编码模式与底层编码模式相同,则根据当前编码模式对当前块进行编码生成码流,并在码流中设置用以指示帧内编码使用层间信息的指示标识。该指示标识具体用以指示对该当前块的编码采用了与底层块相同的编码模式进行编码。例如该层间信息使用标识为use_inter_pred_direct_flag,其值可以设置为1,占用一个比特位。
当解码侧接收到该码流时,可以根据码流中用以指示帧内编码使用层间信息的指示标识识别到编码侧对该当前块采用的编码模式与对应的底层块的编码模式相同,则可以获取底层块的编码模式,并通过该编码模式对码流进行解码,以实现重建。
本实施例提供的分层编码方法,分层编码装置获取底层中、与增强层的当前块对应的底层块的底层编码模式,若当前块的当前编码模式与底层编码模式相同,则根据当前编码模式对当前块进行编码生成码流,在码流中设置用以指示帧内编码使用层间信息的指示标识。在对当前块的编码过程中考虑了对应的底层块的编码模式,充分利用了层间相关性,大大提高了编解码性能。且在当前块的编码模式与底层块的编码模式相同时,通过层间信息使用标识的设置,只需编码一个标志位,从而有效地减少了对帧内编码模式编码所需要的比特数,成功避免了编解码过程中构建候选模式列表以及其后建立在候选模式列表上的操作,有效降低了编解码过程中的内存和能量等资源消耗。
在本实施例中,步骤A20中,所述根据所述当前编码模式对所述当前块进行编码生成码流,具体可以为:
根据所述当前编码模式确定所述当前块的预测像素,获取所述当前块的实际像素,根据所述实际像素和所述预测像素生成当前残差,根据所述当前残差生成所述码流。
具体地,根据当前编码模式可以确定所述当前块的预测像素,例如,当前编码模式为竖直预测编码模式,则可以将与当前块上边相邻块的像素作为该当前块的预测像素。计算当前块的实际像素与该预测像素之间的残差作为当前残差,对该残差进行编码生成码流。
相应地,在解码侧,对码流进行解码得到该当前残差,若根据码流中的层间信息使用标识识别到编码侧对该当前块采用的编码模式与对应的底层块的编码模式相同,则可以获取底层块的编码模式,根据底层块的编码模式确定预测像素,将预测像素与该当前残差相加即可实现对当前块的重建。
图3为本发明实施例提供的第二种分层编码方法流程图。如图3所示,在本实施例中,步骤A10,所述获取底层中、与增强层的当前块对应的底层块的底层编码模式之后,所述方法还包括:
步骤A30、若所述当前块的当前编码模式与所述底层编码模式不同,则生成候选模式列表;
具体地,为了充分利用候选模式列表,候选模式列表中的编码模式不重复,且该候选模式列表中包括可能性较大的编码模式。
步骤A40、根据所述当前编码模式和所述候选模式列表生成模式值;
具体地,可以根据当前编码模式和候选模式列表的关系生成该模式值,在一种实现方式中,若候选模式列表中存在该当前编码模式,则可以根据候选模式列表中该当前编码模式的索引生成该模式值。在另一种实现方式中,若候选模式列表中不存在该当前编码模式,则可以根据候选模式列表生成该模式值。
步骤A50、根据所述当前编码模式对所述当前块进行编码生成码流,将所述模式值对应的码字写入所述码流中,在所述码流的头部设置用以指示帧内编码未使用层间信息的指示标识。
具体地,不同的模式值对应不同的码字,可以将模式值进行编码生成该码字。在码流的头部设置该指示标识,以使的在解码侧可以首先解码到该指示标识,并根据该指示标识判断在帧内编码时是否使用的层间信息。
在本实施例中,步骤A30中,所述生成候选模式列表,具体可以包括如下步骤:
设置所述增强层中与所述当前块的左相邻块的第一编码模式的索引为0,设置所述增强层中与所述当前块的上相邻块的第二编码模式的索引为1;
若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的值设置为1;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,则若所述底层编码模式的值大于所述第一编码模式的值,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]+29)%32),否则,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]-2+1)%32);其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值;
设置所述底层编码模式的索引为2。
具体地,通过以下方式建立该候选模式列表:
通过上述方法生成的候选模式列表的包括三个可能性较大的编码模式。
上述处理过程中各编码模式所对应的值可参考如表1所示的对应关系,即编码模式的值为0对应平面模式(Intra_Planar),编码模式的值为1对应直流模式(Intra_DC),编码模式的值为26对应垂直模式(Intra_Vertical)。可以理解的是,本实施例基于预先设定的数值与编码模式的对应关系,本领域技术人员根据实际设置进行调整的技术方案,均在本发明的保护范围之内。
在本实施例中,步骤A40,所述根据当前块的当前编码模式和所述候选模式列表生成模式值,具体可以为:
若所述候选模式列表中存在所述当前编码模式,则将所述模式值设置为所述候选模式列表中的所述当前编码模式对应的索引;
所述根据所述当前编码模式对所述当前块进行编码生成码流之后,所述方法还包括:
将第一标识写入所述码流的头部。
具体地,若候选模式列表中存在当前编码模式,例如当前编码模式为candIntraPredModeL,且在候选模式列表candIntraPredModeL的索引为1,则将模式值设置为1,以节省资源占用,将该模式值写入码流中,并在码流的头部写入第一标识,该第一标识用以指示候选模式列表中存在当前编码模式,例如可以将prev_intra_luma_pred_flag设置为1以表示该第一标识。
还需要说明的是,优选的,将第一标识写入所述码流的头部的具体实现方式为:将第一标识写入所述码流的头部的该帧内编码层间信息未使用标识之后的位置;或者,将第一标识写入所述码流的头部的该帧内编码层间信息未使用标识之前的位置。
在本实施例中,步骤A40,所述根据当前块的当前编码模式和所述候选模式列表生成模式值,具体可以包括如下步骤:
若所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序;
若所述当前编码模式的值大于出现概率为第三的编码模式的值,则将所述当前编码模式的值减1生成第一中间值,否则,将所述当前编码模式的值作为所述第一中间值;
若所述第一中间值大于出现概率为第二的编码模式的值,则将所述第一中间值减1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值大于出现概率为第一的编码模式的值,则将所述第二中间值减1生成第三中间值,否则,将所述第二中间值作为所述第三中间值;
将所述模式值设置为所述第三中间值;
所述根据所述当前编码模式对所述当前块进行编码生成码流之后,所述方法还包括:
将第二标识写入所述码流的头部。
具体地,若候选模式列表中不存在该当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序,排序过程具体可以为:
若candModeList[0]大于candModeList[1],则
(candModeList[0],candModeList[1])=swap(candModeList[0],candModeList[1])
若candModeList[0]大于candModeList[2],则
(candModeList[0],candModeList[2])=swap(candModeList[0],candModeList[2])
若candModeList[1]大于candModeList[2],则
(candModeList[1],candModeList[2])=swap(candModeList[1],candModeList[2])
通过函数交换函数swap(x,y)可以实现排序,当然排序过程也可以通过其他方式实现,不以本实施例为限。
将rem_intra_luma_pred_mode的值设置为当前编码模式的值;
先将rem_intra_luma_pred_mode与candModeList[2]比较:
若rem_intra_luma_pred_mode大于candModeList[2],则rem_intra_luma_pred_mode减1,否则,保持rem_intra_luma_pred_mode不变;
再将rem_intra_luma_pred_mode与candModeList[1]比较:
若rem_intra_luma_pred_mode大于candModeList[1],则rem_intra_luma_pred_mode减1,否则保持rem_intra_luma_pred_mode不变。
再将rem_intra_luma_pred_mode与candModeList[0]比较:
若rem_intra_luma_pred_mode不大于candModeList[0],则rem_intra_luma_pred_mode减1,否则,保持rem_intra_luma_pred_mode不变。,将模式值设置为rem_intra_luma_pred_mode。
第二标识用以指示候选模式列表中不存在当前编码模式,例如可以将prev_intra_luma_pred_flag设置为0以表示该第二标识。还需要说明的是,优选的,将第二标识写入所述码流的头部的具体实现方式为:将第二标识写入所述码流的头部的该帧内编码层间信息未使用标识之后的位置;或者,将第二标识写入所述码流的头部的该帧内编码层间信息未使用标识之前的位置。
步骤A50中的根据所述当前编码模式对所述当前块进行编码生成码流的过程具体参照上述步骤A20中根据当前编码模式对当前块进行编码生成码流的具体实现方式,在此不再赘述。
图4为本发明实施例提供的第一种分层解码方法流程图。如图4所示,本实施例提供的分层解码方法具体可以应用于对视频的解码过程,该解码过程可以基于但并不限于HEVC-SVC技术。本实施例提供的分层解码方法可以与图1所示实施例提供的分层编码方法配合实现,其具体实现过程,在此不再赘述。本实施例提供的分层解码方法可以通过分层解码装置来执行,该分层解码装置可以集成在例如电视机、机顶盒、个人计算机、笔记本电脑、平板电脑或手机等设备的视频处理器中,也可以单独设置,该分层解码装置可以通过软件和/或硬件的方式来实现。
本实施例提供的分层解码方法具体包括:
步骤B10、获取码流中的指示标识;
步骤B20、若所述指示标识用以指示帧内编码使用层间信息,则获取底层中与增强层的当前块对应的底层块的底层编码模式;
步骤B30、根据所述底层编码模式对所述当前块进行解码。
本实施例提供的分层解码方法,分层解码装置获取码流中的指示标识,若指示标识用以指示帧内编码使用层间信息使用标识,则获取底层中与增强层的当前块对应的底层块的底层编码模式,根据底层编码模式对当前块进行解码。在对当前块的编码过程中考虑了对应的底层块的编码模式,充分利用了层间相关性,大大提高了编解码性能。且在当前块的编码模式与底层块的编码模式相同时,通过层间信息使用标识的设置,只需编码一个标志位,从而有效地减少了对帧内编码模式编码所需要的比特数,成功避免了编解码过程中构建候选模式列表以及其后建立在候选模式列表上的操作,有效降低了编解码过程中的内存和能量等资源消耗。
在本实施例中,步骤B20,所述根据所述底层编码模式对所述当前块进行解码,具体可以为:
根据所述底层编码模式确定所述当前块的预测像素,根据所述码流生成当前残差,根据所述预测像素和所述当前残差进行所述当前块的重建。
图5为本发明实施例提供的第二种分层解码方法流程图。如图5所示,步骤B10,所述获取码流中的指示标识之后,所述方法还包括:
B40、若所述指示标识用以指示帧内编码未使用层间信息,则生成候选模式列表;
B50、根据所述码流中的模式值和所述候选模式列表生成当前块的当前编码模式;
B60、根据所述当前编码模式对所述当前块进行解码。
在本实施例中,步骤B40,所述生成候选模式列表,具体可以包括如下步骤:
设置所述增强层中与所述当前块的左相邻块的第一编码模式的索引为0,设置所述增强层中与所述当前块的上相邻块的第二编码模式的索引为1;
若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的值设置为1;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,则若所述底层编码模式的值大于所述第一编码模式的值,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]+29)%32),否则,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]-2+1)%32);其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值;
设置所述底层编码模式的索引为2。
在本实施例中,B50,所述根据码流中的模式值和所述候选模式列表生成当前块的当前编码模式,具体可以包括如下步骤:
若根据所述码流中的第一标识识别到所述候选模式列表中存在所述当前编码模式,则将所述当前编码模式设置为所述候选模式列表以所述模式值为索引的编码模式。
具体地,若码流中存在第一标识,则说明候选模式列表中存在当前编码模式,码流中的模式值即为该当前编码模式在候选模式列表中的索引,则根据模式值可以确定当前编码模式。
在本实施例中,步骤B50,所述根据码流中的模式值和所述候选模式列表生成当前块的当前编码模式,具体可以包括如下步骤:
若根据所述码流中的第二标识识别到所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序;
若所述模式值小于出现概率为第一的编码模式的值,则将所述模式值增1生成第一中间值,否则,将所述模式值作为所述第一中间值;
若所述第一中间值小于出现概率为第二的编码模式的值,则将所述第一中间增1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值小于出现概率为第三的编码模式的值,则将所述第二中间值增1生成第三中间值,否则将所述第二中间值作为所述第三中间值;
将所述当前编码模式的值设置为所述第三中间值。
具体地,若码流中存在第二标识,则说明候选模式列表中不存在当前编码模式,则需要根据候选模式列表和模式值计算出当前编码模式。
按照出现概率由高到低将所述候选模式列表中各编码模式进行排序,排序过程具体可以为:
若candModeList[0]大于candModeList[1],则
(candModeList[0],candModeList[1])=swap(candModeList[0],candModeList[1])
若candModeList[0]大于candModeList[2],则
(candModeList[0],candModeList[2])=swap(candModeList[0],candModeList[2])
若candModeList[1]大于candModeList[2],则
(candModeList[1],candModeList[2])=swap(candModeList[1],candModeList[2])
通过函数swap(x,y)可以实现排序,当然排序过程也可以通过其他方式实现,不以本实施例为限。
将rem_intra_luma_pred_mode的值设置为模式值;
先将rem_intra_luma_pred_mode与candModeList[0]比较:
若rem_intra_luma_pred_mode小于candModeList[0],则rem_intra_luma_pred_mode增1,否则保持rem_intra_luma_pred_mode不变;
再将rem_intra_luma_pred_mode与candModeList[1]比较:
若rem_intra_luma_pred_mode小于candModeList[1],则rem_intra_luma_pred_mode增1,否则,保持rem_intra_luma_pred_mode不变;
再将rem_intra_luma_pred_mode与candModeList[2]比较:
若rem_intra_luma_pred_mode小于candModeList[2],则rem_intra_luma_pred_mode增1,否则,保持rem_intra_luma_pred_mode不变,将当前编码模式的值设为rem_intra_luma_pred_mode。
步骤B60中的根据当前编码模式对当前块进行解码的过程具体参照上述步骤B30中根据底层编码模式对当前块进行解码的具体实现方式,在此不再赘述。
图6为本发明实施例提供的第三种分层编码方法流程图。如图6所示,本实施例提供的分层编码方法具体可以应用于对视频的编码过程,该编码过程可以基于但并不限于HEVC-SVC技术。本实施例提供的分层编码方法可以通过分层编码装置来执行,该分层编码装置可以集成在例如电视机、机顶盒、个人计算机、笔记本电脑、平板电脑或手机等设备的视频处理器中,也可以单独设置,该分层编码装置可以通过软件和/或硬件的方式来实现。
本实施例提供的分层编码方法具体包括:
步骤A100、生成初始模式列表,其中,所述初始模式列表包括底层中与增强层的当前块对应的底层块的底层编码模式、所述增强层中与所述当前块的左相邻块的第一编码模式和所述增强层中与所述当前块的上相邻块的第二编码模式;
具体地,增强层的当前块的编码模式可以同时参考增强层中与该当前块相邻块的编码模式和底层中对应的底层块的编码模式。则可以首先生成初始模式列表,初始模式列表长度为3时,初始模式列表中具体可以包括以下内容:
candModeList[0]=candIntraPredModeB
candModeList[1]=candIntraPredModeL
candModeList[2]=candIntraPredModeA
其中,candModeList[0]为索引为0的编码模式的值,candIntraPredModeB为底层编码模式的值,candModeList[1]为索引为1的编码模式的值,candIntraPredModeL为第一编码模式的值,即当前编码块左边参考块的预测模式,candModeList[2]为索引为2的编码模式的值,candIntraPredModeA为第二编码模式的值,即当前编码块上面参考块的预测模式。
步骤A200、对所述初始模式列表进行修正,生成候选模式列表;
具体地,为了充分利用候选模式列表,候选模式列表中的编码模式不重复,且该候选模式列表中包括可能性较大的编码模式。
步骤A300、根据当前块的当前编码模式和所述候选模式列表生成模式值;
具体地,当前块的编码模式即为当前编码模式,可以根据当前编码模式和候选模式列表的关系生成该模式值,在一种实现方式中,若候选模式列表中存在该当前编码模式,则可以根据候选模式列表中该当前编码模式的索引生成该模式值。在另一种实现方式中,若候选模式列表中不存在该当前编码模式,则可以根据候选模式列表生成该模式值。
步骤A400、根据所述当前编码模式对所述当前块进行编码生成码流,将所述模式值对应的码字写入所述码流中。
具体地,不同的模式值对应不同的码字,可以将模式值进行编码生成该码字。
本实施例提供的分层编码方法,分层编码装置生成初始模式列表,对初始模式列表进行修正,生成候选模式列表,根据当前块的当前编码模式和候选模式列表生成模式值,根据当前编码模式对当前块进行编码生成码流,将模式值对应的码字写入码流中。在对当前块的编码过程中考虑到了对应的底层块的编码模式,充分利用了层间相关性,大大提高了编解码性能。且在生成初始模式列表时,将对应的底层块的编码模式作为可能性较大的编码模式,基于此生成的候选模式列表用于对当前块的编码参考,进一步提高了编解码性能。
在本实施例中,步骤A200,所述对所述初始模式列表进行修正,生成候选模式列表,具体可以包括如下步骤:
按照出现概率由高到低所述底层编码模式、所述第一编码模式和所述第二编码模式进行排序,设置出现概率为第一的编码模式的索引为0,出现概率为第二的编码模式的索引为1,出现概率为第三的编码模式的索引为2;
若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的值设置为1,若索引为2的编码模式的值与所述索引为0的编码模式的值相等,则将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,根据以下公式分别设置所述索引为1的编码模式的值和所述索引为2的编码模式的值:
candModeList[1]=2+((candModeList[0]+29)%32);
candModeList[2]=2+((candModeList[0]-2+1)%32);
其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值,candModeList[2]为所述索引为2的编码模式的值;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值等于所述索引为0的编码模式的值或所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0,若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为1,则将所述索引为2的编码模式的值设置为1,否则,将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值不等于所述索引为0的编码模式的值和所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0。
具体地,编码模式的值越大,则出现概率越小,各编码模式的出现概率为预先统计的。例如按照出现概率由高到底排列好的编码模式顺序如下:
candModeList[0]=candIntraPredModeB
candModeList[1]=candIntraPredModeL
candModeList[2]=candIntraPredModeA
通过如下描述对上述排序后的列表进行修正:
上述处理过程中各编码模式所对应的值可参考如表1所示的对应关系,即编码模式的值为0对应平面模式(Intra_Planar),编码模式的值为1对应直流模式(Intra_DC),编码模式的值为26对应垂直模式(Intra_Vertical)。可以理解的是,本实施例基于预先设定的数值与编码模式的对应关系,本领域技术人员根据实际设置进行调整的技术方案,均在本发明的保护范围之内。
在本实施例中,步骤A300,所述根据当前块的当前编码模式和所述候选模式列表生成模式值,具体可以为:
若所述候选模式列表中存在所述当前编码模式,则将所述模式值设置为所述候选模式列表中的所述当前编码模式对应的索引;
步骤A400中,所述根据所述当前编码模式对所述当前块进行编码生成码流之后,所述方法还可以包括:
将第一标识写入所述码流的头部。
具体地,若候选模式列表中存在当前编码模式,例如当前编码模式为candIntraPredModeB,且在候选模式列表candIntraPredModeB的索引为1,则将模式值设置为1,以节省资源占用,将该模式值写入码流中,并在码流的头部写入第一标识,该第一标识用以指示候选模式列表中存在当前编码模式,例如可以将prev_intra_luma_pred_flag设置为1以表示该第一标识。
在本实施例中,所述根据当前块的当前编码模式和所述候选模式列表生成模式值,具体可以包括:
若所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序;
若所述当前编码模式的值大于出现概率为第三的编码模式的值,则将所述当前编码模式的值减1生成第一中间值,否则,将所述当前编码模式的值作为所述第一中间值;
若所述第一中间值大于出现概率为第二的编码模式的值,则将所述第一中间值减1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值大于出现概率为第一的编码模式的值,则将所述第二中间值减1生成第三中间值,否则,将所述第二中间值作为所述第三中间值;
将所述模式值设置为所述第三中间值;
步骤A400中、所述根据所述当前编码模式对所述当前块进行编码生成码流之后,所述方法还可以包括:
将第二标识写入所述码流的头部。
具体地,若候选模式列表中不存在该当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序,排序过程具体可以为:
若candModeList[0]大于candModeList[1],则
(candModeList[0],candModeList[1])=swap(candModeList[0],candModeList[1])
若candModeList[0]大于candModeList[2],则
(candModeList[0],candModeList[2])=swap(candModeList[0],candModeList[2])
若candModeList[1]大于candModeList[2],则
(candModeList[1],candModeList[2])=swap(candModeList[1],candModeList[2])
通过函数swap(x,y)可以实现排序,当然排序过程也可以通过其他方式实现,不以本实施例为限。
将rem_intra_luma_pred_mode的值设置为当前编码模式的值;
先将rem_intra_luma_pred_mode与candModeList[2]比较:
若rem_intra_luma_pred_mode大于candModeList[2],则rem_intra_luma_pred_mode减1,否则,保持rem_intra_luma_pred_mode不变;
再将rem_intra_luma_pred_mode与candModeList[1]比较:
若rem_intra_luma_pred_mode大于candModeList[1],则rem_intra_luma_pred_mode减1,否则保持rem_intra_luma_pred_mode不变;
再将rem_intra_luma_pred_mode与candModeList[0]比较:
若rem_intra_luma_pred_mode不大于candModeList[0],则rem_intra_luma_pred_mode减1,否则,保持rem_intra_luma_pred_mode不变,将模式值设置为rem_intra_luma_pred_mode。
第二标识用以指示候选模式列表中不存在当前编码模式,例如可以将prev_intra_luma_pred_flag设置为0以表示该第二标识。
在本实施例中,步骤A400中,所述根据所述当前编码模式对所述当前块进行编码生成码流,具体可以为:
根据所述当前编码模式确定所述当前块的预测像素,获取所述当前块的实际像素,根据所述实际像素和所述预测像素生成当前残差,根据所述当前残差生成所述码流。
根据当前编码模式对当前块进行编码生成码流的具体实现方式和技术效果可以参照上述分层编码方法中的描述,在此不再赘述。
图7为本发明实施例提供的第三种分层解码方法流程图。如图7所示,本实施例提供的分层解码方法具体可以应用于对视频的解码过程,该解码过程可以基于但并不限于HEVC-SVC技术。本实施例提供的分层解码方法可以与图6所示实施例提供的分层编码方法配合实现,其具体实现过程,在此不再赘述。本实施例提供的分层解码方法可以通过分层解码装置来执行,该分层解码装置可以集成在例如电视机、机顶盒、个人计算机、笔记本电脑、平板电脑或手机等设备的视频处理器中,也可以单独设置,该分层解码装置可以通过软件和/或硬件的方式来实现。
本实施例提供的分层解码方法具体包括:
步骤B100、生成初始模式列表,其中,所述初始模式列表包括底层中与增强层的当前块对应的底层块的底层编码模式、所述增强层中与所述当前块的左相邻块的第一编码模式和所述增强层中与所述当前块的上相邻块的第二编码模式;
步骤B200、对所述初始模式列表进行修正,生成候选模式列表;
步骤B300、根据码流中的模式值和所述候选模式列表生成当前块的当前编码模式;
步骤B400、根据所述当前编码模式对所述当前块进行解码。
本实施例提供的分层解码方法,分层解码装置生成初始模式列表,对初始模式列表进行修正,生成候选模式列表,根据码流中的模式值和候选模式列表生成当前块的当前编码模式,根据当前编码模式对当前块进行解码。在对当前块的编码过程中考虑了对应的底层块的编码模式,充分利用了层间相关性,大大提高了编解码性能。且在生成初始模式列表时,将对应的底层块的编码模式作为可能性较大的编码模式,基于此生成的候选模式列表用于对当前块的解码参考,进一步提高了编解码性能。
在本实施例中,步骤B200,所述对所述初始模式列表进行修正,生成候选模式列表,具体可以包括如下步骤:
按照出现概率由高到低所述底层编码模式、所述第一编码模式和所述第二编码模式进行排序,设置出现概率为第一的编码模式的索引为0,出现概率为第二的编码模式的索引为1,出现概率为第三的编码模式的索引为2;
若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的值设置为1,若索引为2的编码模式的值与所述索引为0的编码模式的值相等,则将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,根据以下公式分别设置所述索引为1的编码模式的值和所述索引为2的编码模式的值:
candModeList[1]=2+((candModeList[0]+29)%32);
candModeList[2]=2+((candModeList[0]-2+1)%32);
其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值,candModeList[2]为所述索引为2的编码模式的值;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值等于所述索引为0的编码模式的值或所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0,若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为1,则将所述索引为2的编码模式的值设置为1,否则,将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值不等于所述索引为0的编码模式的值和所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0。
在本实施例中,步骤B300,所述根据码流中的模式值和所述候选模式列表生成当前块的当前编码模式,具体可以为:
若根据所述码流中的第一标识识别到所述候选模式列表中存在所述当前编码模式,则将所述当前编码模式设置为所述候选模式列表以所述模式值为索引的编码模式。
具体地,若码流中存在第一标识,则说明候选模式列表中存在当前编码模式,码流中的模式值即为该当前编码模式在候选模式列表中的索引,则根据模式值可以确定当前编码模式。
在本实施例中,所述根据码流中的模式值和所述候选模式列表生成当前块的当前编码模式,具体可以包括如下步骤:
若根据所述码流中的第二标识识别到所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序;
若所述模式值小于出现概率为第一的编码模式的值,则将所述模式值增1生成第一中间值,否则,将所述模式值作为所述第一中间值;
若所述第一中间值小于出现概率为第二的编码模式的值,则将所述第一中间增1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值小于出现概率为第三的编码模式的值,则将所述第二中间值增1生成第三中间值,否则将所述第二中间值作为所述第三中间值;
将所述当前编码模式的值设置为所述第三中间值。
具体地,若码流中存在第二标识,则说明候选模式列表中不存在当前编码模式,则需要根据候选模式列表和模式值计算出当前编码模式。
按照出现概率由高到低将所述候选模式列表中各编码模式进行排序,排序过程具体可以为:
若candModeList[0]大于candModeList[1],则
(candModeList[0],candModeList[1])=swap(candModeList[0],candModeList[1])
若candModeList[0]大于candModeList[2],则
(candModeList[0],candModeList[2])=swap(candModeList[0],candModeList[2])
若candModeList[1]大于candModeList[2],则
(candModeList[1],candModeList[2])=swap(candModeList[1],candModeList[2])
通过函数swap(x,y)可以实现排序,当然排序过程也可以通过其他方式实现,不以本实施例为限。
将rem_intra_luma_pred_mode的值设置为模式值;
先将rem_intra_luma_pred_mode与candModeList[0]比较:
若rem_intra_luma_pred_mode小于candModeList[0],则rem_intra_luma_pred_mode增1,否则保持rem_intra_luma_pred_mode不变;
再将rem_intra_luma_pred_mode与candModeList[1]比较:
若rem_intra_luma_pred_mode小于candModeList[1],则rem_intra_luma_pred_mode增1,否则,保持rem_intra_luma_pred_mode不变;
再将rem_intra_luma_pred_mode与candModeList[2]比较:
若rem_intra_luma_pred_mode小于candModeList[2],则rem_intra_luma_pred_mode增1,否则,保持rem_intra_luma_pred_mode不变。将当前编码模式的值设为rem_intra_luma_pred_mode。
在本实施例中,步骤B400,所述根据所述当前编码模式对所述当前块进行解码,具体可以为:
根据所述当前编码模式确定所述当前块的预测像素,根据所述码流生成当前残差,根据所述预测像素和所述当前残差进行所述当前块的重建。
图8为本发明实施例提供的第一种分层编码装置结构示意图。如图8所示,本实施例提供的分层编码装置具体可以实现如图1所示实施例提供的分层编码方法的各个步骤,其具体实现过程,在此不再赘述。本实施例提供方的分层编码装置可以集成在例如电视机、机顶盒、个人计算机、笔记本电脑、平板电脑或手机等设备的视频处理器中,也可以单独设置,该分层编码装置可以通过软件和/或硬件的方式来实现。
本实施例提供的分层编码装置具体包括获取单元11和第一编码单元12。所述获取单元11用于获取底层中、与增强层的当前块对应的底层块的底层编码模式。所述第一编码单元12与所述获取单元11相连,用于若所述当前块的当前编码模式与所述底层编码模式相同,则根据所述当前编码模式对所述当前块进行编码生成码流,在所述码流的头部设置用以指示帧内编码使用层间信息的指示标识。
本实施例提供的分层编码装置,获取单元11获取底层中、与增强层的当前块对应的底层块的底层编码模式,第一编码单元12若当前块的当前编码模式与底层编码模式相同,则根据当前编码模式对当前块进行编码生成码流,在码流中设置用以指示帧内编码使用层间信息的指示标识。在对当前块的编码过程中考虑了对应的底层块的编码模式,充分利用了层间相关性,大大提高了编解码性能。且在当前块的编码模式与底层块的编码模式相同时,通过层间信息使用标识的设置,只需编码一个标志位,从而有效地减少了对帧内编码模式编码所需要的比特数,成功避免了编解码过程中构建候选模式列表以及其后建立在候选模式列表上的操作,有效降低了编解码过程中的内存和能量等资源消耗。
在本实施例中,所述第一编码单元12具体可以用于根据所述当前编码模式确定所述当前块的预测像素,获取所述当前块的实际像素,根据所述实际像素和所述预测像素生成当前残差,根据所述当前残差生成所述码流。
具体地,根据当前编码模式可以确定所述当前块的预测像素,例如,当前编码模式为竖直预测编码模式,则可以将与当前块上边相邻块的像素作为该当前块的预测像素。计算当前块的实际像素与该预测像素之间的残差作为当前残差,对该残差进行编码生成码流。
相应地,在解码侧,对码流进行解码得到该当前残差,若根据码流中的层间信息使用标识识别到编码侧对该当前块采用的编码模式与对应的底层块的编码模式相同,则可以获取底层块的编码模式,根据底层块的编码模式确定预测像素,将预测像素与该当前残差相加即可实现对当前块的重建。
图9为本发明实施例提供的第二种分层编码装置结构示意图。如图9所示,在本实施例中,所述分层编码装置还可以包括列表生成单元13、处理单元14和第二编码单元15。所述列表生成单元13与所述获取单元11相连,用于若所述当前块的当前编码模式与所述底层编码模式不同,则生成候选模式列表。所述处理单元14与所述列表生成单元13相连,用于根据所述当前编码模式和所述候选模式列表生成模式值。所述第二编码单元15与所述处理单元14相连,用于根据所述当前编码模式对所述当前块进行编码生成码流,将所述模式值对应的码字写入所述码流中,在所述码流的头部设置用以指示帧内编码未使用层间信息的指示标识。
在本实施例中,所述列表生成单元13具体可以用于:
设置所述增强层中与所述当前块的左相邻块的第一编码模式的索引为0,设置所述增强层中与所述当前块的上相邻块的第二编码模式的索引为1;
若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的值设置为1;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,则若所述底层编码模式的值大于所述第一编码模式的值,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]+29)%32),否则,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]-2+1)%32);其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值;
设置所述底层编码模式的索引为2。
具体地,通过以下方式建立该候选模式列表:
通过上述方法生成的候选模式列表的包括三个可能性较大的编码模式。
上述处理过程中各编码模式所对应的值可参考如表1所示的对应关系,即编码模式的值为0对应平面模式(Intra_Planar),编码模式的值为1对应直流模式(Intra_DC),编码模式的值为26对应垂直模式(Intra_Vertical)。可以理解的是,本实施例基于预先设定的数值与编码模式的对应关系,本领域技术人员根据实际设置进行调整的技术方案,均在本发明的保护范围之内。
在本实施例中,所述处理单元14具体可以用于若所述候选模式列表中存在所述当前编码模式,则将所述模式值设置为所述候选模式列表中的所述当前编码模式对应的索引;
所述第二编码单元15还可以用于将第一标识写入所述码流的头部。
具体地,若候选模式列表中存在当前编码模式,例如当前编码模式为candIntraPredModeL,且在候选模式列表candIntraPredModeL的索引为1,则将模式值设置为1,以节省资源占用,将该模式值写入码流中,并在码流的头部写入第一标识,该第一标识用以指示候选模式列表中存在当前编码模式,例如可以将prev_intra_luma_pred_flag设置为1以表示该第一标识。
在本实施例中,所述处理单元14具体可以用于若所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序;
若所述当前编码模式的值大于出现概率为第三的编码模式的值,则将所述当前编码模式的值减1生成第一中间值,否则,将所述当前编码模式的值作为所述第一中间值;
若所述第一中间值大于出现概率为第二的编码模式的值,则将所述第一中间值减1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值大于出现概率为第一的编码模式的值,则将所述第二中间值减1生成第三中间值,否则,将所述第二中间值作为所述第三中间值;
将所述模式值设置为所述第三中间值;
所述第二编码单元15还可以用于将第二标识写入所述码流的头部。
具体地,若候选模式列表中不存在该当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序,排序过程具体可以为:
若candModeList[0]大于candModeList[1],则
(candModeList[0],candModeList[1])=swap(candModeList[0],candModeList[1])
若candModeList[0]大于candModeList[2],则
(candModeList[0],candModeList[2])=swap(candModeList[0],candModeList[2])
若candModeList[1]大于candModeList[2],则
(candModeList[1],candModeList[2])=swap(candModeList[1],candModeList[2])
通过函数swap(x,y)可以实现排序,当然排序过程也可以通过其他方式实现,不以本实施例为限。
将rem_intra_luma_pred_mode的值设置为当前编码模式的值;
先将rem_intra_luma_pred_mode与candModeList[2]比较:
若rem_intra_luma_pred_mode大于candModeList[2],则rem_intra_luma_pred_mode减1,否则,保持rem_intra_luma_pred_mode不变;
再将rem_intra_luma_pred_mode与candModeList[1]比较:
若rem_intra_luma_pred_mode大于candModeList[1],则rem_intra_luma_pred_mode减1,否则保持rem_intra_luma_pred_mode不变。
再将rem_intra_luma_pred_mode与candModeList[0]比较:
若rem_intra_luma_pred_mode不大于candModeList[0],则rem_intra_luma_pred_mode减1,否则,保持rem_intra_luma_pred_mode不变。,将模式值设置为rem_intra_luma_pred_mode。
第二标识用以指示候选模式列表中不存在当前编码模式,例如可以将prev_intra_luma_pred_flag设置为0以表示该第二标识。
图10为本发明实施例提供的第一种分层解码装置结构示意图。如图10所示,本实施例提供的分层解码装置具体可以实现如图3所示实施例提供的分层解码方法的各个步骤,其具体实现过程,在此不再赘述。本实施例提供方的分层解码装置可以集成在例如电视机、机顶盒、个人计算机、笔记本电脑、平板电脑或手机等设备的视频处理器中,也可以单独设置,该分层解码装置可以通过软件和/或硬件的方式来实现。
本实施例提供的分层解码装置具体包括第一获取单元21、第二获取单元22和第一解码单元23。所述第一获取单元21用于获取码流中的指示标识。所述第二获取单元22与所述第一获取单元21相连,用于若所述指示标识用以指示帧内编码使用层间信息,则获取底层中与增强层的当前块对应的底层块的底层编码模式。所述第一解码单元23与所述第二获取单元22相连,用于根据所述底层编码模式对所述当前块进行解码。
本实施例提供的分层解码装置,第一获取单元21获取码流中的指示标识,第二获取单元22若码流中存在层间信息使用标识,则获取底层中与增强层的当前块对应的底层块的底层编码模式,第一解码单元23根据底层编码模式对当前块进行解码。在对当前块的编码过程中考虑了对应的底层块的编码模式,充分利用了层间相关性,大大提高了编解码性能。且在当前块的编码模式与底层块的编码模式相同时,通过层间信息使用标识的设置,只需编码一个标志位,从而有效地减少了对帧内编码模式编码所需要的比特数,成功避免了编解码过程中构建候选模式列表以及其后建立在候选模式列表上的操作,有效降低了编解码过程中的内存和能量等资源消耗。
在本实施例中,所述第一解码单元23具体可以用于根据所述底层编码模式确定所述当前块的预测像素,根据所述码流生成当前残差,根据所述预测像素和所述当前残差进行所述当前块的重建。
图11为本发明实施例提供的第二种分层解码装置结构示意图。如图11所示,所述分层解码装置还可以包括列表生成单元24、处理单元25和第二解码单元26。所述列表生成单元24与所述第一获取单元相连,用于若所述指示标识用以指示帧内编码未使用层间信息,则生成候选模式列表。所述处理单元25与所述列表生成单元24相连,用于根据码流中的模式值和所述候选模式列表生成当前块的当前编码模式。所述第二解码单元26与所述处理单元25相连,用于根据所述当前编码模式对所述当前块进行解码。
在本实施例中,所述列表生成单元24具体可以用于:
设置所述增强层中与所述当前块的左相邻块的第一编码模式的索引为0,设置所述增强层中与所述当前块的上相邻块的第二编码模式的索引为1;
若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的值设置为1;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,则若所述底层编码模式的值大于所述第一编码模式的值,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]+29)%32),否则,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]-2+1)%32);其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值;
设置所述底层编码模式的索引为2。
在本实施例中,所述处理单元25具体可以用于若根据所述码流中的第一标识识别到所述候选模式列表中存在所述当前编码模式,则将所述当前编码模式设置为所述候选模式列表以所述模式值为索引的编码模式。
具体地,若码流中存在第一标识,则说明候选模式列表中存在当前编码模式,码流中的模式值即为该当前编码模式在候选模式列表中的索引,则根据模式值可以确定当前编码模式。
在本实施例中,所述处理单元25具体可以用于:
若根据所述码流中的第二标识识别到所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序;
若所述模式值小于出现概率为第一的编码模式的值,则将所述模式值增1生成第一中间值,否则,将所述模式值作为所述第一中间值;
若所述第一中间值小于出现概率为第二的编码模式的值,则将所述第一中间增1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值小于出现概率为第三的编码模式的值,则将所述第二中间值增1生成第三中间值,否则将所述第二中间值作为所述第三中间值;
将所述当前编码模式的值设置为所述第三中间值。
具体地,若码流中存在第二标识,则说明候选模式列表中不存在当前编码模式,则需要根据候选模式列表和模式值计算出当前编码模式。
按照出现概率由高到低将所述候选模式列表中各编码模式进行排序,排序过程具体可以为:
若candModeList[0]大于candModeList[1],则
(candModeList[0],candModeList[1])=swap(candModeList[0],candModeList[1])
若candModeList[0]大于candModeList[2],则
(candModeList[0],candModeList[2])=swap(candModeList[0],candModeList[2])
若candModeList[1]大于candModeList[2],则
(candModeList[1],candModeList[2])=swap(candModeList[1],candModeList[2])
通过函数swap(x,y)可以实现排序,当然排序过程也可以通过其他方式实现,不以本实施例为限。
将rem_intra_luma_pred_mode的值设置为模式值;
先将rem_intra_luma_pred_mode与candModeList[0]比较:
若rem_intra_luma_pred_mode小于candModeList[0],则rem_intra_luma_pred_mode增1,否则保持rem_intra_luma_pred_mode不变;
再将rem_intra_luma_pred_mode与candModeList[1]比较:
若rem_intra_luma_pred_mode小于candModeList[1],则rem_intra_luma_pred_mode增1,否则,保持rem_intra_luma_pred_mode不变;
再将rem_intra_luma_pred_mode与candModeList[2]比较:
若rem_intra_luma_pred_mode小于candModeList[2],则rem_intra_luma_pred_mode增1,否则,保持rem_intra_luma_pred_mode不变,将当前编码模式的值设为rem_intra_luma_pred_mode。
图12为本发明实施例提供的第三种分层编码装置结构示意图。如图12所示,本实施例提供的分层编码装置具体可以实现如图6所示实施例提供的分层编码方法的各个步骤,其具体实现过程,在此不再赘述。本实施例提供方的分层编码装置可以集成在例如电视机、机顶盒、个人计算机、笔记本电脑、平板电脑或手机等设备的视频处理器中,也可以单独设置,该分层编码装置可以通过软件和/或硬件的方式来实现。
本实施例提供的分层编码装置具体包括初始化单元31、修正单元32、处理单元33和编码单元34。所述初始化单元31用于生成初始模式列表,其中,所述初始模式列表包括底层中与增强层的当前块对应的底层块的底层编码模式、所述增强层中与所述当前块的左相邻块的第一编码模式和所述增强层中与所述当前块的上相邻块的第二编码模式。所述修正单元32与所述初始化单元31相连,用于对所述初始模式列表进行修正,生成候选模式列表。所述处理单元33与所述修正单元32相连,用于根据当前块的当前编码模式和所述候选模式列表生成模式值。所述编码单元34与所述处理单元33相连,用于根据所述当前编码模式对所述当前块进行编码生成码流,将所述模式值对应的码字写入所述码流中。
本实施例提供的分层编码装置,初始化单元31生成初始模式列表,修正单元32对初始模式列表进行修正,生成候选模式列表,处理单元33根据当前块的当前编码模式和候选模式列表生成模式值,编码单元34根据当前编码模式对当前块进行编码生成码流,将模式值对应的码字写入码流中。在对当前块的编码过程中考虑到了对应的底层块的编码模式,充分利用了层间相关性,大大提高了编解码性能。且在生成初始模式列表时,将对应的底层块的编码模式作为可能性较大的编码模式,基于此生成的候选模式列表用于对当前块的编码参考,进一步提高了编解码性能。
图13为本发明实施例提供的第四种分层编码装置结构示意图。如图13所示,在本实施例中,所述修正单元具32体可以包括第一排序子单元321和第一处理子单元322。
所述第一排序子单元321与所述初始化单元31相连,用于按照出现概率由高到低所述底层编码模式、所述第一编码模式和所述第二编码模式进行排序,设置出现概率为第一的编码模式的索引为0,出现概率为第二的编码模式的索引为1,出现概率为第三的编码模式的索引为2。
所述第一处理子单元322与所述第一排序子单元321相连,用于若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的值设置为1,若索引为2的编码模式的值与所述索引为0的编码模式的值相等,则将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,根据以下公式分别设置所述索引为1的编码模式的值和所述索引为2的编码模式的值:
candModeList[1]=2+((candModeList[0]+29)%32);
candModeList[2]=2+((candModeList[0]-2+1)%32);
其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值,candModeList[2]为所述索引为2的编码模式的值;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值等于所述索引为0的编码模式的值或所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0,若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为1,则将所述索引为2的编码模式的值设置为1,否则,将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值不等于所述索引为0的编码模式的值和所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0。
具体地,编码模式的值越大,则出现概率越小,各编码模式的出现概率为预先统计的。例如按照出现概率由高到底排列好的编码模式顺序如下:
candModeList[0]=candIntraPredModeB
candModeList[1]=candIntraPredModeL
candModeList[2]=candIntraPredModeA
通过如下描述对上述排序后的列表进行修正:
上述处理过程中各编码模式所对应的值可参考如表1所示的对应关系,即编码模式的值为0对应平面模式(Intra_Planar),编码模式的值为1对应直流模式(Intra_DC),编码模式的值为26对应垂直模式(Intra_Vertical)。可以理解的是,本实施例基于预先设定的数值与编码模式的对应关系,本领域技术人员根据实际设置进行调整的技术方案,均在本发明的保护范围之内。
在本实施例中,所述处理单元33具体用于若所述候选模式列表中存在所述当前编码模式,则将所述模式值设置为所述候选模式列表中的所述当前编码模式对应的索引;
所述编码单元34还用于将第一标识写入所述码流的头部。
具体地,若候选模式列表中存在当前编码模式,例如当前编码模式为candIntraPredModeB,且在候选模式列表candIntraPredModeB的索引为1,则将模式值设置为1,以节省资源占用,将该模式值写入码流中,并在码流的头部写入第一标识,该第一标识用以指示候选模式列表中存在当前编码模式,例如可以将prev_intra_luma_pred_flag设置为1以表示该第一标识。
在本实施例中,所述处理单元33具体可以包括第二排序子单元331和第二处理子单元332。所述第二排序子单元331与所述修正单元32相连,用于若所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序。
所述第二处理子单元332与所述第二排序子单元331相连,用于若所述当前编码模式的值大于出现概率为第三的编码模式的值,则将所述当前编码模式的值减1生成第一中间值,否则,将所述当前编码模式的值作为所述第一中间值;
若所述第一中间值大于出现概率为第二的编码模式的值,则将所述第一中间值减1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值大于出现概率为第一的编码模式的值,则将所述第二中间值减1生成第三中间值,否则,将所述第二中间值作为所述第三中间值;
将所述模式值设置为所述第三中间值;
所述编码单元34还用于将第二标识写入所述码流的头部。
具体地,若候选模式列表中不存在该当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序,排序过程具体可以为:
若candModeList[0]大于candModeList[1],则
(candModeList[0],candModeList[1])=swap(candModeList[0],candModeList[1])
若candModeList[0]大于candModeList[2],则
(candModeList[0],candModeList[2])=swap(candModeList[0],candModeList[2])
若candModeList[1]大于candModeList[2],则
(candModeList[1],candModeList[2])=swap(candModeList[1],candModeList[2])
通过函数swap(x,y)可以实现排序,当然排序过程也可以通过其他方式实现,不以本实施例为限。
将rem_intra_luma_pred_mode的值设置为当前编码模式的值;
先将rem_intra_luma_pred_mode与candModeList[2]比较:
若rem_intra_luma_pred_mode大于candModeList[2],则rem_intra_luma_pred_mode减1,否则,保持rem_intra_luma_pred_mode不变;
再将rem_intra_luma_pred_mode与candModeList[1]比较:
若rem_intra_luma_pred_mode大于candModeList[1],则rem_intra_luma_pred_mode减1,否则保持rem_intra_luma_pred_mode不变;
再将rem_intra_luma_pred_mode与candModeList[0]比较:
若rem_intra_luma_pred_mode不大于candModeList[0],则rem_intra_luma_pred_mode减1,否则,保持rem_intra_luma_pred_mode不变,将模式值设置为rem_intra_luma_pred_mode。
第二标识用以指示候选模式列表中不存在当前编码模式,例如可以将prev_intra_luma_pred_flag设置为0以表示该第二标识。
在本实施例中,所述第二编码单元34具体可以用于根据所述当前编码模式确定所述当前块的预测像素,获取所述当前块的实际像素,根据所述实际像素和所述预测像素生成当前残差,根据所述当前残差生成所述码流。
图14为本发明实施例提供的第三种分层解码装置结构示意图。如图14所示,本实施例提供的分层解码装置具体可以实现如图7所示实施例提供的分层解码方法的各个步骤,其具体实现过程,在此不再赘述。本实施例提供方的分层解码装置可以集成在例如电视机、机顶盒、个人计算机、笔记本电脑、平板电脑或手机等设备的视频处理器中,也可以单独设置,该分层解码装置可以通过软件和/或硬件的方式来实现。
本实施例提供的分层解码装置具体包括初始化单元41、修正单元42、处理单元43和解码单元44。所述初始化单元41用于生成初始模式列表,其中,所述初始模式列表包括底层中与增强层的当前块对应的底层块的底层编码模式、所述增强层中与所述当前块的左相邻块的第一编码模式和所述增强层中与所述当前块的上相邻块的第二编码模式。所述修正单元42与所述初始化单元41相连,用于对所述初始模式列表进行修正,生成候选模式列表;所述处理单元43与所述修正单元42相连,用于根据码流中的模式值和所述候选模式列表生成当前块的当前编码模式。所述解码单元44与所述修正单元42相连,用于根据所述当前编码模式对所述当前块进行解码。
本实施例提供的分层解码装置,初始化单元41生成初始模式列表,修正单元42对初始模式列表进行修正,生成候选模式列表,处理单元43根据码流中的模式值和候选模式列表生成当前块的当前编码模式,解码单元44根据当前编码模式对当前块进行解码。在对当前块的编码过程中考虑了对应的底层块的编码模式,充分利用了层间相关性,大大提高了编解码性能。且在生成初始模式列表时,将对应的底层块的编码模式作为可能性较大的编码模式,基于此生成的候选模式列表用于对当前块的解码参考,进一步提高了编解码性能。
图15为本发明实施例提供的第四种分层解码装置结构示意图。如图15所示,在本实施例中,所述修正单元42具体可以包括第一排序子单元421和第一处理子单元422。所述第一排序子单元421与所述初始化单元41相连,用于按照出现概率由高到低所述底层编码模式、所述第一编码模式和所述第二编码模式进行排序,设置出现概率为第一的编码模式的索引为0,出现概率为第二的编码模式的索引为1,出现概率为第三的编码模式的索引为2。
所述第一处理子单元422与所述第一排序子单元421相连,用于若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的值设置为1,若索引为2的编码模式的值与所述索引为0的编码模式的值相等,则将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,根据以下公式分别设置所述索引为1的编码模式的值和所述索引为2的编码模式的值:
candModeList[1]=2+((candModeList[0]+29)%32);
candModeList[2]=2+((candModeList[0]-2+1)%32);
其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值,candModeList[2]为所述索引为2的编码模式的值;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值等于所述索引为0的编码模式的值或所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0,若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为1,则将所述索引为2的编码模式的值设置为1,否则,将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值不等于所述索引为0的编码模式的值和所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0。
在本实施例中,所述处理单元43具体可以用于若根据所述码流中的第一标识识别到所述候选模式列表中存在所述当前编码模式,则将所述当前编码模式设置为所述候选模式列表以所述模式值为索引的编码模式。
在本实施例中,所述处理单元43具体可以包括第二排序子单元431和第二处理子单元432。所述第二排序子单元431与所述修正单元42相连,用于若根据所述码流中的第二标识识别到所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序。
所述第二处理子单元432与所述第二排序子单元431相连,用于若所述模式值小于出现概率为第一的编码模式的值,则将所述模式值增1生成第一中间值,否则,将所述模式值作为所述第一中间值;
若所述第一中间值小于出现概率为第二的编码模式的值,则将所述第一中间增1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值小于出现概率为第三的编码模式的值,则将所述第二中间值增1生成第三中间值,否则将所述第二中间值作为所述第三中间值;
将所述当前编码模式的值设置为所述第三中间值。
按照出现概率由高到低将所述候选模式列表中各编码模式进行排序,排序过程具体可以为:
若candModeList[0]大于candModeList[1],则
(candModeList[0],candModeList[1])=swap(candModeList[0],candModeList[1])
若candModeList[0]大于candModeList[2],则
(candModeList[0],candModeList[2])=swap(candModeList[0],candModeList[2])
若candModeList[1]大于candModeList[2],则
(candModeList[1],candModeList[2])=swap(candModeList[1],candModeList[2])
通过函数swap(x,y)可以实现排序,当然排序过程也可以通过其他方式实现,不以本实施例为限。
将rem_intra_luma_pred_mode的值设置为模式值;
先将rem_intra_luma_pred_mode与candModeList[0]比较:
若rem_intra_luma_pred_mode小于candModeList[0],则rem_intra_luma_pred_mode增1,否则保持rem_intra_luma_pred_mode不变;
再将rem_intra_luma_pred_mode与candModeList[1]比较:
若rem_intra_luma_pred_mode小于candModeList[1],则rem_intra_luma_pred_mode增1,否则,保持rem_intra_luma_pred_mode不变;
再将rem_intra_luma_pred_mode与candModeList[2]比较:
若rem_intra_luma_pred_mode小于candModeList[2],则rem_intra_luma_pred_mode增1,否则,保持rem_intra_luma_pred_mode不变。将当前编码模式的值设为rem_intra_luma_pred_mode。
在本实施例中,所述解码单元44具体可以用于根据所述当前编码模式确定所述当前块的预测像素,根据所述码流生成当前残差,根据所述预测像素和所述当前残差进行所述当前块的重建。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (40)

1.一种分层编码方法,其特征在于,包括:
获取底层中、与增强层的当前块对应的底层块的底层编码模式;
若所述当前块的当前编码模式与所述底层编码模式相同,则根据所述当前编码模式对所述当前块进行编码生成码流,在所述码流的头部设置用以指示帧内编码使用层间信息的指示标识;
若所述当前块的当前编码模式与所述底层编码模式不同,则生成候选模式列表;
根据所述当前编码模式和所述候选模式列表生成模式值;
根据所述当前编码模式对所述当前块进行编码生成码流,将所述模式值对应的码字写入所述码流中,在所述码流的头部设置用以指示帧内编码未使用层间信息的指示标识。
2.根据权利要求1所述的分层编码方法,其特征在于,所述生成候选模式列表,包括:
设置所述增强层中与所述当前块的左相邻块的第一编码模式的索引为0,设置所述增强层中与所述当前块的上相邻块的第二编码模式的索引为1;
若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的值设置为1;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,则若所述底层编码模式的值大于所述第一编码模式的值,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]+29)%32),否则,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]-2+1)%32);其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值;
设置所述底层编码模式的索引为2。
3.根据权利要求1所述的分层编码方法,其特征在于,所述根据当前块的当前编码模式和所述候选模式列表生成模式值,具体为:
若所述候选模式列表中存在所述当前编码模式,则将所述模式值设置为 所述候选模式列表中的所述当前编码模式对应的索引;
所述根据所述当前编码模式对所述当前块进行编码生成码流之后,所述方法还包括:
将第一标识写入所述码流的头部。
4.根据权利要求1所述的分层编码方法,其特征在于,所述根据当前块的当前编码模式和所述候选模式列表生成模式值,包括:
若所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序;
若所述当前编码模式的值大于出现概率为第三的编码模式的值,则将所述当前编码模式的值减1生成第一中间值,否则,将所述当前编码模式的值作为所述第一中间值;
若所述第一中间值大于出现概率为第二的编码模式的值,则将所述第一中间值减1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值大于出现概率为第一的编码模式的值,则将所述第二中间值减1生成第三中间值,否则,将所述第二中间值作为所述第三中间值;
将所述模式值设置为所述第三中间值;
所述根据所述当前编码模式对所述当前块进行编码生成码流之后,所述方法还包括:
将第二标识写入所述码流的头部。
5.根据权利要求1所述的分层编码方法,其特征在于,所述根据所述当前编码模式对所述当前块进行编码生成码流,具体为:
根据所述当前编码模式确定所述当前块的预测像素,获取所述当前块的实际像素,根据所述实际像素和所述预测像素生成当前残差,根据所述当前残差生成所述码流。
6.一种分层解码方法,其特征在于,包括:
获取码流中的指示标识;
若所述指示标识用以指示帧内编码使用层间信息,则获取底层中与增强层的当前块对应的底层块的底层编码模式;
根据所述底层编码模式对所述当前块进行解码;
若所述指示标识用以指示帧内编码未使用层间信息,则生成候选模式列 表;
根据所述码流中的模式值和所述候选模式列表生成当前块的当前编码模式;
根据所述当前编码模式对所述当前块进行解码。
7.根据权利要求6所述的分层解码方法,其特征在于,所述生成候选模式列表,包括:
设置所述增强层中与所述当前块的左相邻块的第一编码模式的索引为0,设置所述增强层中与所述当前块的上相邻块的第二编码模式的索引为1;
若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的值设置为1;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,则若所述底层编码模式的值大于所述第一编码模式的值,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]+29)%32),否则,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]-2+1)%32);其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值;
设置所述底层编码模式的索引为2。
8.根据权利要求6所述的分层解码方法,其特征在于,所述根据码流中的模式值和所述候选模式列表生成当前块的当前编码模式,包括:
若根据所述码流中的第一标识识别到所述候选模式列表中存在所述当前编码模式,则将所述当前编码模式设置为所述候选模式列表以所述模式值为索引的编码模式。
9.根据权利要求6所述的分层解码方法,其特征在于,所述根据码流中的模式值和所述候选模式列表生成当前块的当前编码模式,包括:
若根据所述码流中的第二标识识别到所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序;
若所述模式值小于出现概率为第一的编码模式的值,则将所述模式值增 1生成第一中间值,否则,将所述模式值作为所述第一中间值;
若所述第一中间值小于出现概率为第二的编码模式的值,则将所述第一中间增1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值小于出现概率为第三的编码模式的值,则将所述第二中间值增1生成第三中间值,否则将所述第二中间值作为所述第三中间值;
将所述当前编码模式的值设置为所述第三中间值。
10.根据权利要求6所述的分层解码方法,其特征在于,所述根据所述底层编码模式对所述当前块进行解码,具体为:
根据所述底层编码模式确定所述当前块的预测像素,根据所述码流生成当前残差,根据所述预测像素和所述当前残差进行所述当前块的重建。
11.一种分层编码装置,其特征在于,包括:
获取单元,用于获取底层中、与增强层的当前块对应的底层块的底层编码模式;
第一编码单元,与所述获取单元相连,用于若所述当前块的当前编码模式与所述底层编码模式相同,则根据所述当前编码模式对所述当前块进行编码生成码流,在所述码流的头部设置用以指示帧内编码使用层间信息的指示标识;
列表生成单元,用于若所述当前块的当前编码模式与所述底层编码模式不同,则生成候选模式列表;
处理单元,与所述列表生成单元相连,用于根据所述当前编码模式和所述候选模式列表生成模式值;
第二编码单元,与所述处理单元相连,用于根据所述当前编码模式对所述当前块进行编码生成码流,将所述模式值对应的码字写入所述码流中,在所述码流的头部设置用以指示帧内编码未使用层间信息的指示标识。
12.根据权利要求11所述的分层编码装置,其特征在于,所述列表生成单元具体用于:
设置所述增强层中与所述当前块的左相邻块的第一编码模式的索引为0,设置所述增强层中与所述当前块的上相邻块的第二编码模式的索引为1;
若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的 值设置为1;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,则若所述底层编码模式的值大于所述第一编码模式的值,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]+29)%32),否则,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]-2+1)%32);其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值;
设置所述底层编码模式的索引为2。
13.根据权利要求11所述的分层编码装置,其特征在于:所述处理单元具体用于若所述候选模式列表中存在所述当前编码模式,则将所述模式值设置为所述候选模式列表中的所述当前编码模式对应的索引;
所述第二编码单元还用于将第一标识写入所述码流的头部。
14.根据权利要求11所述的分层编码装置,其特征在于:所述处理单元具体用于若所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序;
若所述当前编码模式的值大于出现概率为第三的编码模式的值,则将所述当前编码模式的值减1生成第一中间值,否则,将所述当前编码模式的值作为所述第一中间值;
若所述第一中间值大于出现概率为第二的编码模式的值,则将所述第一中间值减1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值大于出现概率为第一的编码模式的值,则将所述第二中间值减1生成第三中间值,否则,将所述第二中间值作为所述第三中间值;
将所述模式值设置为所述第三中间值;
所述第二编码单元还用于将第二标识写入所述码流的头部。
15.根据权利要求11所述的分层编码装置,其特征在于:所述第一编码单元具体用于根据所述当前编码模式确定所述当前块的预测像素,获取所述当前块的实际像素,根据所述实际像素和所述预测像素生成当前残差,根据所述当前残差生成所述码流。
16.一种分层解码装置,其特征在于,包括:
第一获取单元,用于获取码流中的指示标识;
第二获取单元,与所述第一获取单元相连,用于若所述指示标识用以指示帧内编码使用层间信息,则获取底层中与增强层的当前块对应的底层块的底层编码模式;
第一解码单元,与所述第二获取单元相连,用于根据所述底层编码模式对所述当前块进行解码;
列表生成单元,与所述第一获取单元相连,用于若所述指示标识用以指示帧内编码未使用层间信息,则生成候选模式列表;
处理单元,与所述列表生成单元相连,用于根据码流中的模式值和所述候选模式列表生成当前块的当前编码模式;
第二解码单元,与所述处理单元相连,用于根据所述当前编码模式对所述当前块进行解码。
17.根据权利要求16所述的分层解码装置,其特征在于,所述列表生成单元具体用于:
设置所述增强层中与所述当前块的左相邻块的第一编码模式的索引为0,设置所述增强层中与所述当前块的上相邻块的第二编码模式的索引为1;
若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的值设置为1;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,则若所述底层编码模式的值大于所述第一编码模式的值,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]+29)%32),否则,根据以下公式设置所述索引为1的编码模式的值:candModeList[1]=2+((candModeList[0]-2+1)%32);其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值;
设置所述底层编码模式的索引为2。
18.根据权利要求16所述的分层解码装置,其特征在于:所述处理单元具体用于若根据所述码流中的第一标识识别到所述候选模式列表中存在所述当前编码模式,则将所述当前编码模式设置为所述候选模式列表以所述模式 值为索引的编码模式。
19.根据权利要求16所述的分层解码装置,其特征在于,所述处理单元具体用于:
若根据所述码流中的第二标识识别到所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序;
若所述模式值小于出现概率为第一的编码模式的值,则将所述模式值增1生成第一中间值,否则,将所述模式值作为所述第一中间值;
若所述第一中间值小于出现概率为第二的编码模式的值,则将所述第一中间增1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值小于出现概率为第三的编码模式的值,则将所述第二中间值增1生成第三中间值,否则将所述第二中间值作为所述第三中间值;
将所述当前编码模式的值设置为所述第三中间值。
20.根据权利要求16所述的分层解码装置,其特征在于:所述第一解码单元具体用于根据所述底层编码模式确定所述当前块的预测像素,根据所述码流生成当前残差,根据所述预测像素和所述当前残差进行所述当前块的重建。
21.一种分层编码方法,其特征在于,包括:
生成初始模式列表,其中,所述初始模式列表包括底层中与增强层的当前块对应的底层块的底层编码模式、所述增强层中与所述当前块的左相邻块的第一编码模式和所述增强层中与所述当前块的上相邻块的第二编码模式;
对所述初始模式列表进行修正,生成候选模式列表;
根据当前块的当前编码模式和所述候选模式列表生成模式值;
根据所述当前编码模式对所述当前块进行编码生成码流,将所述模式值对应的码字写入所述码流中。
22.根据权利要求21所述的分层编码方法,其特征在于,所述对所述初始模式列表进行修正,生成候选模式列表,包括:
按照出现概率由高到低所述底层编码模式、所述第一编码模式和所述第二编码模式进行排序,设置出现概率为第一的编码模式的索引为0,出现概率为第二的编码模式的索引为1,出现概率为第三的编码模式的索引为2;
若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的值设置为1,若索引为2的编码模式的值与所述索引为0的编码模式的值相等,则将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,根据以下公式分别设置所述索引为1的编码模式的值和所述索引为2的编码模式的值:
candModeList[1]=2+((candModeList[0]+29)%32);
candModeList[2]=2+((candModeList[0]-2+1)%32);
其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值,candModeList[2]为所述索引为2的编码模式的值;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值等于所述索引为0的编码模式的值或所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0,若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为1,则将所述索引为2的编码模式的值设置为1,否则,将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值不等于所述索引为0的编码模式的值和所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0。
23.根据权利要求21所述的分层编码方法,其特征在于,所述根据当前块的当前编码模式和所述候选模式列表生成模式值,具体为:
若所述候选模式列表中存在所述当前编码模式,则将所述模式值设置为所述候选模式列表中的所述当前编码模式对应的索引;
所述根据所述当前编码模式对所述当前块进行编码生成码流之后,所述方法还包括:
将第一标识写入所述码流的头部。
24.根据权利要求21所述的分层编码方法,其特征在于,所述根据当前块的当前编码模式和所述候选模式列表生成模式值,包括:
若所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序;
若所述当前编码模式的值大于出现概率为第三的编码模式的值,则将所述当前编码模式的值减1生成第一中间值,否则,将所述当前编码模式的值作为所述第一中间值;
若所述第一中间值大于出现概率为第二的编码模式的值,则将所述第一中间值减1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值大于出现概率为第一的编码模式的值,则将所述第二中间值减1生成第三中间值,否则,将所述第二中间值作为所述第三中间值;
将所述模式值设置为所述第三中间值;
所述根据所述当前编码模式对所述当前块进行编码生成码流之后,所述方法还包括:
将第二标识写入所述码流的头部。
25.根据权利要求21所述的分层编码方法,其特征在于,所述根据所述当前编码模式对所述当前块进行编码生成码流,具体为:
根据所述当前编码模式确定所述当前块的预测像素,获取所述当前块的实际像素,根据所述实际像素和所述预测像素生成当前残差,根据所述当前残差生成所述码流。
26.一种分层解码方法,其特征在于,包括:
生成初始模式列表,其中,所述初始模式列表包括底层中与增强层的当前块对应的底层块的底层编码模式、所述增强层中与所述当前块的左相邻块的第一编码模式和所述增强层中与所述当前块的上相邻块的第二编码模式;
对所述初始模式列表进行修正,生成候选模式列表;
根据码流中的模式值和所述候选模式列表生成当前块的当前编码模式;
根据所述当前编码模式对所述当前块进行解码。
27.根据权利要求26所述的分层解码方法,其特征在于,所述对所述初始模式列表进行修正,生成候选模式列表,包括:
按照出现概率由高到低所述底层编码模式、所述第一编码模式和所述第二编码模式进行排序,设置出现概率为第一的编码模式的索引为0,出现概率为第二的编码模式的索引为1,出现概率为第三的编码模式的索引为2;
若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的值设置为1,若索引为2的编码模式的值与所述索引为0的编码模式的值相等,则将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,根据以下公式分别设置所述索引为1的编码模式的值和所述索引为2的编码模式的值:
candModeList[1]=2+((candModeList[0]+29)%32);
candModeList[2]=2+((candModeList[0]-2+1)%32);
其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值,candModeList[2]为所述索引为2的编码模式的值;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值等于所述索引为0的编码模式的值或所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0,若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为1,则将所述索引为2的编码模式的值设置为1,否则,将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值不等于所述索引为0的编码模式的值和所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0。
28.根据权利要求26所述的分层解码方法,其特征在于,所述根据码流中的模式值和所述候选模式列表生成当前块的当前编码模式,具体为:
若根据所述码流中的第一标识识别到所述候选模式列表中存在所述当前编码模式,则将所述当前编码模式设置为所述候选模式列表以所述模式值为索引的编码模式。
29.根据权利要求26所述的分层解码方法,其特征在于,所述根据码流中的模式值和所述候选模式列表生成当前块的当前编码模式,包括:
若根据所述码流中的第二标识识别到所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序;
若所述模式值小于出现概率为第一的编码模式的值,则将所述模式值增1生成第一中间值,否则,将所述模式值作为所述第一中间值;
若所述第一中间值小于出现概率为第二的编码模式的值,则将所述第一中间增1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值小于出现概率为第三的编码模式的值,则将所述第二中间值增1生成第三中间值,否则将所述第二中间值作为所述第三中间值;
将所述当前编码模式的值设置为所述第三中间值。
30.根据权利要求26所述的分层解码方法,其特征在于,所述根据所述当前编码模式对所述当前块进行解码,具体为:
根据所述当前编码模式确定所述当前块的预测像素,根据所述码流生成当前残差,根据所述预测像素和所述当前残差进行所述当前块的重建。
31.一种分层编码装置,其特征在于,包括:
初始化单元,用于生成初始模式列表,其中,所述初始模式列表包括底层中与增强层的当前块对应的底层块的底层编码模式、所述增强层中与所述当前块的左相邻块的第一编码模式和所述增强层中与所述当前块的上相邻块的第二编码模式;
修正单元,与所述初始化单元相连,用于对所述初始模式列表进行修正,生成候选模式列表;
处理单元,与所述修正单元相连,用于根据当前块的当前编码模式和所述候选模式列表生成模式值;
编码单元,与所述处理单元相连,用于根据所述当前编码模式对所述当前块进行编码生成码流,将所述模式值对应的码字写入所述码流中。
32.根据权利要求31所述的分层编码装置,其特征在于,所述修正单元包括:
第一排序子单元,与所述初始化单元相连,用于按照出现概率由高到低 所述底层编码模式、所述第一编码模式和所述第二编码模式进行排序,设置出现概率为第一的编码模式的索引为0,出现概率为第二的编码模式的索引为1,出现概率为第三的编码模式的索引为2;
第一处理子单元,与所述第一排序子单元相连,用于若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的值设置为1,若索引为2的编码模式的值与所述索引为0的编码模式的值相等,则将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,根据以下公式分别设置所述索引为1的编码模式的值和所述索引为2的编码模式的值:
candModeList[1]=2+((candModeList[0]+29)%32);
candModeList[2]=2+((candModeList[0]-2+1)%32);
其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值,candModeList[2]为所述索引为2的编码模式的值;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值等于所述索引为0的编码模式的值或所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0,若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为1,则将所述索引为2的编码模式的值设置为1,否则,将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值不等于所述索引为0的编码模式的值和所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0。
33.根据权利要求31所述的分层编码装置,其特征在于:所述处理单元具体用于若所述候选模式列表中存在所述当前编码模式,则将所述模式值设置为所述候选模式列表中的所述当前编码模式对应的索引;
所述编码单元还用于将第一标识写入所述码流的头部。
34.根据权利要求31所述的分层编码装置,其特征在于,所述处理单元包括:
第二排序子单元,与所述修正单元相连,用于若所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序;
第二处理子单元,与所述第二排序子单元相连,用于若所述当前编码模式的值大于出现概率为第三的编码模式的值,则将所述当前编码模式的值减1生成第一中间值,否则,将所述当前编码模式的值作为所述第一中间值;
若所述第一中间值大于出现概率为第二的编码模式的值,则将所述第一中间值减1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值大于出现概率为第一的编码模式的值,则将所述第二中间值减1生成第三中间值,否则,将所述第二中间值作为所述第三中间值;
将所述模式值设置为所述第三中间值;
所述编码单元还用于将第二标识写入所述码流的头部。
35.根据权利要求31所述的分层编码装置,其特征在于,所述编码单元具体用于根据所述当前编码模式确定所述当前块的预测像素,获取所述当前块的实际像素,根据所述实际像素和所述预测像素生成当前残差,根据所述当前残差生成所述码流。
36.一种分层解码装置,其特征在于,包括:
初始化单元,用于生成初始模式列表,其中,所述初始模式列表包括底层中与增强层的当前块对应的底层块的底层编码模式、所述增强层中与所述当前块的左相邻块的第一编码模式和所述增强层中与所述当前块的上相邻块的第二编码模式;
修正单元,与所述初始化单元相连,用于对所述初始模式列表进行修正,生成候选模式列表;
处理单元,与所述修正单元相连,用于根据码流中的模式值和所述候选模式列表生成当前块的当前编码模式;
解码单元,与所述修正单元相连,用于根据所述当前编码模式对所述当前块进行解码。
37.根据权利要求36所述的分层解码装置,其特征在于,所述修正单元包括:
第一排序子单元,与所述初始化单元相连,用于按照出现概率由高到低所述底层编码模式、所述第一编码模式和所述第二编码模式进行排序,设置出现概率为第一的编码模式的索引为0,出现概率为第二的编码模式的索引为1,出现概率为第三的编码模式的索引为2;
第二处理子单元,与所述第一排序子单元相连,用于若索引为0的编码模式的值和索引为1的编码模式的值相等且小于2,则将所述索引为0的编码模式的值设置为0,将所述索引为1的编码模式的值设置为1,若索引为2的编码模式的值与所述索引为0的编码模式的值相等,则将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值相等且不小于2,根据以下公式分别设置所述索引为1的编码模式的值和所述索引为2的编码模式的值:
candModeList[1]=2+((candModeList[0]+29)%32);
candModeList[2]=2+((candModeList[0]-2+1)%32);
其中,candModeList[0]为所述索引为0的编码模式的值,candModeList[1]为所述索引为1的编码模式的值,candModeList[2]为所述索引为2的编码模式的值;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值等于所述索引为0的编码模式的值或所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0,若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为1,则将所述索引为2的编码模式的值设置为1,否则,将所述索引为2的编码模式的值设置为26;
若所述索引为0的编码模式的值和所述索引为1的编码模式的值不相等,且所述索引为2的编码模式的值不等于所述索引为0的编码模式的值和所述索引为1的编码模式的值,则若所述索引为0的编码模式的值和所述索引为1的编码模式的值均不为0,则将所述索引为2的编码模式的值设置为0。
38.根据权利要求36所述的分层解码装置,其特征在于:所述处理单元具体用于若根据所述码流中的第一标识识别到所述候选模式列表中存在所述当前编码模式,则将所述当前编码模式设置为所述候选模式列表以所述模式值为索引的编码模式。
39.根据权利要求36所述的分层解码装置,其特征在于,所述处理单元包括:
第二排序子单元,与所述修正单元相连,用于若根据所述码流中的第二标识识别到所述候选模式列表中不存在所述当前编码模式,则按照出现概率由高到低将所述候选模式列表中各编码模式进行排序;
第二处理子单元,与所述第二排序子单元相连,用于若所述模式值小于出现概率为第一的编码模式的值,则将所述模式值增1生成第一中间值,否则,将所述模式值作为所述第一中间值;
若所述第一中间值小于出现概率为第二的编码模式的值,则将所述第一中间增1生成第二中间值,否则,将所述第一中间值作为所述第二中间值;
若所述第二中间值小于出现概率为第三的编码模式的值,则将所述第二中间值增1生成第三中间值,否则将所述第二中间值作为所述第三中间值;
将所述当前编码模式的值设置为所述第三中间值。
40.根据权利要求36所述的分层解码装置,其特征在于:所述解码单元具体用于根据所述当前编码模式确定所述当前块的预测像素,根据所述码流生成当前残差,根据所述预测像素和所述当前残差进行所述当前块的重建。
CN201210374837.3A 2012-09-29 2012-09-29 分层编解码方法及装置 Active CN103716627B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201210374837.3A CN103716627B (zh) 2012-09-29 2012-09-29 分层编解码方法及装置
PCT/CN2013/081980 WO2014048188A1 (zh) 2012-09-29 2013-08-21 分层编解码方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210374837.3A CN103716627B (zh) 2012-09-29 2012-09-29 分层编解码方法及装置

Publications (2)

Publication Number Publication Date
CN103716627A CN103716627A (zh) 2014-04-09
CN103716627B true CN103716627B (zh) 2017-02-22

Family

ID=50386955

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210374837.3A Active CN103716627B (zh) 2012-09-29 2012-09-29 分层编解码方法及装置

Country Status (2)

Country Link
CN (1) CN103716627B (zh)
WO (1) WO2014048188A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109510997B (zh) * 2017-09-15 2022-09-23 华为技术有限公司 图像编码方法及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1848959A (zh) * 2005-04-13 2006-10-18 华为技术有限公司 一种增强层帧内预测方法
CN101873484A (zh) * 2009-08-13 2010-10-27 杭州海康威视软件有限公司 分层视频编码中编码模式选择方法及装置
CN101895748A (zh) * 2010-06-21 2010-11-24 华为终端有限公司 一种编解码方法以及编解码装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101047857B (zh) * 2006-03-27 2010-04-07 华为技术有限公司 实现分层变长编解码的方法
KR101457894B1 (ko) * 2009-10-28 2014-11-05 삼성전자주식회사 영상 부호화 방법 및 장치, 복호화 방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1848959A (zh) * 2005-04-13 2006-10-18 华为技术有限公司 一种增强层帧内预测方法
CN101873484A (zh) * 2009-08-13 2010-10-27 杭州海康威视软件有限公司 分层视频编码中编码模式选择方法及装置
CN101895748A (zh) * 2010-06-21 2010-11-24 华为终端有限公司 一种编解码方法以及编解码装置

Also Published As

Publication number Publication date
CN103716627A (zh) 2014-04-09
WO2014048188A1 (zh) 2014-04-03

Similar Documents

Publication Publication Date Title
CN101822055B (zh) 可缩放视频的层间残差预测的方法和设备
CN103260018B (zh) 帧内图像预测编解码方法及视频编解码器
CN103220528B (zh) 通过使用大型变换单元编码和解码图像的方法和设备
CN106031177A (zh) 用于硬件加速的视频编码的主编码器
CN107105278A (zh) 运动矢量自动生成的视频编解码框架
CN111669582B (zh) 进行编码和解码的方法、编码端、解码端和系统
CN105874795A (zh) 在波前并行处理被启用时对图片内预测模式的规则
CN111800641A (zh) 同模式采用不同种类重构像素的图像编码解码方法和装置
US20220191548A1 (en) Picture prediction method, encoder, decoder and storage medium
CN103596003B (zh) 高性能视频编码的帧间预测快速模式选择方法
CN104853192A (zh) 预测模式选择方法及装置
CN103716629B (zh) 用于图像处理的方法、装置、编码器和解码器
CN103581682B (zh) 一种hevc帧内编码的快速模式决策算法及其应用
CN106105208A (zh) 可伸缩视频编码/解码方法和设备
CN105872550A (zh) 用于编码和解码的多级有效图
CN106331700A (zh) 参考图像编码和解码的方法、编码设备和解码设备
CN103716631B (zh) 用于图像处理的方法、装置、编码器和解码器
CN102547282B (zh) 可伸缩视频编码错误隐藏方法、解码器和系统
CN108810531B (zh) 视频编码处理方法、装置及电子设备
CN114946182A (zh) 生成边信息的深度帧内预测器
CN106162192A (zh) 处理视频数据的方法和装置
CN1589028A (zh) 基于像素流水的帧内预测装置及预测方法
CN111669580B (zh) 进行编码和解码的方法、解码端、编码端和系统
CN103974069B (zh) 可重用的视频编码方法和编码器
CN103716627B (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