我们常指的滤波是指空间滤波和频率滤波。
Images
在图像处理里面,管图像复原,去噪,可以说为图像复原,图像滤波,他是我们拿到图像的第一步操作,受到噪声污染的图像叫做退化,去噪就是复原。常见的噪声有加性噪声(与信号有关,一般把加性的随机性看成是系统的背景声),乘性噪声(传输过程中的信道不理想,他与信号的关系是相乘的,只有信号存在乘性噪声才存在,一般把乘性的随机性看成是系统的变性),常听到的噪声有白噪声,高斯噪声,泊松噪声,乘性噪声,椒盐噪声。白噪声就是在整个频率内分布的噪声
2D filtering
对图像做复原就涉及到怎么样滤波(去燥)的问题!!
对于一维数据做滤波,我们首先想到的是做滑动平均。
滑动平均去燥。滑动的平均窗口中除以9是为了做归一化。
Image filtering
从图像的左上角开始滑动,切记保持原图像不变,不要用计算后的值替换原图像对应位置的值。Smoothing with box filter Cross-correlation
计算完之后拿到一个比原图像略小的输出图。输出图不是那么的平滑,含有噪声,因为在频域里面我们用的矩形框滤波在高频位置是有跳跃的,某些高频噪声是可以通过的,并不是一个真正的低频滤波器。
boxFilter in OpenCV
boxFilter在OpenCV中的两种实现方式。
boxFilter是不用归一化的,blur是归一化的
Convolution in 2D
卷积和滑动平均并不一样,可以从给出的公式中看到用了减号,但是对于一个对称的boxFilter是没有影响的。
由于公式中用的是减号,在运算时,从boxFilter的右下角拿值。
在这个公式中的f它是把原图像进行了翻转,但是在实际实现当中我们不对原图像翻转,因为原图像更大,翻转的是boxFilter
Filtering vs. Convolution
对于2维的filter我们称为相关(correlation)
卷积运算对于filter是对称的来说,卷积与相关计算结果是一样的,只有对那些非对称的filter,卷积与相关的计算结果是不一样的,但是他们的意义是大同小异的。
matlab的实现先对h=filter2(g,f)和h=conv2(g,f)中的g先翻转180度。Important filter:Gaussian
这是一种真正的低频滤波器,高频是完全阻断的,在一维时2πa是有根号的,而二维没有
Smoothing with Gaussian filter
Practical matters
线性滤波器满足的一些性质,交换律,结合律,还有微分运算。线性10不变性质系统,两个滤波器依次对图像做运算等于先对两个滤波器做运算再对图像做运算。这种性质对后面的加速运算效果会很明显。
注意:上面提到的相关与卷积运算都是一种线性的操作。
Median filter(中值滤波器)
这是个非线性滤波器。
示例: 将罗列出来的数值进行排序,取中间值。Bilateral filter(双边滤波器)是种保边的滤波器,不但能滤除噪声还能保证边缘的陡峭性,效果很好就是会很慢,可以在线下使用。
还有自适应滤波器等等
Median filter
Summary
对图像增强,去噪,增强对比度方面用的非常多。
数字散斑相关方法
学习这些首先眼界要宽,不仅仅局限于当前最火最热的话题比如深度学习,使得所有的问题都想着用深度学习来解决,没有他不行,不是这样的!!眼界不能这么狭隘,很多基本方法也可能会解决工业方面的大问题。
爬山法,最快下降法,预测算法,根据前后两个形变位置的关系,缩小搜索的个数,减小计算量。
Edge detection
计算机几何视觉中的应用
Why do we care about edges?
What Causes an Edge?(边缘是怎么产生的)
Image Features -- Edges
灰度的变化过程中会有一个边缘的产生,数据不会突变,一般是渐变的过程。Edge detection(1D)
一维数据,求导取最大值Digital Approximation of 1st derivatives
求前后两点的像素差取平均值。就是用1*3的卷积模版在图像上进行滑动,得到的输出值就df(x)/dx
Edge Detection(2D)
左侧图像强调是竖直方向的边缘,增大了由黑到白的变化,采用的filter是1/2[-1,0,1],用的水平模版。右侧图像上看到很多水平方向的边缘,说明我们拿到的是水平边缘,用的是竖直模版来滤的波。最右边的图表示的是梯度的大小,幅值。Effects of noise
真实的图片数据是有噪声的,直接拿f(x)来做微分的话,得到的梯度 噪声是非常大的,无法找到边缘的位置。所以在拿到原图像之后先去噪,再求微分。
Noise cleaning and Edge Detection
先经过一个线性滤波器,例如高斯滤波器。 在竖直方向进行一个去噪,再检测出竖直方向的边缘。示例:
Sobel Edge Detector
对于图像中心位置给出的权重更大,远离图像中心位置给出的权重更小,这样的一种滤波器也是很常用的。
Other Filters
这是检测一个垂直边缘。 这是检测一个水平边缘。Robinson Compass Masks
对滤波器进行不同的翻转会得到不同的边缘。
箭头表示的是灰度的变化方向,并不是边缘方向。通过不同的mask进行卷积运算,我们就可以抽取到图片中不同的某些边缘信息,再将他们组合起来作为图像的某种结果的表达。抽取出来的Robinson信息是可以作为图像的检索,识别等等操作。
Other edge detectors - second-order derivative filters(1D)
Noise cleaning and Edge Detection
此处可以看出来对filter对二阶导再与原图像相乘 和 filter*f在求二阶导的结果是一样的,这样可以节省很多计算开销。在二阶导为零的位置得到边缘的位置。Edge Detection(2D)
一阶导的幅值大于某个阈值或者二阶导数等于0,为图像的边缘。图像的拉普拉斯(Laplacian)就是图像的二阶导数。