发明名称 一种能够准确检测出视频序列中复杂抖动的稳像方法
摘要 本发明公开了一种能够准确检测出视频序列中复杂抖动的稳像方法,该方法首先对图像进行金字塔分解,通过对原始层第0层,平滑后隔行隔列采样得到分辨率较低的高层,然后从顶层开始,计算两帧图像上对应层间的仿射运动参数,随后将计算得到的仿射运动参数传递至较高分辨率层,进行参数迭代,迭代计算至金字塔底层即可求出准确的仿射运动参数。根据所求得的准确的仿射运动参数对抖动视频进行补偿可以得到良好的稳像效果。实验表明:结合金字塔多分辨率分层技术的光流算法解决了视频序列间运动不连续性的情况下采用传统梯度光流法进行运动估计会产生较大误差的问题,且对包含旋转、缩放、平移等复杂运动的视频序列均能取得良好的稳像效果。
申请公布号 CN105100618A 申请公布日期 2015.11.25
申请号 CN201510456729.4 申请日期 2015.07.30
申请人 中国科学院光电技术研究所 发明人 赖丽君;徐智英;张栩铫
分类号 H04N5/232(2006.01)I;H04N5/14(2006.01)I;G06T7/20(2006.01)I 主分类号 H04N5/232(2006.01)I
代理机构 代理人
主权项 一种能够准确检测出视频序列中复杂抖动的稳像方法,其特征在于,该方法步骤如下:步骤1:选择6参数的仿射模型,即:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mfenced open = '(' close = ')'><mtable><mtr><mtd><msubsup><mi>X</mi><mi>i</mi><mo>&prime;</mo></msubsup></mtd></mtr><mtr><mtd><msubsup><mi>Y</mi><mi>i</mi><mo>&prime;</mo></msubsup></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open = '(' close = ')'><mtable><mtr><mtd><msub><mi>a</mi><mn>1</mn></msub></mtd><mtd><msub><mi>a</mi><mn>2</mn></msub></mtd></mtr><mtr><mtd><msub><mi>a</mi><mn>3</mn></msub></mtd><mtd><msub><mi>a</mi><mn>4</mn></msub></mtd></mtr></mtable></mfenced><mfenced open = '(' close = ')'><mtable><mtr><mtd><msub><mi>X</mi><mi>i</mi></msub></mtd></mtr><mtr><mtd><msub><mi>Y</mi><mi>i</mi></msub></mtd></mtr></mtable></mfenced><mo>+</mo><mfenced open = '(' close = ')'><mtable><mtr><mtd><msub><mi>a</mi><mn>5</mn></msub></mtd></mtr><mtr><mtd><msub><mi>a</mi><mn>6</mn></msub></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000770723860000011.GIF" wi="604" he="166" /></maths>      公式(1)设<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>A</mi><mo>=</mo><mfenced open = '(' close = ')'><mtable><mtr><mtd><msub><mi>a</mi><mn>1</mn></msub></mtd><mtd><msub><mi>a</mi><mn>2</mn></msub></mtd></mtr><mtr><mtd><msub><mi>a</mi><mn>3</mn></msub></mtd><mtd><msub><mi>a</mi><mn>4</mn></msub></mtd></mtr></mtable></mfenced><mo>,</mo><mi>T</mi><mo>=</mo><mfenced open = '(' close = ')'><mtable><mtr><mtd><msub><mi>a</mi><mn>5</mn></msub></mtd></mtr><mtr><mtd><msub><mi>a</mi><mn>6</mn></msub></mtd></mtr></mtable></mfenced><mo>,</mo></mrow>]]></math><img file="FDA0000770723860000012.GIF" wi="556" he="158" /></maths>其中(X'<sub>i</sub>,Y′<sub>i</sub>),(X<sub>i</sub>,Y<sub>i</sub>)分表当前帧和参考帧的坐标,参考帧即序列中的前一帧,A包含了两帧之间的旋转、缩放以及畸变信息,T包含了平移信息;步骤2:基于图像灰度一致性假设,导出光流场计算基本公式,即:<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><mfrac><mrow><mo>&part;</mo><mi>f</mi><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mi>d</mi><mi>x</mi><mo>,</mo><mi>y</mi><mo>+</mo><mi>d</mi><mi>y</mi><mo>,</mo><mi>t</mi><mo>+</mo><mi>d</mi><mi>t</mi><mo>)</mo></mrow></mrow><mrow><mi>d</mi><mi>t</mi></mrow></mfrac><mo>=</mo><mn>0</mn></mrow>]]></math><img file="FDA0000770723860000013.GIF" wi="549" he="135" /></maths>       公式(2)对公式(2)进行泰勒展开,并忽略掉2阶以上的高阶项有:<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><mfrac><mrow><mo>&part;</mo><mi>f</mi></mrow><mrow><mo>&part;</mo><mi>x</mi></mrow></mfrac><mfrac><mrow><mi>d</mi><mi>x</mi></mrow><mrow><mi>d</mi><mi>t</mi></mrow></mfrac><mo>+</mo><mfrac><mrow><mo>&part;</mo><mi>f</mi></mrow><mrow><mo>&part;</mo><mi>y</mi></mrow></mfrac><mfrac><mrow><mi>d</mi><mi>y</mi></mrow><mrow><mi>d</mi><mi>t</mi></mrow></mfrac><mo>+</mo><mfrac><mrow><mo>&part;</mo><mi>f</mi></mrow><mrow><mo>&part;</mo><mi>t</mi></mrow></mfrac><mo>=</mo><mn>0</mn></mrow>]]></math><img file="FDA0000770723860000014.GIF" wi="485" he="139" /></maths>        公式(3)其中f(x+dx,y+dy,t+dt)为像素点(x,y)运动到(x+dx,y+dy)时的灰度,其中<img file="FDA0000770723860000015.GIF" wi="169" he="143" />分别为图像在水平和垂直方向的梯度,<img file="FDA0000770723860000016.GIF" wi="195" he="134" />为水平和垂直方向的光流;步骤3:构建相邻两帧图像f(x,y,t)和f(x,y,t‑1)间的最小误差函数来求得仿射变换参数,最小误差函数用E来表示即为:<maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><mi>E</mi><mrow><mo>(</mo><mi>a</mi><mo>)</mo></mrow><mo>=</mo><munder><mo>&Sigma;</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>&Element;</mo><mi>&Omega;</mi></mrow></munder><msup><mrow><mo>&lsqb;</mo><mi>f</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>,</mo><mi>t</mi><mo>)</mo></mrow><mo>-</mo><mi>f</mi><mrow><mo>(</mo><msub><mi>a</mi><mn>1</mn></msub><mi>x</mi><mo>+</mo><msub><mi>a</mi><mn>2</mn></msub><mi>y</mi><mo>+</mo><msub><mi>a</mi><mn>5</mn></msub><mo>,</mo><msub><mi>a</mi><mn>3</mn></msub><mi>x</mi><mo>+</mo><msub><mi>a</mi><mn>4</mn></msub><mi>y</mi><mo>+</mo><msub><mi>a</mi><mn>6</mn></msub><mo>,</mo><mi>t</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>&rsqb;</mo></mrow><mn>2</mn></msup></mrow>]]></math><img file="FDA0000770723860000017.GIF" wi="1226" he="131" /></maths>   公式(4)泰勒展开公式(4),并化简有:<maths num="0006" id="cmaths0006"><math><![CDATA[<mfenced open = '' close = ''><mtable><mtr><mtd><mrow><mi>E</mi><mrow><mo>(</mo><mi>a</mi><mo>)</mo></mrow><mo>&ap;</mo><munder><mo>&Sigma;</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>&Element;</mo><mi>&Omega;</mi></mrow></munder><msup><mrow><mo>&lsqb;</mo><msub><mi>f</mi><mi>t</mi></msub><mo>-</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>1</mn></msub><mi>x</mi><mo>+</mo><msub><mi>a</mi><mn>2</mn></msub><mi>y</mi><mo>+</mo><msub><mi>a</mi><mn>5</mn></msub><mo>-</mo><mi>x</mi><mo>)</mo></mrow><msub><mi>f</mi><mi>x</mi></msub><mo>-</mo><mrow><mo>(</mo><msub><mi>a</mi><mn>3</mn></msub><mi>x</mi><mo>+</mo><msub><mi>a</mi><mn>4</mn></msub><mi>y</mi><mo>+</mo><msub><mi>a</mi><mn>6</mn></msub><mo>-</mo><mi>y</mi><mo>)</mo></mrow><msub><mi>f</mi><mi>y</mi></msub><mo>&rsqb;</mo></mrow><mn>2</mn></msup></mrow></mtd></mtr><mtr><mtd><mrow><mo>=</mo><munder><mo>&Sigma;</mo><mrow><mi>x</mi><mo>,</mo><mi>y</mi><mo>&Element;</mo><mi>&Omega;</mi></mrow></munder><msup><mrow><mo>&lsqb;</mo><mi>s</mi><mo>-</mo><msup><mi>m</mi><mi>T</mi></msup><mi>a</mi><mo>&rsqb;</mo></mrow><mn>2</mn></msup></mrow></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0000770723860000018.GIF" wi="1278" he="245" /></maths>    公式(5)公式(5)中Ω为在图像中划定的计算区域,当误差E(a)趋向于0时,仿射参数最为理想,其中a<sup>T</sup>=(a<sub>1</sub>,a<sub>2</sub>,a<sub>3</sub>,a<sub>4</sub>,a<sub>5</sub>,a<sub>6</sub>),s=f<sub>t</sub>+xf<sub>x</sub>+yf<sub>y</sub>,m<sup>T</sup>=(xf<sub>x</sub>,yf<sub>x</sub>,xf<sub>y</sub>,yf<sub>y</sub>,f<sub>x</sub>,f<sub>y</sub>),f<sub>x</sub>,f<sub>y</sub>,f<sub>t</sub>分别表示图像强度f(x,y,t)对x,y,t的偏导,对公式(5)进行差分处理可以得到:<maths num="0007" id="cmaths0007"><math><![CDATA[<mrow><mfrac><mrow><mi>d</mi><mi>E</mi><mrow><mo>(</mo><mi>a</mi><mo>)</mo></mrow></mrow><mrow><mi>d</mi><mi>a</mi></mrow></mfrac><mo>=</mo><munder><mo>&Sigma;</mo><mi>&Omega;</mi></munder><mn>2</mn><mo>&lsqb;</mo><mi>s</mi><mo>-</mo><msup><mi>m</mi><mi>T</mi></msup><mi>a</mi><mo>&rsqb;</mo><mrow><mo>(</mo><mo>-</mo><msup><mi>m</mi><mi>T</mi></msup><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000770723860000021.GIF" wi="624" he="140" /></maths>      公式(6)令公式(6)式<img file="FDA0000770723860000022.GIF" wi="226" he="134" />即可求得误差函数的极小值,可得<maths num="0008" id="cmaths0008"><math><![CDATA[<mrow><mi>a</mi><mo>=</mo><msup><mrow><mo>&lsqb;</mo><munder><mo>&Sigma;</mo><mi>&Omega;</mi></munder><msup><mi>m</mi><mi>T</mi></msup><mo>&rsqb;</mo></mrow><mrow><mo>-</mo><mn>1</mn></mrow></msup><mo>&lsqb;</mo><munder><mo>&Sigma;</mo><mi>&Omega;</mi></munder><mrow><msup><mi>sm</mi><mi>T</mi></msup></mrow><mo>&rsqb;</mo><msup><mrow><mo>&lsqb;</mo><munder><mo>&Sigma;</mo><mi>&Omega;</mi></munder><msup><mi>m</mi><mi>T</mi></msup><mo>&rsqb;</mo></mrow><mrow><mo>-</mo><mn>1</mn></mrow></msup><mo>;</mo></mrow>]]></math><img file="FDA0000770723860000023.GIF" wi="740" he="158" /></maths>步骤4:对相邻两帧图像构建L层金字塔,设第0层为原始图像,依次向下采样获得高一层低分辨率层;步骤5:利用前向差分和后向差分取平均,求得图像亮度f(x,y,t)对x,y,t的偏导f<sub>x</sub>,f<sub>y</sub>,f<sub>t</sub>,将得到的偏导:带入步骤3中的公式(6),求得相邻帧对应层间的仿射变换参数A<sub>k</sub>,T<sub>k</sub>,并更换T<sub>k</sub>=2<sup>k</sup>*T<sub>k</sub>,k为相应的层,初始值为最高层;步骤6:对参数进行迭代计算A<sub>cum</sub>=A<sub>k</sub>*A<sub>cum</sub>,T<sub>cum</sub>=A<sub>k</sub>T<sub>cum</sub>+T<sub>k</sub>,当第一次计算时取迭代设初值为<maths num="0009" id="cmaths0009"><math><![CDATA[<mrow><msub><mi>A</mi><mrow><mi>c</mi><mi>u</mi><mi>m</mi></mrow></msub><mo>=</mo><mfenced open = '[' close = ']'><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mo>,</mo><msub><mi>T</mi><mrow><mi>c</mi><mi>u</mi><mi>m</mi></mrow></msub><mo>=</mo><mfenced open = '[' close = ']'><mtable><mtr><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd></mtr></mtable></mfenced><mo>,</mo></mrow>]]></math><img file="FDA0000770723860000024.GIF" wi="577" he="158" /></maths>令L=L‑1,如果L≥0,用A<sub>cum</sub>,T<sub>cum</sub>对原始的当前帧进行插值处理,得到高一级分辨率层的初始解,并转置步骤4,同时L=L‑1进行下一层更高分辨率层的估计,若L&lt;0,则输出最终参数A<sub>cum</sub>和T<sub>cum</sub>;步骤7:采用固定帧补偿方式对抖动的视频进行补偿,以消除或者减轻抖动。
地址 610209 四川省成都市双流350信箱