Machine Vision Technology:Lecture3 Edge detection | Fitting
- Finite difference filters有限差分滤波器
- Effects of noise噪声对边缘检测影响
- Derivative theorem of convolution卷积的导数定理
- Derivative of Gaussian filter高斯滤波器的导数
- Smoothing vs. derivative filters平滑滤波器与导数滤波器
- Canny edge detector
- Fitting拟合
- Least squares line fitting最小二乘直线拟合
计算机视觉(本科) 北京邮电大学 鲁鹏
Finite difference filters有限差分滤波器
还有其他近似的导数滤波器:
对于 Sobel 算子:
[ − 1 0 1 − 2 0 2 − 1 0 1 ] = [ 1 2 1 ] [ − 1 0 1 ] = A B \begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix} = \begin{bmatrix} 1 \\ 2 \\ 1 \\ \end{bmatrix} \begin{bmatrix} -1 & 0 & 1 \\ \end{bmatrix} = A B −1−2−1000121 = 121 [−101]=AB
可以发现Sobel算子先对图像使用 B B B 进行卷积:求取图像边缘,然后使用 A A A 进行卷积:高斯平滑(高斯核的近似值)。
总之:提取边缘、高斯平滑。
此外,对于Roberts算子, M x M_x Mx 提取的是 135度方向的边,在边中像素差距不大,边的两边像素差距大。同理 M y M_y My 提取的是 45度方向的边。
Effects of noise噪声对边缘检测影响
考虑一个真实的图像 f ( x ) f(x) f(x),有很大的噪声干扰:
使用边缘滤波器进行卷积 d d x f ( x ) \frac{d}{dx}f(x) dxdf(x):
由于噪声影响太大,一阶导数的极值点有很多,便很难找到边缘。于是便有下面先平滑去噪、再边缘检测。
使用高斯 g g g 滤波器去噪:
这时,边缘在一阶导的极值点处。
Derivative theorem of convolution卷积的导数定理
- 因为微分是卷积,卷积具有结合律Differentiation is convolution, and convolution is associative。
这样便有如下公式:
d d x ( f ∗ g ) = f ∗ d d x g \frac{d}{dx} (f*g) = f * \frac{d}{dx}g dxd(f∗g)=f∗dxdg
Derivative of Gaussian filter高斯滤波器的导数
高斯函数的一阶导数不可分离。
白色表示权重越高,黑色表示负的权值绝对值越大。
- Scale of Gaussian derivative filter高斯导数滤波器的大小对图像提取边缘的效果
高斯一阶导的方差可以改变高斯导数滤波器的大小。
1pixel可以看到斑马的胡须细节,而7pixels变得模糊了便看不到这些细节。
去除了噪声但模糊了边缘。
Smoothing vs. derivative filters平滑滤波器与导数滤波器
平滑滤波器:平滑去噪
- 高斯滤波器能够去除高频成分,是低通滤波器。
- 平滑滤波器的值没有负的。
- 平滑滤波器的值加和为1。不改变图像的强度。
导数滤波器:边缘提取
- 高斯导数滤波器:等价于先平滑去噪,再微分求边缘。
- 导数滤波器的值可以是负的。
- 导数滤波器的值求和为0。
- 高对比度处的高绝对值。High absolute value at points of high contrast
Canny edge detector
- 原始图像:
- norm of the gradient:梯度的L2范数
∣ ∣ ∇ f ∣ ∣ = ( ∂ f ∂ x ) 2 + ( ∂ f ∂ y ) 2 || \nabla f || = \sqrt{(\frac{\partial f}{\partial x})^2 + (\frac{\partial f}{\partial y})^2} ∣∣∇f∣∣=(∂x∂f)2+(∂y∂f)2
对原图进行卷积操作:使用x方向的卷积模版求x方向的导数,使用y方向的卷积模版求y方向的导数。
然后求L2范数得到如下边缘强度的图:
- 使用阈值thresholding对边缘强度低的进行过滤。
上面过程产生的问题:边缘太厚:如上图中的肩膀处。
如何将这些厚实的区域梯度变成曲线?How to turn these thick regions of the gradient into curves?
- 非极大值抑制Non-maximum suppression:用于消除边缘检测中的冗余边缘信息,只保留最具代表性的边缘。
检查像素是否沿渐变方向是局部最大值,选择沿边缘宽度的单个最大值。
在边上的某一点,沿着该点的梯度方向(与边的方向垂直),寻找左右两个邻居像素点,如对上面的q点,找到梯度方向的两个点r和p,如果q比r与q都大,则保留q点,如果q比r与q都小,则q剔除不保留。
上面的过程中还有个问题就是Lena的下巴的边缘消失了。产生的原因是上面使用thresholding阈值设置太高了。但如果阈值设置的太低,一些伪边就会产生。为此便有下面的双门限法:
- Hysteresis thresholding滞后阈值法:使用高阈值提取出强边缘、然后使用低阈值会产生许多弱边缘,此时根据噪声边缘不会与强边缘有连接关系的假设,便可以剔除一些噪声边。
原始图像:
high threshold:提取强边缘。高门限结果:
low threshold:提取出弱边缘。低门限结果:
hysteresis threshold:滞后阈值法。双门限法:
Canny edge detector:
- 1.使用高斯导数滤波器处理图像。去噪、提取边缘。
- 2.求梯度的大小和方向Find magnitude and orientation of gradient:非极大值抑制使用。
- 3.非极大值抑制Non-maximum suppression:使边缘的厚度下降到单个像素的宽度。粗边细化。
- 4.链接和滞后阈值法Linking and thresholding (hysteresis):定义两个阈值low and high,使用高阈值开始边缘曲线,使用低阈值继续边缘曲线
edge(image, ‘canny’); # matlab
Fitting拟合
前面我们能够检测出边缘,但边缘表示的信息我们不知道,我们不知道是不是圆形、汽车的形状等等。
我们希望通过根据简单模型对多个特征进行分组,从而形成一个更高级别、更紧凑的图像中特征的表示。
拟合:选择一个参数模型来表示一组特征Choose a parametric model to represent a set of features
拟合面临的问题:
- 测量特征位置中的噪声Noise in the measured feature locations
- 无关外部数据:杂乱(异常值),多条线Extraneous data: clutter (outliers), multiple lines
- 缺失数据:遮蔽区域Missing data: occlusions
Overview概述:
- 1.如果我们知道哪些点属于这条直线,我们如何找到“最佳”线路参数?最小二乘法Least squares
找到了属于这条线上的点,拟合这条线,使用最小二乘法。
- 2.如果有异常值怎么办?抗差拟合Robust fitting, RANSAC
这些点中有一些噪声点。噪声点少时使用Robust fitting,噪声点多时使用RANSAC。
- 3.如果有很多条线呢?投票方式:RANSAC、Hough变换Voting methods: RANSAC, Hough transform
有很多条线,拟合一条线时,其余的点都是噪声点。噪声点比较多使用RANSAC方法,或者使用霍夫变换。
- 4.如果我们甚至不确定这是一条线呢?Model selection
不知道图形的数学方程,如汽车边缘。可以使用Snake蛇形模型方法。
Least squares line fitting最小二乘直线拟合
Normal equations正规方程法。
上面是垂直Vertical最小二乘法,使用点到直线的垂直距离。会有下面问题:
- 没有旋转不变性Not rotation-invariant。
- 对于垂直线完全无效Fails completely for vertical lines。
Total lease squares 全最小二乘:最小化点到直线的距离。
Unit normal单位法向量: ( a , b ) a 2 + b 2 = 1 (a,b) \qquad \sqrt{a^2 + b^2}=1 (a,b)a2+b2=1
对d求导,令导数等于0得到a和b表示的d,然后带入使用矩阵求:
最后等价于求 ( U T U ) N = 0 (U^T U)N=0 (UTU)N=0 中 N N N 的解,可以看成线性方程组的解,也可以看做是求 U T U U^TU UTU 的特征值0对应的特征向量 N N N 。
其中称 U T U U^TU UTU 为二阶矩矩阵second moment matrix。
上图中,直线 a x + b y = d ax + by = d ax+by=d 是我们要寻找的直线,单位法向量为 N = ( a , b ) N=(a,b) N=(a,b) ,带入 ( 0 , 0 ) (0,0) (0,0) 点,则 d d d 为零点到直线的距离。 ( x ˉ , y ˉ ) (\bar{x},\bar{y}) (xˉ,yˉ) 是直线上的点,则 U N UN UN 表示点在单位法向量上的投影,即求点在单位法向量上投影的和的最小值满足的 N ( a , b ) N(a,b) N(a,b) 。
使用概率的方式理解:
噪声点对直线的偏移服从均值为0,标准差为 σ \sigma σ 的正态分布。
由于要拟合的各点独立同分布iid于正态分布,利用极大似然估计,已经发生的事件概率最大化,再求对数似然估计:
最大化对数似然估计,等价于最小化:
∑ i = 1 n ( a x i + b y i − d ) 2 \sum_{i=1}^{n}(ax_i + by_i -d)^2 i=1∑n(axi+byi−d)2
这便转换为了上面的全最小二乘。
使用最小二乘拟合红点:
最小二乘与离群值(异常点)拟合:受外点影响较大。
使用下面的鲁棒最小二乘法。
Robust estimators稳健估计:
定义Robust function鲁棒函数 ρ \rho ρ :
ρ ( u ; σ ) = u 2 σ 2 + u 2 \rho(u;\sigma) = \frac{u^2}{\sigma^2 + u^2} ρ(u;σ)=σ2+u2u2
函数图像如下:其中水平方向为 u u u , σ \sigma σ 为已知参数。
将 y = x 2 y=x^2 y=x2 作为对比。
u u u 较小时,近似等价于 u u u 的平方, σ \sigma σ 越小这种近似越明显。 u u u 较大时,趋近于1。
针对上面的问题,此时可以把 u u u 看做点到直线的距离 r i ( x i , θ ) r_i(x_i,\theta) ri(xi,θ),于是最小二乘改进为最小化:
∑ i = 1 n ρ ( r i ( x i , θ ) ; σ ) \sum_{i=1}^{n} \rho(r_i(x_i, \theta) ; \sigma) i=1∑nρ(ri(xi,θ);σ)
σ \sigma σ 为0.1时, u u u 很小就可饱和,超过 u u u 之后的点就不用管了。 σ \sigma σ 可以形象理解为控制 u u u 超过多少以后的点不用管了。 σ \sigma σ 越小,点到直线的距离很小时该点才可以作为拟合点。 σ \sigma σ 越大,点到直线的距离大一点也可以作为拟合点。
选择的 σ \sigma σ 刚刚好just right,优化的结果异常值的影响被最小化
选择的 σ \sigma σ 太小too small:每个点的误差值几乎相同,拟合很差。
选择的 σ \sigma σ 太大too large:和最小二乘差不多。
Robust estimations:Details
- 鲁棒拟合是一个非线性优化问题,必须通过迭代求解。
- 最小二乘法求出的(a,b,d)参数可用于初始化。
- σ \sigma σ 的选择:approx. 1.5 times median residual大约1.5倍平均残差 u u u。