第十九周学习笔记
阅读:《计算机视觉——算法与应用》
第四章 特征检测与匹配
4.2 边缘
相对特征点,边缘点更为丰富且常常包含重要的语义关联
4.2.1 边缘检测
边缘定义为亮度剧烈变化的位置,将图像想象为一个高度域,边缘出现在陡峭斜率上,斜率和方向是通过梯度实现的
J(x)=∇I(x)=(∂I∂x,∂I∂y)(x)J(x)=\nabla I(x)=(\dfrac{\partial I}{\partial x},\dfrac{\partial I}{\partial y})(x)J(x)=∇I(x)=(∂x∂I,∂y∂I)(x)
但是,求图像的导数强调了高频率的部分因而放大了噪声,因为噪声和信号的比例在高频部分较大,因此计算梯度之前需要考虑将图像用一个低通滤波器进行平滑,因为希望边缘检测器的响应与方向无关,所以需要一个圆对称的平滑滤波器。高斯函数是唯一可分离的圆对称滤波器,所以大多数边缘检测算法中都使用了它。jike
微分可与其他线性滤波操作交换
J(x)=∇[G(x)∗I(x)]=∇G(x)∗I(x) J(\mathbf{x})=\nabla[G(\mathbf{x})*I(\mathbf{x})]=\nabla G(\mathbf{x})*I(\mathbf{x}) J(x)=∇[G(x)∗I(x)]=∇G(x)∗I(x)
因为
∇[G(x)∗I(x)]=∇[∑k,lG(i−k,j−l)I(k,l)]=∇G(x)∗I(x) \nabla[G(\mathbf{x})*I(\mathbf{x})]=\nabla[\sum_{k,l}G(i-k,j-l)I(k,l)]=\nabla G(\mathbf{x})*I(\mathbf{x}) ∇[G(x)∗I(x)]=∇[k,l∑G(i−k,j−l)I(k,l)]=∇G(x)∗I(x)
为了使得仅单个像素分布在沿着边缘轮廓的离散位置上,可以通过求梯度的极大值来找到,此时会涉及求高斯二阶导数的过零点问题,而实践中,常以高斯差分(DoG)代替高斯二阶导数。
计算出符号函数S(x)S(x)S(x)后,通过找到满足以下条件的点来计算过零点的亚像素级位置
[S(xi)>0]̸=[S(xj)>0] [S(\mathbf x_i)>0]\not= [S(\mathbf x_j)>0] [S(xi)>0]̸=[S(xj)>0]
xz=xiS(xj)−xjS(xi)S(xj)−S(xi) \mathbf x_z = \dfrac{\mathbf x_iS( \mathbf x_j)-\mathbf x_jS(\mathbf x_i)}{S(\mathbf x_j)-S(\mathbf x_i)} xz=S(xj)−S(xi)xiS(xj)−xjS(xi)
亚像素级位置的计算是通过在过零点间进行线性插值计算的,当
x=αxi+(1−α)xj
\mathbf{x}=\alpha x_i + (1-\alpha) x_j
x=αxi+(1−α)xj
S(x)=αS(xi)+(1−α)S(xj) S(\mathbf x)=\alpha S(\mathbf x_i) + (1-\alpha)S(\mathbf x_j) S(x)=αS(xi)+(1−α)S(xj)
令S(x)=0S(\mathbf x)=0S(x)=0求x\mathbf xx即可
尺度选择和模糊估计
如果只对强烈的边缘感兴趣,可以根据图像的噪声特性来选择滤波器的带宽,如果想要检测出现在不同分辨率下的边缘,就需要一种尺度空间上的方法。其中的一种方法通过模糊估计完成。
彩色边缘检测
彩色图像能够提供灰度图像无法提供的额外边缘信息,比如等亮度线(ios-luminant)
如果简单地结合每个通道上的灰度检测结果,带符号的梯度可能会相互抵消(比如一个由红到绿的边缘),如果将每个边缘的检测出的梯度联合起来,则会导致边缘加粗或者出现双倍边缘,难以连接
较好的方法是在每个颜色空间上计算有向能量(oriented energy)。
结合边缘特征线索
通过结合多个低级视觉线索,结合亮度梯度、颜色梯度、纹理梯度,可以得到较好的结果。
4.2.2 边缘连接
将鼓励的边缘连接成连续的轮廓
边缘的表示
- 链码(chain code)使用一个三位码对该点和下一个点之间的八个基本方向,表达紧凑但不利于进一步处理。
- 弧长参数化(arc length parameterization),使得匹配和处理更加容易。
4.2.3 应用:边缘编辑和增强
4.3 线条
检测直线
4.3.1 逐次近似
使用分段线性的折线或B样条曲线来近似曲线
4.3.2 Hough变换
哈夫变换(Hough transform),根据边缘来对可能的直线位置进行投票
基于RANSAC的直线检测
三种直线检测方法
- 逐次近似
- 哈夫
- RANSAC
4.3.3 消失点
一些直线由于在三维中平行,它们拥有相同的消失点
4.3.4 应用:矩形检测
检测出相互成交的消失点后,就有可能搜索出矩形结构
第五章 分割
图像分割的任务是寻找相互匹配的像素组,在统计学中,该问题称为聚类分析
5.1 活动轮廓
三种在图像中确定边界曲线的方法
- 蛇行(snake)
- 智能剪刀(intelligent scissor)
- 水平集方法
这三种都是活动轮廓(actve contour)的例子,它们在用户的约束下,迭代地移向其最终解
5.1.1 蛇行
5.1.2 动态蛇行和CONDENSATION
5.1.3 剪刀
根据用户的描画实时地更新轮廓
5.1.4 水平集
5.1.5 应用:轮廓跟踪和转描机
活动轮廓可以广泛应用于物体跟踪中
转描机(rotoscoping),用跟踪到的轮廓变化一组手画的动画形象
5.2 分裂与归并
对于灰度图像的一种简单的分割方法是:选择一个阈值然后计算连通分量,但因为光照和物体内部统计特性的变化,对于整张图片而言单一阈值是不够的。
5.2.1 分水岭
分水岭(watershed)是阈值化操作的一种,它将图像分割为若干集水盆地(catchment basin),计算方法是从所有的局部最小值处开始洪泛地形,并将演化出的不同部分交接的地方标记为脊。
5.2.2 区域分裂(区分式聚类)
5.2.3 区域归并(凝聚式聚类)
5.2.4 基于图的分割
利用区域间相对不相似性来确定那些区域需要合并的归并算法
5.2.5 概率聚集
5.3 均值移位和模态发现
均值移位和模态发现方法,例如k-均值和高斯混合,将与每个像素关联的特征向量(例如颜色和位置)模型化为来自某个未知概率密度函数的样本,而后师徒寻找在此分布中的群簇(模态)
5.3.1 k-均值和高斯混合
采用参数化形式为分割的概率密度函数建模
5.3.2 均值移位
均值移位用平滑的连续非参数化模型来模型化分布,其关键在于在高维数据分布中高效地寻找峰值,而不用显式地计算完整的函数
5.4 规范图割
规范图割检测邻近像素点之间的亲和度(affinity,相似度)并试图分开那些被弱亲和度连接起来的像素集。
5.5 图割和基于能量的方法
约束边界度量是在直接邻居之间而且通过在像素级求和来计算区域隶属统计量,用变分形式化或二值马尔科夫随机场将其形式化为一个经典的基于像素的能量函数
应用:医学图像分割
第六章 基于特征的配准
6.1 基于2D和3D特征的配准
6.1.1 是呀最小二乘的2D配准
使用最小二乘法估计运动参数p
6.1.2 应用:全景图
6.1.3 迭代算法
非线性回归
6.1.4 鲁邦最小二乘和RANSAC
在对应点中有外点时,需要更鲁棒的最小二乘,在这种情况下,最好使用M-估计,它对残差施加一个鲁棒惩罚函数来代替它们的平方
M-估计可以减少外点的影响,但在一些情况中,从太多外点起步会导致算法无法收敛到全局最优化,更好的方法是寻找一个起步的对应的内点集合,也就是与主动运动估计一致的点。比如RANSAC和最小中位方差。
6.1.5 3D配准
- 正交Procrustes算法
- 绝对方向算法
6.2 姿态估计
一个经常出现的特殊的基于特征的配准实例是从一组2D点的映射中估计物体的3D姿态,姿态估计问题也称为“外参数标定”(extrinsic calibration)。
6.2.1 线性算法
利用至少3D和2D位置的6个对应点来求解线性方程
6.2.2 迭代算法
最精确(灵活)的估计姿态的方法是直接最小化2D点上的平方(或鲁棒)重投影误差
6.2.3 应用:增强现实
6.3 几何内参数标定
6.3.1 标定模式
使用一个标定模式或者标记集合是可靠的估计摄像机内参数的方法之一。在摄影测量学中,经常在很宽阔的田野架一个摄像机来观察远处的标定目标,其真实位置已经用观测工具事先计算了。
6.3.2 消失点
把对应于3D平行线的2D线相交,计算它们的消失点
6.3.3 应用:单视图测量学
6.3.4 旋转运动
当没有标定目标或者已知的结构可用但可以绕着前节点旋转摄像机时,摄像机可以从一组假定在做纯旋转运动的重叠图像中标定
6.3.5 径向畸变
当图像通过广角镜头拍摄的时候,经常需要对镜头畸变进行建模,比如径向畸变。