发明名称 基于块统计特性的编码方法
摘要 本发明涉及一种基于块统计特性的编码方法,包括以下步骤:块统计特性的两种类型块匹配准则;针对平坦区域块采用基于块统计特性的快速帧内编码模式的选择;针对平坦区域块采用基于块统计特性的快速帧内编码模式的选择两种改进方向。通过基于块统计特性的块匹配准则可以提高匹配准确度,采用基于块统计特性的快速帧内编码模式的选择,可以在保证率失真性能的同时,提高编码速度。
申请公布号 CN101895739B 申请公布日期 2012.12.19
申请号 CN200910107370.4 申请日期 2009.05.20
申请人 深圳市融创天下科技股份有限公司;国家广播电影电视总局广播科学研究院 发明人 马国强;郭晓强
分类号 H04N7/26(2006.01)I 主分类号 H04N7/26(2006.01)I
代理机构 代理人
主权项 1.一种基于块统计特性的编码方法,包括以下步骤:S11:基于块统计特性选择匹配准则1或匹配准则2,具体步骤为:S111:首先判断当前处理块的复杂度,通过如下公式来判断:<img file="FDA00001977331900011.GIF" wi="1371" he="60" />即如果|f(x,y)-f(x-1,y)|+|f(x,y)-f(x-1,y)|>Thres<sub>1</sub>成立,则<img file="FDA00001977331900012.GIF" wi="203" he="58" />否则,<img file="FDA00001977331900013.GIF" wi="207" he="61" /><img file="FDA00001977331900014.GIF" wi="372" he="119" />其中,(x,y)为像素坐标;f(x,y)表示当前编码图像的像素值;如果(<img file="FDA00001977331900015.GIF" wi="225" he="56" />复杂区域),则<img file="FDA00001977331900016.GIF" wi="235" he="56" />复杂区域;其中block表示匹配块,block<sub>j</sub>表示第j个匹配块,j=1、2、3、k…,block<sub>k</sub>表示第k个匹配块;否则,<img file="FDA00001977331900017.GIF" wi="234" he="55" />平坦区域;其中,Thres<sub>j</sub>,分别为相应的统计门限,Thres<sub>1</sub>表示第一个统计门限,Thres<sub>2</sub>表示第二个统计门限,Thres<sub>j</sub>中j=1、2;S112:针对上述不同的块类型采用不同的匹配准则如果(<img file="FDA00001977331900018.GIF" wi="235" he="56" />复杂区域),则采用绝对误差和SAD匹配准则;否则(即<img file="FDA00001977331900019.GIF" wi="234" he="56" />平坦区域)采用基于SAD精算绝对误差和SADM匹配准则1或2,其中SADM匹配准则1的具体步骤为:S1121:计算当前块各方向的sadm<sub>j</sub>,通过sadm<sub>j</sub>获取匹配方向J,水平方向:sadf<sub>1</sub>(x,y)=f(x,y+1)-f(x,y)垂直方向:sadf<sub>2</sub>(x,y)=f(x+1,y)-f(x,y)对角线方向1:sadf<sub>3</sub>(x,y)=f(x+1,y)-f(x,y+1)对角线方向2:sadf<sub>4</sub>(x,y)=f(x+1,y+1)-f(x,y)<maths num="0001"><![CDATA[<math><mrow><msub><mi>sadm</mi><mi>j</mi></msub><mo>=</mo><munder><mi>mean</mi><mrow><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>&Element;</mo><mi>block</mi></mrow></munder><mrow><mo>(</mo><mi>abs</mi><mrow><mo>(</mo><msub><mi>sadf</mi><mi>j</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>)</mo></mrow><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0002"><![CDATA[<math><mrow><mi>J</mi><mo>=</mo><munder><mi>arg</mi><mrow><mi>j</mi><mo>=</mo><mn>1,2,3,4</mn></mrow></munder><mrow><mo>(</mo><mi>max</mi><mrow><mo>(</mo><msub><mi>sadm</mi><mi>j</mi></msub><mo>)</mo></mrow><mo>)</mo></mrow></mrow></math>]]></maths>S1122:基于匹配块匹配方向J计算SADM,获取最佳匹配a)对于匹配块block<sub>k</sub>计算该匹配块各方向的sadm<sub>i</sub>,获取匹配方向I;b)若I=J,则继续计算sad<sub>k</sub>,否则,舍去该匹配块block<sub>k</sub>,c)块<img file="FDA00001977331900023.GIF" wi="293" he="83" />即为最佳匹配块;其中block<sub>k</sub>表示第k个匹配块,sad<sub>k</sub>表示第k个匹配块的对应的SAD,k的取值为1、2或k;SADM匹配准则2具体步骤为:S1123:计算当前块与匹配块之间的差值SAD;S1124:基于SAD计算SADM,获取最佳匹配,通过如下公式获取:<maths num="0003"><![CDATA[<math><mrow><mi>SAD</mi><mo>=</mo><munder><mi>&Sigma;</mi><mrow><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>&Element;</mo><mi>A</mi></mrow></munder><mo>|</mo><mi>s</mi><mo>[</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>t</mi><mo>]</mo><mo>-</mo><msup><mi>s</mi><mo>&prime;</mo></msup><mo>[</mo><mi>x</mi><mo>-</mo><msub><mi>m</mi><mi>x</mi></msub><mo>,</mo><mi>y</mi><mo>-</mo><msub><mi>m</mi><mi>y</mi></msub><mo>,</mo><mi>t</mi><mo>-</mo><msub><mi>m</mi><mi>t</mi></msub><mo>]</mo><mo>|</mo><mo>,</mo></mrow></math>]]></maths>A为当前块;对(x,y)∈块A的绝对差求和,即<maths num="0004"><![CDATA[<math><mrow><mi>SAD</mi><mo>=</mo><munder><mi>&Sigma;</mi><mrow><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>&Element;</mo><mi>A</mi></mrow></munder><mi>sad</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>;</mo></mrow></math>]]></maths><maths num="0005"><![CDATA[<math><mrow><msub><mrow><mi>sad</mi><mn>2</mn></mrow><mi>k</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mi>sad</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>,</mo></mtd><mtd><mi>x</mi><mo>=</mo><munder><mi>min</mi><mi>i</mi></munder><mrow><mo>(</mo><mi>i</mi><mo>|</mo><mi>f</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>&Element;</mo><msub><mi>block</mi><mi>k</mi></msub></mrow><mo>,</mo><mi>y</mi><mo>=</mo><munder><mi>min</mi><mi>j</mi></munder><mrow><mo>(</mo><mi>j</mi><mo>|</mo><mrow><mo>(</mo><mi>f</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>&Element;</mo><msub><mi>block</mi><mi>k</mi></msub></mrow><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mi>sad</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>-</mo><mi>sad</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>,</mo></mtd><mtd><mi>x</mi><mo>&NotEqual;</mo><munder><mi>min</mi><mi>i</mi></munder><mrow><mo>(</mo><mi>i</mi><mo>|</mo><mi>f</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>&Element;</mo><msub><mi>block</mi><mi>k</mi></msub></mrow><mo>,</mo><mi>y</mi><mo>&NotEqual;</mo><munder><mi>min</mi><mi>j</mi></munder><mrow><mo>(</mo><mi>j</mi><mo>|</mo><mrow><mo>(</mo><mi>f</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>&Element;</mo><msub><mi>block</mi><mi>k</mi></msub></mrow><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mi>sad</mi><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mn>1</mn><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>-</mo><mi>sad</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>,</mo></mtd><mtd><mi>x</mi><mo>&NotEqual;</mo><munder><mi>min</mi><mi>i</mi></munder><mrow><mo>(</mo><mi>i</mi><mo>|</mo><mi>f</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>&Element;</mo><msub><mi>block</mi><mi>k</mi></msub></mrow><mo>,</mo><mi>y</mi><mo>=</mo><munder><mi>min</mi><mi>j</mi></munder><mrow><mo>(</mo><mi>j</mi><mo>|</mo><mrow><mo>(</mo><mi>f</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>&Element;</mo><msub><mi>block</mi><mi>k</mi></msub></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>S1125:块<maths num="0006"><![CDATA[<math><mrow><munder><mi>arg</mi><mi>k</mi></munder><mrow><mo>(</mo><mi>min</mi><mrow><mo>(</mo><munder><mi>sum</mi><mrow><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>&Element;</mo><msub><mi>block</mi><mi>k</mi></msub></mrow></munder><mrow><mo>(</mo><msub><mrow><mi>sad</mi><mn>2</mn></mrow><mi>k</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>)</mo></mrow><mo>)</mo></mrow><mo>)</mo></mrow></mrow></math>]]></maths>即为最佳匹配块;其中,把一个图像划分为k个匹配块来处理,block表示匹配块,block<sub>k</sub>表示第k个匹配块,k的取值为1、2或k;S12:基于块统计特性选择快速帧内编码模式,具体步骤为:S121:首先计算平坦区域的块统计特性sadm<sub>j</sub>,计算块统计特性sadm<sub>j</sub>,j=0,1,2,3,4其中,sadf<sub>0</sub>=f(x+1,y+1)+f(x,y)-f(x,y+1)-f(x+1,y);水平方向:sadf<sub>1</sub>(x,y)=f(x,y+1)-f(x,y);垂直方向:sadf<sub>2</sub>(x,y)=f(x+1,y)-f(x,y);对角线方向1:sadf<sub>3</sub>(x,y)=f(x+1,y)-f(x,y+1);对角线方向2:sadf<sub>4</sub>(x,y)=f(x+1,y+1)-f(x,y);<maths num="0007"><![CDATA[<math><mrow><msub><mi>sadm</mi><mn>0</mn></msub><mo>=</mo><munder><mi>mean</mi><mrow><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>&Element;</mo><mi>block</mi></mrow></munder><mrow><mo>(</mo><mi>abs</mi><mrow><mo>(</mo><msub><mi>sadf</mi><mn>0</mn></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>)</mo></mrow><mo>)</mo></mrow><mo>;</mo></mrow></math>]]></maths><maths num="0008"><![CDATA[<math><mrow><msub><mi>sadm</mi><mn>1</mn></msub><mo>=</mo><munder><mi>mean</mi><mrow><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>&Element;</mo><mi>block</mi></mrow></munder><mrow><mo>(</mo><mi>abs</mi><mrow><mo>(</mo><msub><mi>sadf</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>)</mo></mrow><mo>)</mo></mrow><mo>;</mo></mrow></math>]]></maths><maths num="0009"><![CDATA[<math><mrow><msub><mi>sadm</mi><mn>2</mn></msub><mo>=</mo><munder><mi>mean</mi><mrow><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>&Element;</mo><mi>block</mi></mrow></munder><mrow><mo>(</mo><mi>abs</mi><mrow><mo>(</mo><msub><mi>sadf</mi><mn>2</mn></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>)</mo></mrow><mo>)</mo></mrow><mo>;</mo></mrow></math>]]></maths><maths num="0010"><![CDATA[<math><mrow><msub><mi>sadm</mi><mn>3</mn></msub><mo>=</mo><munder><mi>mean</mi><mrow><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>&Element;</mo><mi>block</mi></mrow></munder><mrow><mo>(</mo><mi>abs</mi><mrow><mo>(</mo><msub><mi>sadf</mi><mn>3</mn></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>)</mo></mrow><mo>)</mo></mrow><mo>;</mo></mrow></math>]]></maths><maths num="0011"><![CDATA[<math><mrow><msub><mi>sadm</mi><mn>4</mn></msub><mo>=</mo><munder><mi>mean</mi><mrow><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>&Element;</mo><mi>block</mi></mrow></munder><mrow><mo>(</mo><mi>abs</mi><mrow><mo>(</mo><msub><mi>sadf</mi><mn>4</mn></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>)</mo></mrow><mo>)</mo></mrow><mo>;</mo></mrow></math>]]></maths>其中block表示匹配块;S122:由块统计特性确定备选编码模式temp_mode对于帧内4×4像素亮度:如果<img file="FDA00001977331900036.GIF" wi="547" he="96" />则temp_mode=0、5、7、dc;否则,继续判断,如果<img file="FDA00001977331900037.GIF" wi="547" he="96" />则temp_mode=1、6、8、dc;否则,继续判断,如果<img file="FDA00001977331900038.GIF" wi="547" he="95" />则temp_mode=4、5、6、dc;否则,继续判断,如果<img file="FDA00001977331900039.GIF" wi="547" he="95" />则temp_mode=3、7、8、dc;否则,temp_mode=0、1、3、4、5、6、7、8、dc;其中“0、1、3、4、5、6、7、8”表示H.264帧内预测方向;S123:由备选编码模式temp_mode,确定最优帧内预测编码模式;S13:基于块统计特性的快速帧内编码模式的选择改进方向;S131:方向一,基于4个基本方向sadm<sub>j</sub>,j=1,2,3,4,计算其他方向的块统计特性,缩小备选模式范围考虑到计算量,在sadm<sub>j</sub>的基础上通过线性插值方法,获取其他方向的sadm<sub>k</sub>,<maths num="0012"><![CDATA[<math><mrow><msub><mi>sadm</mi><mi>k</mi></msub><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mn>4</mn></munderover><msub><mi>weight</mi><mi>j</mi></msub><mo>*</mo><msub><mi>sadm</mi><mi>j</mi></msub><mo>;</mo></mrow></math>]]></maths>其中,weight<sub>j</sub>表示加权系数;S132:方向二:基于子块划分计算块统计特性采用基于子块划分的sadm<sub>j</sub>方式,相较于基于元素的块统计特性方法也可进一步减少计算量。
地址 518057 广东省深圳市南山区高新区南区科技南十二路18号长虹科技大厦19楼