计算机视觉笔记
图像:二值图(0,1) 灰度图(0~255) 彩色图(RGB)
卷积:滤波器翻转 ,可使用乘法交换律
互相关:滤波器不翻转,不可使用乘法交换律
边缘检测:求导求极值,极值点即为边缘
高斯滤波器:
均值滤波器:
Sobel算子:
RANSAC(直线检测算法,模型匹配算法) RANdom Sample Consistence
- 随机选择一组种子点对模型进行初始的估计
- 根据初始的估计计算出局内点(到直线的距离小于阈值)
- 若局内点的个数大于阈值,则此次估计有效,利用最小二乘法对直线重新拟合
- 重复以上步骤,找出多条直线,选择其中局内点个数最多的一条作为最终的拟合结果
优:
- 应用于各种模型拟合算法,易实现
- 容易计算出失败概率
缺:
- 只能处理包含一定比例局外点的样本集
- 若局外点比例较高,则没有霍夫变换效果好
Canny边缘检测:
- 使用高斯滤波器去除噪声
- 求梯度的方向跟幅值
- 非极大值抑制
- 双阈值与连通性
Harris角点检测:
角点:在以角点为中心的邻域中,梯度有多个主要的方向,可被重复检测,包含丰富的信息且具有可区分性
角点检测:
- 计算图像x,y方向上的梯度Ix,Iy
- 使用高斯函数作为窗口函数
- 计算 sei ta
- 非极大值抑制
其他的关键点检测算法:
- Harris-拉普拉斯
- DOG高斯差分算法(具有尺度不变性):利用不同尺度的高斯差分算子与图像卷积,获得尺度空间,寻找极大值点
局部特征:
- 可重复性和准确性
- 局部性
- 要具有一定的数量
- 区分性
- 效率
图像匹配:
- 找到一组关键点(Harris角点检测)
- 对每个关键点定义一个邻域
- 对此邻域进行提取和归一化
- 提取归一化后的邻域的局部特征
- 根据提取的局部特征进行匹配
HOG(方向梯度直方图):提取的是全局特征,归一化时是对若干个cell(block)
- 将图像分为若干个小的图像块cell(用图像或圆表示)
- 对每一个cell计算梯度的方向和幅值并构造直方图
直方图:180°划分为9个部分,0°,20°,…,180°
SIFT特征提取:局部特征
- 将关键点邻域平分为4*4个图像块
- 对每一个图像块构建方向梯度
- 将子图像块中的每个像素点的梯度方向旋转 x°,梯度幅值投影到方向上
- 根据距离进行加权
每个关键点提取到的是128维特征,具有旋转不变性与尺度不变性(关键点检测使用的是高斯差分算法,对于每一个关键点都有对应的尺度信息)
HOG与SIFT的差别
- HOG提取的是全局特征,SIFT提取的是局部特征
- HOG归一化时是对若干个cell,SIFT归一化时是对128维向量
- 使用SIFT提取特征时找出最重要的梯度方向进行旋转,HOG不用
- SIFT用变化的尺度计算
全景拼接
- 对两幅图像的关键点进行检测(高斯差分算法)
- 找到两幅图中对应的关键点对
- 用SIFT提取关键点的局部特征(128维)
- 用SIFT局部特征进行匹配
- 计算点对之间的欧式距离是否小于阈值来判断是否是对应的关键点对
- 用关键点对实现变换达到拼接的目的
- 计算出变换矩阵
- 使用RANSAC估计变换矩阵
图像缩放
- 接缝剪裁技术
- 动态编程技术
接缝剪裁:移除不重要的像素点(能量最少的像素点)
能量:像素点在x,y方向的梯度的幅值
接缝:像素从上到下(从左到右)的连接路径
最优接缝:使能量方程最小的接缝
进行接缝剪裁后图像整体的平均能量值上升(去除了能量小的像素点)
缺点:无法识别平坦区域上的物体
图像分割:聚类任务(将图像中相似的像素点分为一组)非监督学习
- 层次聚类
- 将每个点视为一组
- 找到距离最近的两组
- 合并
- 重复2,3,直到剩余一个组
- K-means(K均值)
- 随机的选择k个聚类中心
- 将每个点归类到距离它最近的聚类中心
- 计算每一组平均值作为新的聚类中心
- 重复,直到聚类中心不再改变
优点:
- 找到使条件方差最小化的聚类中心
- 简单易实现
缺点:
- 需要选择k
- 对局外点(噪声点)敏感
- 局部最优
- 所有的聚类使用相同的参数
- mans-shift
- 随机选择一个种子点,创建一个窗口W
- 计算窗口内的均值作为新的窗口中心
- 重复,直到窗口中心不再改变
优:
- 应用范围很广
- 对数据集的形状没有特定要求
- 只有一个参数(窗口大小)
- 可找到不同数量的聚类
- 对噪声具有鲁棒性(不会随着某物的变化而变化的性质,可以理解为稳定性)
缺:
- 算法结果表现依赖于窗口尺度
- 窗口尺度不易选择
- 计算复杂
- 不能根据特征空间的维度缩放
- K-NN(物体识别,分类算法) 无训练过程,只有测试过程
- 选择一个k值
- 计算距离测试点最近的k个点
- 将测试点归入k个点中最多的那一类
优点: - 简单
- 有灵活的决策边界
- 1-NN错误率是贝叶斯的两倍
- k值的选择用交叉验证的方法
k越小,对于噪声点越敏感
k越大,包含其他样本,影响判断,决策边界平滑
欠拟合:模型过于简单 ,高偏差,低方查,训练集测试集错误率高
过拟合:模型过于复杂 ,低偏差,高方查,训练集测试集错误率低
降低方差的方法:
- 选择一个简单的算法
- 调整参数
- 使用更多的训练数据
物体识别
- 图像分类
- 对图像中物体的检测和定位
- 对图像中物体的语义和几何信息的提取
- 对人的活动和事件的分类
物体识别框架:
训练图像–>特征提取–>训练(训练标签)–>分类器
测试图像–>特征提取–>预测(分类器)
数据降维
- PCA
- 零均值化
- 求协方差矩阵的特征值与特征向量(协方差用来统计两个随机变量关系的统计量)
- 将特征向量按照特征值从大到小的顺序排列成矩阵,取出前k行为矩阵P
- Y = P X 即为降维之后的数据
- SVD(奇异值分解)
- 特征值分解与奇异值分解都是给一个矩阵(线性变换)找一组特殊的基,特征值分解找到了特征向量这组基,在这组基下线性变换只有缩放的效果
- 奇异值分解则是找到另一组基,这组基下线性变换的旋转、缩放、投影三种功能能独立地展示出来了
- 压缩比p = n²/k(2n+1)> 1
- LDA
- LDA:线性判别分析,分类算法同时也是一种降维方法
- PCA:保持差异最大化(无监督学习)
- LDA:保持区分度(监督学习)
Bag of words
利用Bag of words模型将一幅图像表示为数值向量
- SIFT提取:利用SIFT算法从不同类别地图像中提取视觉词汇向量,这些向量代表的是图像中的局部不变的特征点
- K-means合并,构造词汇表:将所有的特征向量合到一块,利用K-means算法合并词义相近的视觉词汇,构造一个包含k个词汇的词汇表
- 统计单词表中每个单词在图像中出现的次数,从而将图像表示成一个数值向量
准确率 = TP / TP + FP (在预测为真的样本中,真实正例的概率)
召回率 = TP / TP + FN(在真实正例中,预测为真的样本的概率)
对象检测
- 找到一个HOG模板并用作过滤器
- 滑动窗口+HOG特征
- 窗口大小
- 做多尺度滑动窗口
- 创造特征金字塔
- 视觉词汇表
- 将对象表示为可变性零件集合,每个零件代表局部特征
- 检测得分定义为全局和部分(零件)的得分之和减去每个零件变形成本之和
- 滑动窗口+全局和部分滤波器
- 累计整体和零件评分,并对变形零件进行惩罚
DPM
方法:手动选择一组零件,为每个零件训练的特定检测器
优:
- 零件具有直观的含义
- 标准检测方法可用于每个零件
- 适用于特定类别
缺:
- 需要手动选择零件
- 语义驱动的部分有时没有简单的外观分布
- 不能保证某些重要的部分没有被遗漏
- 当切换到另一个类别时,必须从头开始重建模型