目录
10.motion detection/ motion estimation
算法原理:
降噪算法——空域降噪:
- 降噪的过程其实就是减小噪声方差的过程,空域降噪一般多用于单帧降噪,滤波器直接在图像阈(空域)中滤除噪声,其一般思想为:对某pixel邻域的pixels进行加权平均。
- 高斯降噪:高斯滤波是线性滤波,和像素值无关,只与距离有关,距离目标像素越远其像素 权重越小,而 值越大表示中心pixel对周围pixel依赖越大。
- 双边滤波:双边滤波是非线性滤波,不仅和距离有关,还和相邻像素的相似度有关(如果pixel值接近则权重几乎不衰减),总体可以达到保边去噪的效果,ABF降噪模块采用的双边滤波。
- 非局部滤波:前面的滤波只考虑了某个pixel领域n*n的像素,没有考虑到其他“领域的领域”(一般是与它有相似结构),非局部滤波会考虑多个领域进行降噪处理。
降噪算法——频域降噪:
- 频域降噪一般思想为:将图像信号变换到频率域,在频率域将信号和噪声分开。常用的频域降噪:小波降噪、DCT降噪、傅里叶降噪。
- WNR降噪模块就是采用的小波降噪,由于噪声的小波系数较小,信号的小波系数较大。可以采用删除小波系数较小的信号分量,再还原回原信号的方法,进而达到降噪。
降噪算法——时域降噪:
- 时域噪声是空域噪声在时间上波动的一种描述,表现为跳动的噪声。
- 多帧平均降噪法:FIR filter:计算量大,但不需要迭代,多用于图像;IR filter:单帧等效计算量小,但需要迭代,多用于视频。
- 域降噪流程:对齐、融合;网格划分--->>>KLT光流法特征点追踪--->>>运动检测与运动补偿--->>>像素对齐--->>>融合。
1.图像噪声
噪声在图像上常表现为一引起较强视觉效果的孤立像素点或像素块。一般,噪声信号与要研究的对象不相关,它以无用的信息形式出现,扰乱图像的可观测信息。通俗的说就是噪声让图像不清楚。
2.图像中常见的噪声的类型
- 高斯噪声,也称为正态噪声,其统计特性服从正态分布。一种较为泛用的噪声模型。
一般我们常见的是高斯+泊松的噪声模型。我们需要知道的是,高斯噪声只和位置有关,而与信号的大小无关。泊松噪声是和信号的大小呈正相关的分布。结合起来的噪声模型如下图所示。
- 椒盐噪声,也成为双脉冲噪声。在早期的印刷电影胶片上,由于胶片化学性质的不稳定和播放时候的损伤,会使得胶片表面的感光材料和胶片的基底欠落,在播放时候,产生一些或白或黑的损伤。(例如坏点)
FPN,fix pattern noise(以一种固定的形式存在的噪声)
3.不同域的定义
- 空域:自变量为空间坐标
空间(spatial domain)也叫空间域,即所说的像素域,在空域的处理就是在像素级的处理,如在像素级的图像叠加。固定大小的窗口内(如3x3、7x7、9x9等),Raw域上,相同pattern的相邻像素之间发
生值的跳变;或YUV域中,Y或者UV通道值发生跳变。
在不考虑抖动及视场变化的情况下,基于细节纹理的稳定性,相邻几帧之间,同位置像素之间发生值的变化时,根据需要做特定的滤波处理。
- 频域:是描述信号在频率方面特性时用到的一种坐标系,自变量是频率,即横轴是频率,纵轴是该频率信号的幅度,也就是通常说的频谱图
根据噪声频率的分布规律,按频率段提取图像特征后,对特定频率段做不同强度的滤波处理。
在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中最高频率fmax的2倍时(fs.max>2fmax),采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的2.56~4倍;采样定理又称奈奎斯特定理。
4.空域降噪
4.1.空域降噪的定义:
空域降噪在图像横向和纵向的空间维度上采取的降噪措施,是针对单帧画面进行处理降噪,可以有效滤除空域噪声,但会损失一定程度的边缘细节。
4.2.思想核心:
平均(加权)一些相似的像素,去得到噪声更小的像素值(在一个邻域内,当前像素和周围像素的加权求和)。
大部分空域降噪解决的问题都是: 怎么计算两个像素的相似性权重。
根据此可以分为三类算法:
- 局部的线性算法: 高斯降噪
- 局部的非线性算法:中值滤波、双边滤波(有些人将其单独列为各向异性滤波)
- 非局部算法;
4.3.局部的线性算法
高斯降噪
当我们处理下面的像素时,针对与上式不同的sigma,会形成不同权重的滤波核,从而产生不同的滤波效果:
![]()
sigma=0.5
![]()
sigma=0.3
但是高斯滤波是一种和像素值无关只和空间距离有关的滤波方式,因此具有一定的局限性。不符合真实中降噪,会损失细节很多细节,如下图所示。
![]()
降噪前
![]()
降噪后
双边滤波
双边滤波与高斯滤波相比,对于图像的边缘信息可以更好的保存,其原理为一个与空间距离相关的高斯函数与一个灰度距离相关的高斯函数相乘。
空间距离:指的是当前点与中心点的欧式距离。空间域高斯函数为:
灰度距离: 指的是当前点灰度域中心点灰度的差的绝对值。值域高斯函数为:
双边滤波器用于平滑图像并减少噪声,同时保留边缘,是一种非线性双边滤波器,比高斯滤波器多了一个灰度距离的概念( sigma_i )。
我们可以看到,上式双边滤波相当于是一个高斯滤波再乘以一项,这一项就是考虑了像素间的灰度相似性。同样的在处理下面的像素时:
![]()
sigma=0.5
![]()
考虑像素之间的值的联系的值,
还有一次计算,比如3和18
采用双边滤波是可以保留大的边缘,但是无法处理小的边缘:
![]()
滤波前
![]()
滤波后
上图大边缘保留住了,但是小细节被抹平了,因此双 边滤波有时在学术上都是属于smooth领域。
4.4.非局部算法
非局部均值滤波(Non-Local Means,NLM)是Buades等人于2005年在论文“A non-localalgorithm for image denoising”中提出的对传统邻域滤波方法的一种改进滤波,考虑到了图像
的自相似性质,它充分利用了图像中的冗余信息,在去噪的同时能够最大程度的保持图像的细节特征。它利用了整幅图像来进行去噪,以图像块为单位在图像中寻找相似区域,
再对这些区域求平均,能够比较好地去掉图像中存在的高斯噪声。
思想: 根据图像块的相似性来计算像素的相似性权重
非局部并不是指的图像块加权求和,而是指的是求得权重时采用图像块。
例如:
我们使用3和18计算时,使用以3为中心的3*3的块和使用以18为中心 的3*3的块:
w=- exp((3-13)^2+(15-6)^2+(100-9)^2+(6-15)^2+(3-18)^2+(6-20)^2+(8-21)^2+(15-35)^2+(18-0)^2))./(2*sigma^2)
5.频域降噪
常见的有:
(1)傅里叶降噪
(2)小波降噪
(3)DCT 降噪
思想核心:
利用信号在空间上的连续性,将图像信号变换到频率域,在频率域将信号和噪声分开,进而对信号降噪。
傅里叶降噪:
核心原理:
傅里叶变换:任何周期函数都可以表示为不同频率的正弦和/或余弦之和的形式。傅里叶变换可以将一个时域信号转换成在不同频率下对应的振幅及相位,
其频谱就是时域信号在频域下的表现,而反傅里叶变换可以将频谱再转换回时域的信号。
傅里叶提出这句话:任何周期函数都由多个不同的正弦波(sin和cos)叠加构成。如下图,频域由若干个正弦波构成,时域的矩形波可以由多个正弦波叠加构成。
小波降噪:
小波变换(wavelet transform,WT)是一种新的变换分析方法,能够在时间(空间)频率的局部化分析,通过伸缩平移运算对信号(函数)逐步进行多尺度细化,最终达到高频处时间细分,低频处频率细分,能自动适应时频信号分析的要求。小波降噪一般指基于小波变换的图像降噪。图像信号通过小波变换后,信号产生的小波系数含有信号的重要信息,将信号经小波分解后的小波系数较大,噪声的小波系数较小,并且噪声的小波系数要小于信号的小波系数。
一般的处理逻辑是:将图像使用小波基进行分解,一般会分为HH,HL,LH,LL(这里的L代表low低频,H代表High高频,所以HH可以认为是高高频)
下图是分解为三个频段:HH,HL,LH
![]()
原图
![]()
HH
![]()
HL
![]()
LH
结论: 在小波域,噪声的小波 系数相对较小。所以经常采用将较小的小波系数丢掉的方法降噪,因此小波降噪经常成为小波收缩。
将比较小的值收缩砍掉
在处理小波的系数时,有两种方式:1、软收缩 2、硬收缩
![]()
软收缩
![]()
硬收缩
![]()
DCT降噪
DCT为离散余弦变换,是在DFT(离散傅里叶变换)的基础上推导出来的,是DFT的一种特殊形式。在DFT傅立叶级数展开式中,如果被展开的函数是实偶函数,那么其傅立叶级数就只包含余弦项,
再将其离散化(DFT)可导出该余弦项的余弦变换就是离散余弦变换(DCT)。
离散余弦变换被展开的函数是实偶函数,因此离散余弦变换相当于一个长度是其本身两倍的离散傅里叶变换,并且离散余弦变换后的函数仍然为一个实偶函数。一维的DCT变换公式如下:
6.BM3D
BM3D算法是图像与视频去噪领域效果较好的算法,它结合空域思想和频域转换变换的方法来提升图像效果,其主要分为两步骤:1、基础估计;2、最终估计。每一步又可分为三小步:
- 分块组合
- 协同滤波
- 整合
基础估计
- 分块组合针对图像目标块,通过滑动搜索框的方式最多找到N个相似块,为了避免噪声的影响,将图像经过DCT变换后再采用欧式距离的方式衡量相似图,按照从小到大进行排序,选择其中的N块组成三维数组。
- 协同滤波三维数组叠加之后,将每个块同一位置的像素点构成数组,采用硬阈值的方式将小于超参数的值置于0,同时统计非零成分的数量,作为后续权重的参考,最后进行三维矩阵逆变换。
- 整合将逆变换后的块放回原位置,利用非零成分数量统计叠加数权重,最后将叠放后的图除以每个点的权重就得到基础估计的图像。
7.时域噪声简介
就是普通的空域噪声,但是在时间域上会波动,例如有些手机在预览上有很多跳动的噪点。
我们处理时间噪声的方法就是多帧平均。
![]()
单帧
![]()
叠加50帧之后再拉亮
在上图中,我们左图的亮度很低,我们在进行tuning的时候,如果噪声很大的情况下, 我们会有倾向于亮度来“藏噪”;所以当我们可以去掉这些噪声之后我们就可以增加图片的亮度来获得一个对人眼更加友好的观感;所以时域降噪不光是把噪声减小了,同时在噪声小的情况下,我们还可以把亮度提亮来提高画面质量。
![]()
单帧图像
![]()
时域降噪处理之后
如上左图所示,随着我们叠加的帧越多,噪声的等级越往下降。从理论上分析,我们使用n帧进行平均,可以把噪声降低n0.5。上右图给出不同频率噪声的表现。
8.时域降噪的流程图
It作为当前降噪帧,Iref t-1作为当前参考帧(It帧已处理后的前一帧),两帧通过运动区域的检测,对比出噪点的变化,然后在运动补偿中做后处理,最后将两帧做融合处理,效果如下图所示。
9.时域降噪的核心
FIR & IIR filter简介
FIR filter :有限脉冲响应滤波器
缺点: 计算量大;
优点: 不需要迭代,可以并行计算;
针对图像的使用多一些。
IIR filter:无限长脉冲响应数字滤波器
缺点: 单帧等效计算量小;
优点:硬件开销比较小,IIR可以用更少的阶数取得和FIR一样的效果。
针对视频的使用多一些。
举例:如果我们取5帧做处理,FIR滤波器会在相机拍完5帧后,把所有图片取来做统一计算处理,然而IIR滤波器会在每一帧拍完后取该帧的1/n来做处理。在计算量上总体是IIR的计算量比较大,FIR滤波器大多用在美图等模式,
IIR滤波器主要针对视频,录像,监控等情况下。
FIR & IIR filter结构图示
FIR filter :有限脉冲响应滤波器
IIR filter:无限长脉冲响应数字滤波器
![]()
二阶IIR
10.motion detection/ motion estimation
用于检测当前像素是否移动,有些也会求得motion vector(运动矢量,检测当前帧和上一帧移动了几个像素)。
做的不好: (1)把运动当成了不运动会导致拖影
(2)受到噪声等影响,将不运动的误判为运动的,会导致噪声消除不干净
常见方法:
像素值差判断(单点或block)
dif>th 运动,dif<th 静止
如上图所示,我们对于同一个块的位置在时域上的不同帧上做减法,这个减法可以给予单个像素也可以基于块,然后基于差异的结果判断是静止还是运动。
光流法
利用光流场法实现目标检测的基本思想是:首先计算图像中每一个像素点的运动向量,即建立整幅图像的光流场。如果场景中没有运动目标,则图像中所有像素点的运动向量应该是连续变化的;
如果有运动目标,由于目标和背景之间存在相对运动,目标所在位置处的运动向量必然和邻域(背景)的运动向量不同,从而检测出运动目标。
11.时域降噪和encoder
也有时域降噪算法的运动估计是从encoder模块获取的运动估计的值来进行算法的计算的
12.motion compsensation
当我们拿到运动矢量之后,就可以根据运动矢量进行运动补偿,但是
做的不好:(1)把运动当成了不运动会导致拖影。(多用于手机,安防监控较少使用)
(2)受到噪声等影响,将不运动的误判为运动的,会导致噪声消除不干净。
![]()
参考帧
![]()
当前帧
所以当我们知道运动矢量之后可以使用类似于右侧公式得到最后的输出: I_out=alpha*Ireft-1(i,j)+(1-alpha)*It(i+2,j-100)
将上图看成一个坐标系,步行中人的位置有x,y轴,lref为上一帧,lt为当前帧,我们需要检测相同像素点或者块移动到不同位置代入到函数中计算出运动的补偿。
式中的a1可以参考下图得到:
Dif为lref(上一帧)和It(当前帧)的差异程度,Alpha为坐标系中不同差异程度得到了一个比例系数,然后我们可以通过上述函数,使用alpha系数讲当前帧和上一个参考帧融合得出新图。
13.时域降噪的难点
(1)如何平衡拖影和降噪效果。
在手机调试过程中,有时候运动检测算法未能识别出运动的物体,就会产生拖影,当然另外如果快门和曝光时间设置的不合理,同样会产生拖影。
(2)在硬件设计中需要平衡带宽和片上mem 的关系。(参考帧读入读出消耗极大)
(3)在手机系统中平衡运动补偿和降噪效果的关系。(运动补偿的一个大缺点在于在块之间引入的非连续性,通常称为块效应。当块效应严重时,
解码图像看起来会有像马赛克一样的效果,严重影响视觉质量。另外一个缺点是,当高频分量较大时,会引起振铃效应。)
![]()
振铃效应