发明名称 基于HVS&ROI的分布式编解码方法及系统
摘要 一种基于HVS&ROI的分布式编码方法及系统,属于分布式编码方法及系统,该系统由编码器和解码器两部分构成。编码器结合HVS的JND模型将输入视频Wyner-Ziv帧划分为C宏块和AC宏块,并对AC宏块提取ROI,对K帧与WZ帧各个宏块进行独立编码;解码器对接收到的码流进行联合解码。本发明由于引入人类视觉系统HVS的JND模型,减少了JND阈值一下区域的数据处理与传输工作,降低传输速率,起到节省能耗与带宽的作用;本发明由于对运动剧烈与亮度对比较大的眩光区域提取ROI感兴趣区,并对其进行熵编码,在尽量不增加编码复杂度的情况下,改善主观质量。
申请公布号 CN103002280A 申请公布日期 2013.03.27
申请号 CN201210377970.4 申请日期 2012.10.08
申请人 中国矿业大学 发明人 丁恩杰;黄河;袁莎莎;仲亚丽;徐卫东;向洁
分类号 H04N7/26(2006.01)I;H04N7/50(2006.01)I 主分类号 H04N7/26(2006.01)I
代理机构 南京经纬专利商标代理有限公司 32200 代理人 唐惠芬
主权项 1.一种基于HVS&amp;ROI的分布式视频编码方法,其特征在于:所述的编码方法的具体步骤是:a.将输入视频帧分为关键帧和Wyner-Ziv帧,对关键帧(K帧)进行帧内编码,所述的关键帧为K帧,H.264帧内编码器对关键帧进行帧内编码;对Wyner-Ziv帧进行HVS&amp;ROI Wyner-Ziv编码;b.所述HVS&amp;ROI Wyner-Ziv编码的方法包括:通过HVS的JND模型将Wyner-Ziv帧划分为C宏块和AC宏块;所述JND模型方法包括:b1.将Wyner-Ziv帧分成8×8分块,每个分块都是B块;;b2.根据下式计算出B块中各像素点的JND阈值:JND(x,y,t)=f(idl(x,y,t))JND<sup>s</sup>(x,y)其中,idl(x,y,t)表示相邻t时刻与t-1时刻的平均帧间亮度误差值,JND<sup>s</sup>(x,y)表示JND在空间域阈值;<maths num="0001"><![CDATA[<math><mrow><mi>idl</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>t</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mrow><mo>(</mo><mi>I</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>t</mi><mo>)</mo></mrow><mo>-</mo><mi>I</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>t</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>+</mo><mover><mi>I</mi><mo>&OverBar;</mo></mover><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>t</mi><mo>)</mo></mrow><mo>-</mo><mover><mi>I</mi><mo>&OverBar;</mo></mover><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>t</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>)</mo></mrow></mrow></math>]]></maths>JND<sup>s</sup>(x,y)=T<sup>l</sup>(x,y)+T<sub>Y</sub><sup>t</sup>(x,y)-C<sub>Y</sub>×Min{T<sup>l</sup>(x,y),T<sub>Y</sub><sup>t</sup>(x,y)}其中,T<sup>l</sup>(x,y)表示背景亮度适应影响函数,T<sub>Y</sub><sup>t</sup>(x,y)表示纹理影响函数反应HVS对于平滑区比纹理密集区的敏感性更强,(x,y)表示图像中像素点相应坐标,C<sub>Y</sub>表示背景亮度与纹理掩蔽两种影响因素之间的相关系数;b3.根据下式计算当前块B块的前向、后向与平均像素SAD:<maths num="0002"><![CDATA[<math><mrow><mi>SAD</mi><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>x</mi><mo>=</mo><mn>1</mn></mrow><mi>M</mi></munderover><munderover><mi>&Sigma;</mi><mrow><mi>y</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><mo>|</mo><mi>w</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>-</mo><mi>r</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>|</mo></mrow></math>]]></maths>其中,w(x,y)和r(x,y)分别表示WZ帧中编码块与参考块在坐标(x,y)处的像素值;b4.由下式得到编码端边信息ESI:ESI=Min<sub>SAD</sub>{FB,BB,AB}其中,FB为前向相邻帧对应块,FB为Forward Block的缩写;BB为后向相邻帧对应块,BB为Backward Block的缩写;AB为前后相邻帧对应平均块,AB为Average Block的缩写;b5.分别计算相邻帧SAD<sub>B</sub>中的最大值<img file="FDA00002226614300013.GIF" wi="157" he="55" />和最小值<img file="FDA00002226614300014.GIF" wi="177" he="55" />记<img file="FDA00002226614300015.GIF" wi="456" he="55" />分别求出t<SAD<sub>B</sub>与t>SAD<sub>B</sub>时的像素点比例ρ<sub>0</sub>、ρ<sub>1</sub>与平均梯度值m<sub>0</sub>、m<sub>1</sub>,则总平均梯度值为:m=ρ<sub>0</sub>m<sub>0</sub>+ρ<sub>1</sub>m<sub>1</sub>;b6.计算前景与背景的方差为:v=ρ<sub>0</sub>ρ<sub>1</sub>(m<sub>0</sub>-m<sub>1</sub>)<sup>2</sup>;b7.在<img file="FDA00002226614300016.GIF" wi="382" he="77" />区间上遍历v找出最大值v<sub>Max</sub>,v<sub>Max</sub>所对应的t为前景与背景方差最大之时,此时t值即为阈值T<sub>ROI</sub>;b8.根据得到的T<sub>ROI</sub>值初步提取出前景图像,通过比较SAD<sub>B</sub>与T<sub>ROI</sub>的值来提取前景图像,对于大于T<sub>ROI</sub>值的部分提取出来作为前景图像,然后将前景图像按步骤b5到b8再执行一遍,得到更加精确的二级T<sub>ROI</sub>;b9.根据ESI的失真函数D(x,y)计算各点的预测失真,由下式得到各点的预测失真值:D(x,y)=|ESI(x,y)-I(x,y)|其中,ESI(x,y)和I(x,y)分别表示WZ帧中坐标(x,y)处的ESI值和像素值。b10.根据下式对块B进行JND判别,划分AC块与C块,对于失真值小于等于JND阈值的宏块划分成C块,而对于失真值大于JND阈值的宏块划分为AC块,并得到该WZ帧图像块划分的二值掩码Block<sub>mask</sub>:<maths num="0003"><![CDATA[<math><mrow><msub><mi>Block</mi><mi>mask</mi></msub><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mrow><mo>(</mo><mi>&Sigma;</mi><msub><mi>JND</mi><mi>mask</mi></msub><mo>)</mo></mrow><mo>&GreaterEqual;</mo><mi>&epsiv;</mi><mo>&CenterDot;</mo><mi>Num</mi></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mrow><mo>(</mo><mi>&Sigma;</mi><msub><mi>JND</mi><mi>mask</mi></msub><mo>)</mo></mrow><mo>&lt;</mo><mi>&epsiv;</mi><mo>&CenterDot;</mo><mi>Num</mi></mtd></mtr></mtable></mfenced></mrow></math>]]></maths><maths num="0004"><![CDATA[<math><mrow><msub><mi>JND</mi><mi>mask</mi></msub><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mrow><mo>(</mo><mi>JND</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>&GreaterEqual;</mo><mi>D</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mrow><mo>(</mo><mi>JND</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>&lt;</mo><mi>D</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>)</mo></mrow></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>其中,Num为每一宏块中像素点的总数量,ε取0.1。b11.对AC块做DCT和2<sup>M</sup>级统一量化,提取系数带并进行Zigzag扫描,根据选定的量化矩阵对变换系数进行均匀量化;并根据下式计算K帧和WZ帧相同位置AC块梯度的SAD<sub>B</sub>;<maths num="0005"><![CDATA[<math><mrow><msub><mi>SAD</mi><mi>B</mi></msub><mo>=</mo><munder><mi>&Sigma;</mi><mrow><mrow><mo>(</mo><mi>j</mi><mo>,</mo><mi>k</mi><mo>)</mo></mrow><mo>&Element;</mo><mi>B</mi></mrow></munder><mo>|</mo><msub><mi>G</mi><mi>K</mi></msub><mo>[</mo><mi>F</mi><mrow><mo>(</mo><mi>j</mi><mo>,</mo><mi>k</mi><mo>)</mo></mrow><mo>]</mo><mo>-</mo><msub><mi>G</mi><mi>W</mi></msub><mo>[</mo><mi>F</mi><mrow><mo>(</mo><mi>j</mi><mo>,</mo><mi>k</mi><mo>)</mo></mrow><mo>]</mo><mo>|</mo></mrow></math>]]></maths>其中K表示关键帧、W是Wyner-Ziv帧、B是单个的宏块、F(j,k)为z坐标(j,k)处的像素值。b12.采用下式ROI宏块判定准则,得到感兴趣区二值掩码ROI<sub>mask</sub>:<maths num="0006"><![CDATA[<math><mrow><msub><mi>ROI</mi><mi>mask</mi></msub><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mrow><mo>(</mo><msub><mi>SAD</mi><mi>B</mi></msub><mo>&GreaterEqual;</mo><msub><mi>T</mi><mi>ROI</mi></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mrow><mo>(</mo><msub><mi>SAD</mi><mi>B</mi></msub><mo>&lt;</mo><msub><mi>T</mi><mi>ROI</mi></msub><mo>)</mo></mrow></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>其中,ROI<sub>mask</sub>为感兴趣区的二值掩码,当宏块梯度SAD<sub>B</sub>小于梯度T则置为0,否则为1;对二值掩码ROI<sub>mask</sub>进行简单的形态学处理,先腐蚀然后再扩张,使物体轮廓平滑,再由下式提取ROI:<maths num="0007"><![CDATA[<math><mrow><mi>ROI</mi><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><msub><mi>W</mi><mi>B</mi></msub></mtd><mtd><mrow><mo>(</mo><msub><mi>W</mi><mi>B</mi></msub><mo>&SubsetEqual;</mo><msub><mi>ROI</mi><mi>mask</mi></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mrow><mo>(</mo><msub><mi>W</mi><mi>B</mi></msub><mo>&NotSubset;</mo><msub><mi>ROI</mi><mi>mask</mi></msub><mo>)</mo></mrow></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>其中,W<sub>B</sub>表示当前WZ帧中所对应的AC宏块,如果W<sub>B</sub>对应ROI<sub>mask</sub>为1则为ROI块,反之置0为非ROI块,最终得到当前帧的ROI感兴趣区;b13.对Block<sub>mask</sub>、ROI<sub>mask</sub>以及量化后的ROI块进行哈弗曼编码压缩;对AC宏块的非ROI块提取位平面进行LDPC编码,若当前编码的图像组是最后一个图像组,则退出HVS&amp;ROI分布式视频编码;c.对AC宏块提取ROI,对ROI宏块与各个宏块的标记信息进行熵编码,对非ROI宏块进行基于LDPC(这里的LDPC可以引用上面的定义)的Wyner-Ziv编码;d.所述的解码方法的具体步骤是:d1.对H.264的帧内解码获得关键帧;d2.对ROI宏块与各个宏块的标记信息进行哈弗曼熵解码,获得Block<sub>mask</sub>、ROI<sub>mask</sub>以及ROI块的量化系数;d3.设置信道估计参数,采用交叉熵最小法则估计信道参数,根据已解码出来的WZ帧的前后相邻关键帧进行运动补偿内插得到初始边信息SI;d4.利用边信息通过LDPC编码结合各个宏块的标记信息得到非ROI块的比特流系数;d5.将根据Block<sub>mask</sub>得到的C块,熵解码的ROI块和块译码的非ROI块进行重构;
地址 221116 江苏省徐州市大学路1号中国矿业大学科技处