发明名称 一种基于运动分类的自适应去隔行方法
摘要 本发明公布了一种基于运动分类的自适应去隔行方法。现有隔行扫描有存在闪烁、画面抖动和垂直边沿锯齿化等缺点。本发明方法通过在对待插值像素点的运动状态进行精确检测与细粒度划分的基础上,自适应地选择相应算法进行分类处理,而且其中的维纳中值滤波以及三重中值滤波分别从场间和场内去隔行两方面对传统去隔行算法进行了补充。本发明方法更具有针对性,且使相邻运动状态下的去隔行策略平滑过渡,从而取得很好的去隔行效果。
申请公布号 CN102364933A 申请公布日期 2012.02.29
申请号 CN201110328507.6 申请日期 2011.10.25
申请人 浙江大学 发明人 丁勇;史杨宇;刘晓东;王涵;李博睿
分类号 H04N7/01(2006.01)I;H04N5/14(2006.01)I 主分类号 H04N7/01(2006.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 杜军
主权项 1.一种基于运动分类的自适应去隔行方法,其特征在于该方法包括如下步骤:步骤(1).在输入视频图像其中一场中的其中一个待处理点C,判断该待处理点C的横坐标除以2的余数是否等于该待处理点C所在场的序号除以2的余数,若两者余数相等,则保持该待处理点C的灰度值不变并执行步骤(10),若两者余数不等于,则执行步骤(2);步骤(2).检测该待处理点C所在场的前2场和后2场的数据作为参考,计算极性相同场相关性,分别得出该待处理点C所在场与该待处理点C所在场序号减去2的场相关性P和该待处理点C所在场与该待处理点C所在场序号加上2的场的相关性Q,以及该待处理点C所在场的前1场以及后1场的相关性R,计算得到运动系数M,计算得到运动系数M具体方法为:分别计算与待处理点C所在场极性相同的场即第n-2场与第n场的相关性P以及第n场与第n+2场的相关性Q,其中待处理点C所在场为第n场;<maths num="0001"><![CDATA[<math><mrow><mi>P</mi><mo>=</mo><mo>|</mo><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mo>-</mo><mn>1</mn></mrow><mn>1</mn></munderover><msub><mi>T</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>+</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mo>-</mo><mn>1</mn></mrow><mn>1</mn></munderover><msub><mi>B</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow><mn>2</mn></mfrac><mo>-</mo><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mo>-</mo><mn>1</mn></mrow><mn>1</mn></munderover><msub><mi>T</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>n</mi><mo>-</mo><mn>2</mn><mo>)</mo></mrow><mo>+</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mo>-</mo><mn>1</mn></mrow><mn>1</mn></munderover><msub><mi>B</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>n</mi><mo>-</mo><mn>2</mn><mo>)</mo></mrow></mrow><mn>2</mn></mfrac><mo>|</mo></mrow></math>]]></maths><maths num="0002"><![CDATA[<math><mrow><mi>Q</mi><mo>=</mo><mo>|</mo><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mo>-</mo><mn>1</mn></mrow><mn>1</mn></munderover><msub><mi>T</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>+</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mo>-</mo><mn>1</mn></mrow><mn>1</mn></munderover><msub><mi>B</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow><mn>2</mn></mfrac><mo>-</mo><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mo>-</mo><mn>1</mn></mrow><mn>1</mn></munderover><msub><mi>T</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>n</mi><mo>+</mo><mn>2</mn><mo>)</mo></mrow><mo>+</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mo>-</mo><mn>1</mn></mrow><mn>1</mn></munderover><msub><mi>B</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>n</mi><mo>+</mo><mn>2</mn><mo>)</mo></mrow></mrow><mn>2</mn></mfrac><mo>|</mo></mrow></math>]]></maths>其中,T<sub>i</sub>(n)为与第n场待处理点C的上1行1×3像素块,由T<sub>-1</sub>(n),T<sub>0</sub>(n),T<sub>1</sub>(n)三点组成;B<sub>i</sub>(n)为与第n场待处理点C的下1行1×3像素块,由B<sub>-1</sub>(n),B<sub>0</sub>(n),B<sub>1</sub>(n)三点组成;同时计算与待插入点所在场极性相反的第n-1场和第n+1场相关性R<maths num="0003"><![CDATA[<math><mrow><mi>R</mi><mo>=</mo><mo>|</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mo>-</mo><mn>1</mn></mrow><mn>1</mn></munderover><msub><mi>X</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>n</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>-</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mo>-</mo><mn>1</mn></mrow><mn>1</mn></munderover><msub><mi>X</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>n</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>|</mo></mrow></math>]]></maths>X<sub>-1</sub>(n),X<sub>0</sub>(n)X<sub>1</sub>(n)是第n场待处理点C的同一行组成1×3像素块;运动系数M由此可得<img file="FDA0000101920560000022.GIF" wi="771" he="135" />步骤(3).将步骤(2)所得的运动系数M和预设的运动阈值1比较,若所得运动系数M小于预设的运动阈值1,则将低速运动的置信度设为1并执行步骤(4);否则,将低速运动的置信度设为0并执行步骤(6);步骤(4).采用像素块匹配搜索的方法,将包含待处理点C与其同行的左右两点组成1×3的搜索块,将待处理点C所在场的前一场该位置的搜索块与待处理点C所在场的后一场的上2行左中右3个搜索块、所在行左右2个搜索块及下2行的左中右3个搜索块分别进行绝对值差和SAD计算,将计算结果与运动阈值0进行比较:若计算结果大于运动阈值0,则将小幅运动的置信度设置为1,并用后一场最匹配搜索块矢量减去前一场搜索块矢量设为待处理点C的运动矢量,并执行步骤(5);否则,将小幅运动的置信度设置为0,并执行步骤(8),其中后一场最匹配搜索块为计算结果所对应的搜索块;步骤(5).采用维纳中值滤波法对小幅运动的待处理点C进行插值,并执行步骤(10);待处理点C进行插值的具体步骤为:a.第n场待处理点C所在运动方向上取A,B和A’3个点,其中所取的3个点分别为待处理点C运动方向上的前2点和后1点;b.对A点、B点和待处理点C进行维纳滤波计算:F<sub>wiener</sub>=wiener(A,B,C)其中<maths num="0004"><![CDATA[<math><mrow><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>r</mi><mi>x</mi></msub><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></mtd><mtd><msubsup><mi>r</mi><mi>x</mi><mo>*</mo></msubsup><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mtd><mtd><msubsup><mi>r</mi><mi>x</mi><mo>*</mo></msubsup><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msub><mi>r</mi><mi>x</mi></msub><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mtd><mtd><msub><mi>r</mi><mi>x</mi></msub><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></mtd><mtd><msubsup><mi>r</mi><mi>x</mi><mo>*</mo></msubsup><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msub><mi>r</mi><mi>x</mi></msub><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mtd><mtd><msub><mi>r</mi><mi>x</mi></msub><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mtd><mtd><msub><mi>r</mi><mi>x</mi></msub><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></mtd></mtr></mtable></mfenced><mfenced open='[' close=']'><mtable><mtr><mtd><mi>w</mi><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mi>w</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mi>w</mi><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>r</mi><mi>x</mi></msub><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msub><mi>r</mi><mi>x</mi></msub><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msub><mi>r</mi><mi>x</mi></msub><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>F<sub>wiener</sub>=w(0)*C+w(1)*B+w(2)*A其中,F<sub>wiener</sub>为进行维纳滤波计算所得结果,r<sub>x</sub>,r<sub>x</sub><sup>*</sup>分别为序列[A,B,C,A’]的自相关系数和共轭自相关系数,w(0),w(1),w(2)分别为A点、B点和待处理点C的加权系数;c.在待处理点C运动方向垂直的方向取相邻两点D和E,计算相应的插值结果:S<sub>low</sub>(i,j)=median(F<sub>wiener</sub>,E,D)其中S<sub>low</sub>(i,j)为F<sub>wiener</sub>、E和D的中位数;步骤(6).将步骤(2)所得的运动系数M和预设的运动阈值2比较:若所得的运动系数M大于预设的运动阈值2,则将大幅运动的置信度设为1并执行步骤(7),否则将大幅运动的置信度设为0并执行步骤(9);步骤(7).对所属的待处理点C使用三重中值滤波进行插值,然后执行步骤(10);待处理点C进行三重中值滤波插值的具体步骤为:d设待处理点C坐标(j,i),用3×3的像素块对第j-1行的三个点进行中值滤波:F<sub>1</sub>=median(S(i-1,j-1),S(i,j-1),S(i+1,j-1))F<sub>1</sub>为S(i-1,j-1)、S(i,j-1)和S(i+1,j-1)的中位数;对第j+1行的三个点进行中值滤波:F<sub>2</sub>=median(S(i-1,j+1),S(i,j+1),S(i+1,j+1))F<sub>2</sub>为S(i-1,j+1)、S(i,j+1)和S(i+1,j+1)的中位数;e对S(i-1,j),F<sub>1</sub>,F<sub>2</sub>进行中值滤波,得到非边缘待处理点C在大幅运动下的插值结果S<sub>high</sub>(i,j):S<sub>high</sub>(i,j)=median(S(i-1,j),F<sub>1</sub>,F<sub>2</sub>);步骤(8).对所属的待处理点C使用场合并方法进行插值,然后并执行步骤(10);步骤(9).对于所属待处理点C分别使用步骤(7)和步骤(8)得到场内和场间插值结果,再计算时空权重α,以时空权重α融合两种插值结果;时空权值α为:<maths num="0005"><![CDATA[<math><mrow><mi>&alpha;</mi><mo>=</mo><mo>[</mo><mi>cos</mi><mrow><mo>(</mo><mi>&pi;</mi><mo>&CenterDot;</mo><mfrac><mrow><mi>M</mi><mo>-</mo><msub><mi>T</mi><mn>1</mn></msub></mrow><mrow><msub><mi>T</mi><mn>2</mn></msub><mo>-</mo><msub><mi>T</mi><mn>1</mn></msub></mrow></mfrac><mo>)</mo></mrow><mo>+</mo><mn>1</mn><mo>]</mo><mo>/</mo><mn>2</mn></mrow></math>]]></maths>其中T<sub>1</sub>为运动阈值1,T<sub>2</sub>为运动阈值2,Y<sub>intp</sub>=α·Y<sub>inter</sub>+(1-α)·Y<sub>intra</sub>其中,Y<sub>inter</sub>是利用场间算法的插值结果,Y<sub>intra</sub>是利用场内算法的插值结果,Y<sub>intp</sub>为最终计算得到的插值结果;步骤(10).遍历步骤(1)所述输入视频图像,判断是否还存在待处理点:若存在,则返回步骤(1)对下一个待处理点进行处理;若不存在,则结束。
地址 310027 浙江省杭州市西湖区浙大路38号