主权项 |
1.一种基于HVS&ROI的分布式视频编码方法,其特征在于:所述的编码方法的具体步骤是:a.将输入视频帧分为关键帧和Wyner-Ziv帧,对关键帧(K帧)进行帧内编码,所述的关键帧为K帧,H.264帧内编码器对关键帧进行帧内编码;对Wyner-Ziv帧进行HVS&ROI Wyner-Ziv编码;b.所述HVS&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>‾</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>‾</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>Σ</mi><mrow><mi>x</mi><mo>=</mo><mn>1</mn></mrow><mi>M</mi></munderover><munderover><mi>Σ</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>Σ</mi><msub><mi>JND</mi><mi>mask</mi></msub><mo>)</mo></mrow><mo>≥</mo><mi>ϵ</mi><mo>·</mo><mi>Num</mi></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mrow><mo>(</mo><mi>Σ</mi><msub><mi>JND</mi><mi>mask</mi></msub><mo>)</mo></mrow><mo><</mo><mi>ϵ</mi><mo>·</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>≥</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><</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>Σ</mi><mrow><mrow><mo>(</mo><mi>j</mi><mo>,</mo><mi>k</mi><mo>)</mo></mrow><mo>∈</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>≥</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><</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>⊆</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>⊂⃒</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&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块进行重构; |