发明名称 一种自适应的时空域视频图像降噪方法
摘要 一种自适应的时空域视频图像降噪方法,包括以下个步骤:第一步:对于当前帧的图像,要进行空域滤波,以去除噪声;第二步:再把空域滤波后的像素与前一帧的对应像素加权平均,进行时域滤波;第三步:更新滤波参数;在一个起始时刻,对滤波参数进行初始化,利用该滤波参数,对第一个宏块进行滤波;每个宏块包含亮度分量,蓝色色度分量,红色色度分量三个分量,要分别对每个分量进行滤波;滤波分为两步,空域滤波和时域滤波;当前宏块滤波结束后,需要对滤波参数进行更新,以进行下一个宏块的滤波,更新过程分为三步,第一步是利用固定系数计算单个像素的差值,第二步是利用单个像素方差计算宏块方差,第三步则是利用方差计算下一宏块的滤波参数。
申请公布号 CN101964863B 申请公布日期 2012.10.24
申请号 CN201010165435.3 申请日期 2010.05.07
申请人 镇江唐桥微电子有限公司 发明人 马涛;孙翼;高伟
分类号 H04N5/213(2006.01)I 主分类号 H04N5/213(2006.01)I
代理机构 南京知识律师事务所 32207 代理人 汪旭东
主权项 一种自适应的时空域视频图像降噪方法,其特征在于:包括以下个步骤:第一步:对于当前帧的图像,要进行空域滤波,以去除噪声;第二步:再把空域滤波后的像素与前一帧的对应像素加权平均,进行时域滤波;第三步:更新滤波参数;在一个起始时刻,对滤波参数进行初始化,利用该滤波参数,对第一个宏块进行滤波;每个宏块包含亮度分量,蓝色色度分量,红色色度分量三个分量,要分别对每个分量进行滤波;滤波分为两步,空域滤波和时域滤波;所有邻域像素都使用未滤波前的像素值;空域滤波的公式为 <mrow> <mi>p</mi> <mo>'</mo> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <munderover> <mi>&Sigma;</mi> <mrow> <mi>dy</mi> <mo>=</mo> <mn>1</mn> </mrow> <mn>1</mn> </munderover> <munderover> <mi>&Sigma;</mi> <mrow> <mi>dx</mi> <mo>=</mo> <mn>1</mn> </mrow> <mn>1</mn> </munderover> <mi>D</mi> <mrow> <mo>(</mo> <mi>p</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>+</mo> <mi>dx</mi> <mo>,</mo> <mi>y</mi> <mo>+</mo> <mi>dy</mi> <mo>)</mo> </mrow> <mo>,</mo> <mi>p</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>,</mo> <mi>factor</mi> <mo>_</mo> <mi>s</mi> <mo>)</mo> </mrow> </mrow> <mn>8</mn> </mfrac> <mo>+</mo> <mi>p</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> </mrow>令d=abs(p(x+dx,y+dy)p(x,y)),则 <mrow> <mi>D</mi> <mrow> <mo>(</mo> <mi>p</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>+</mo> <mi>dx</mi> <mo>,</mo> <mi>y</mi> <mo>+</mo> <mi>dy</mi> <mo>)</mo> </mrow> <mo>,</mo> <mi>p</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>,</mo> <mi>factor</mi> <mo>_</mo> <mi>s</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open='' close=''> <mtable> <mtr> <mtd> <mi>d</mi> </mtd> <mtd> <mi>d</mi> <mo>&le;</mo> <mi>factor</mi> <mo>_</mo> <mi>s</mi> </mtd> </mtr> <mtr> <mtd> <mi>d</mi> <mo>></mo> <mo>></mo> <mn>1</mn> </mtd> <mtd> <mi>factor</mi> <mo>_</mo> <mi>s</mi> <mo>&lt;</mo> <mi>d</mi> <mo>&le;</mo> <mn>2</mn> <mo>*</mo> <mi>factor</mi> <mo>_</mo> <mi>s</mi> </mtd> </mtr> <mtr> <mtd> <mi>d</mi> <mo>></mo> <mo>></mo> <mn>4</mn> </mtd> <mtd> <mi>d</mi> <mo>></mo> <mn>2</mn> <mo>*</mo> <mi>factor</mi> <mo>_</mo> <mi>s</mi> </mtd> </mtr> </mtable> </mfenced> </mrow>式中p(x,y)表示图像中坐标为(x,y)的像素的原始值,p′(x,y)表示图像中坐标为(x,y)的像素滤波后的值,factor_s表示空域滤波参数,abs表示取绝对值运算;时域滤波分两步,第一步是运动估计,该步骤的目的在于为当前宏块像素寻找最佳的时域匹配点,匹配准则为SAD,其计算公式为 <mrow> <mi>SAD</mi> <mrow> <mo>(</mo> <mi>mv</mi> <mo>)</mo> </mrow> <mo>=</mo> <munder> <mi>&Sigma;</mi> <mi>i</mi> </munder> <mi>abs</mi> <mrow> <mo>(</mo> <mi>p</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mi>p</mi> <mo>'</mo> <mrow> <mo>(</mo> <mi>i</mi> <mo>+</mo> <mi>mv</mi> <mo>)</mo> </mrow> <mo>)</mo> </mrow> </mrow>式中p(i)表示当前帧中位置i处的像素值,p′(i+mv)表示参考帧中位置i+mv处的像素值;对于某个范围内的mv,对每一个都计算一个SAD值,最小的SAD值所对应的mv为最佳运动位移,其对应的参考块为当前块的最佳匹配块;如果该方法应用于视频编码器中,运动估计已在编码器中实现,不需额外实现;时域滤波的第二步是将当前像素与匹配像素进行加权平均,从而得到最终的滤波像素,其计算公式如下 <mrow> <msup> <mi>p</mi> <mrow> <mo>&prime;</mo> <mo>&prime;</mo> </mrow> </msup> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>,</mo> <mi>t</mi> <mo>)</mo> </mrow> <mo>=</mo> <mi>p</mi> <mo>'</mo> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>,</mo> <mi>t</mi> <mo>)</mo> </mrow> <mo>+</mo> <mfrac> <mrow> <mi>D</mi> <mrow> <mo>(</mo> <mi>p</mi> <mo>'</mo> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>,</mo> <mi>t</mi> <mo>)</mo> </mrow> <mo>,</mo> <mi>p</mi> <mo>'</mo> <mrow> <mo>(</mo> <mi>x</mi> <mo>'</mo> <mo>,</mo> <mi>y</mi> <mo>'</mo> <mo>,</mo> <mi>t</mi> <mn>1</mn> <mo>)</mo> </mrow> <mo>,</mo> <mi>factor</mi> <mo>_</mo> <mi>t</mi> <mo>)</mo> </mrow> </mrow> <mn>2</mn> </mfrac> </mrow>式中,p′(x′,y′,t 1)代表p′(x,y,t)在运动补偿时对应的参考帧的像素;D函数的定义为: <mrow> <mi>D</mi> <mrow> <mo>(</mo> <mi>p</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>+</mo> <mi>dx</mi> <mo>,</mo> <mi>y</mi> <mo>+</mo> <mi>dy</mi> <mo>)</mo> </mrow> <mo>,</mo> <mi>p</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>,</mo> <mi>factor</mi> <mo>_</mo> <mi>t</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open='' close=''> <mtable> <mtr> <mtd> <mi>d</mi> </mtd> <mtd> <mi>d</mi> <mo>&le;</mo> <mi>factor</mi> <mo>_</mo> <mi>t</mi> </mtd> </mtr> <mtr> <mtd> <mi>d</mi> <mo>></mo> <mo>></mo> <mn>1</mn> </mtd> <mtd> <mi>factor</mi> <mo>_</mo> <mi>t</mi> <mo>&lt;</mo> <mi>d</mi> <mo>&le;</mo> <mn>2</mn> <mo>*</mo> <mi>factor</mi> <mo>_</mo> <mi>t</mi> </mtd> </mtr> <mtr> <mtd> <mi>d</mi> <mo>></mo> <mo>></mo> <mn>4</mn> </mtd> <mtd> <mi>d</mi> <mo>></mo> <mn>2</mn> <mo>*</mo> <mi>factor</mi> <mo>_</mo> <mi>t</mi> </mtd> </mtr> </mtable> </mfenced> </mrow>式中factor_t表示时域滤波参数;当前宏块滤波结束后,需要对滤波参数进行更新,以进行下一个宏块的滤波,更新过程分为三步,第一步是利用固定系数计算单个像素的方差,第二步是利用单个像素方差计算宏块方差,第三步则是利用方差计算下一宏块的滤波参数;在计算单个像素方差步骤中,使用了一个固定的滤波系数来,计算公式为 <mrow> <mi>d</mi> <mo>'</mo> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <munderover> <mi>&Sigma;</mi> <mrow> <mi>dy</mi> <mo>=</mo> <mn>1</mn> </mrow> <mn>1</mn> </munderover> <munderover> <mi>&Sigma;</mi> <mrow> <mi>dx</mi> <mo>=</mo> <mn>1</mn> </mrow> <mn>1</mn> </munderover> <mi>D</mi> <mrow> <mo>(</mo> <mi>p</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>+</mo> <mi>dx</mi> <mo>,</mo> <mi>y</mi> <mo>+</mo> <mi>dy</mi> <mo>)</mo> </mrow> <mo>,</mo> <mi>p</mi> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>,</mo> <mn>20</mn> <mo>)</mo> </mrow> </mrow> <mn>8</mn> </mfrac> </mrow>计算宏块方差使用了单个像素方差的绝对值,计算公式为: <mrow> <mi>var</mi> <mo>=</mo> <mfrac> <mrow> <mi>&Sigma;&Sigma;abs</mi> <mrow> <mo>(</mo> <msup> <mi>d</mi> <mo>&prime;</mo> </msup> <mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>y</mi> <mo>)</mo> </mrow> <mo>)</mo> </mrow> </mrow> <mi>pixel count</mi> </mfrac> </mrow>其中pixel count表示一个宏块内像素的个数;最后通过var更新下一个宏块的滤波参数,如下式所示,factor_s=1.0+luma_var*luma_var/1.4factor_t=factor_s/2其中luma_var为当前的宏块方差。
地址 212009 江苏省镇江市丁卯经十二路
您可能感兴趣的专利