咱们常指的滤波是指空间滤波和频率滤波。html
Images
在图像处理里面,管图像复原,去噪,能够说为图像复原,图像滤波,他是咱们拿到图像的第一步操做,受到噪声污染的图像叫作退化,去噪就是复原。常见的噪声有加性噪声(与信号有关,通常把加性的随机性当作是系统的背景声),乘性噪声(传输过程当中的信道不理想,他与信号的关系是相乘的,只有信号存在乘性噪声才存在,通常把乘性的随机性当作是系统的变性),常听到的噪声有白噪声,高斯噪声,泊松噪声,乘性噪声,椒盐噪声。
白噪声就是在整个频率内分布的噪声git
2D filtering
对图像作复原就涉及到怎么样滤波(去燥)的问题!!算法
对于一维数据作滤波,咱们首先想到的是作滑动平均。学习
滑动平均去燥。滑动的平均窗口中除以9是为了作归一化。 cdn
Image filtering
从图像的左上角开始滑动,切记保持原图像不变,不要用计算后的值替换原图像对应位置的值。
Smoothing with box filter Cross-correlation
计算完以后拿到一个比原图像略小的输出图。输出图不是那么的平滑,含有噪声,由于在频域里面咱们用的矩形框滤波在高频位置是有跳跃的,某些高频噪声是能够经过的,并非一个真正的低频滤波器。 htm
boxFilter in OpenCV
boxFilter在OpenCV中的两种实现方式。排序
boxFilter是不用归一化的,blur是归一化的 图片
Convolution in 2D
卷积和滑动平均并不同,能够从给出的公式中看到用了减号,可是对于一个对称的boxFilter是没有影响的。ci
因为公式中用的是减号,在运算时,从boxFilter的右下角拿值。get
在这个公式中的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
docs.opencv.org/2.4/doc/tut…
对图像加强,去噪,加强对比度方面用的很是多。
数字散斑相关方法
学习这些首先眼界要宽,不只仅局限于当前最火最热的话题好比深度学习,使得全部的问题都想着用深度学习来解决,没有他不行,不是这样的!!眼界不能这么狭隘,不少基本方法也可能会解决工业方面的大问题。
登山法,最快降低法,预测算法,根据先后两个形变位置的关系,缩小搜索的个数,减少计算量。
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)就是图像的二阶导数。
Notes about the Laplacian
LOG filter滤波器会常常用到。
Image derivatives
图片上的竖直边缘能够对应到右边数学上的一阶导数
右边是一个梯度幅值的图像
图像梯度
梯度的方向
Edge Detection
获得一些可做为边缘的参考点。
how to detect one pixel thin edges ?
咱们获得的会是一个比较粗的一个边缘,而咱们但愿拿到的是一个像素点。因此涉及到咱们怎样拿到一个由单一点组成的边缘。
Non-Maximum Supression
非极大值抑制,在梯度的方向上找到每个位置元素的变化,从而找到局部的最大值,将这样一个点来做为咱们的边缘。
An edge is not a line
不少时候咱们拿到的边缘并非条直线,若是咱们要检查的边缘须要结果是条直线,怎么作?