https://m.toutiao.com/is/Dd6w2vG/ 在计算机视觉领域,特征提取是一种常见的技术,用于从图像或视频中提取出有用的信息。以下全文通过介绍特征提取常用的算法进行介绍: 特征提取 是指从原始数据中提取出有用的特征,以便于进行后续的处理和分析,特征提取一般包含特征点检测和描述子计算两个过程。 特征点检测 是计算机视觉中的一个重要步骤,它是指在图像中检测出具有显著变化的位置,如角点、边缘等,这些位置被称为特征点。特征点检测广泛应用到目标匹配、目标跟踪、三维重建等应用中,在进行目标建模时会对图像进行目标特征的提取,常用的有颜色、角点、特征点、轮廓、纹理等特征。 描述子 是计算机视觉中的一种特征提取方法,用于描述图像中的特征点。描述子是一种向量,可以用来表示图像中的一个局部区域,通常用于目标检测、图像匹配等任务。描述子可以分为浮点型和二进制型两类,前者的优点是更精确,后者的优点是速度更快。 常见的特征提取算法 主成分分析(PCA) 线性判别分析(LDA) 尺度不变特征变换(SIFT) 加速稳健特征(SURF) 方向梯度直方图(HOG) 局部二值模式(LBP) 高斯混合模型(GMM) 小波变换(Wavelet Transform) BRIEF描述子 主成分分析(PCA) 是一种降维的统计方法,它借助于一个正交变换,将其分量相关的原随机向量转化成其分量不相关的新随机向量,这在代数上表现为将原随机向量的协方差阵变换成对角形阵,在几何上表现为将原坐标系变换成新的正交坐标系,使之指向样本点散布最开的p个正交方向,然后对多维变量系统进行降维处理,使之能以一个较高的精度转换成低维变量系统,再通过构造适当的价值函数,进一步把低维系统转化成一维系统。 应用场景 主成分分析(PCA)有很多应用场景,例如: 加速机器学习算法 对数据进行预处理 用于分类问题和回归问题 根据方差自主控制特征数量 优缺点 主成分分析(PCA)是一种常用的数据降维方法,它可以将高维数据转换为低维数据,同时保留原始数据的大部分信息。 主成分分析的优点包括: ①可以减少数据的冗余性,提高数据的处理效率; ②可以消除不同变量之间的相关性,避免多重共线性问题; ③可以发现数据中的主要特征,便于后续的建模和分析; ④可以降低噪声对数据分析的影响。 主成分分析的缺点包括: ①主成分的解释其含义往往具有一定的模糊性,不如原始变量的含义那么清楚、确切; ②贡献率小的主成分往往可能含有对样本差异的重要信息,也就是可能对于区分样本的类别(标签)更有用; ③特征值矩阵的正交向量空间是否唯一有待讨论; ④无监督学习。 如何实现 基于特征值分解协方差矩阵实现PCA算法和基于SVD分解协方差矩阵实现PCA算法。其中,基于特征值分解协方差矩阵实现PCA算法的步骤如下: 去平均值(即去中心化),即每一位特征减去各自的平均值。 计算协方差矩阵。 求出协方差矩阵的特征值及对应的特征向量。 将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P。 Y=PX即为降维到k维后的数据。 线性判别分析(LDA) 是一种监督学习的降维技术,也就是说它的数据集的每个样本都是有类别输出的,这点与PCA(无监督学习)不同。LDA试图找到两类物体或事件的特征的一个线性组合,以能够特征化或区分它们。 LDA是对费舍尔的线性鉴别方法的归纳,使用统计学、模式识别和机器学习方法。 LDA可以用于分类、降维等领域。 应用场景 LDA在模式识别领域(比如人脸识别,舰艇识别等图形图像识别领域)中有非常广泛的应用。 此外,LDA还可以用来识别大规模文档集或语料库中潜藏的主题信息 优缺点 LDA是一种线性判别分析方法,它可以用于数据预处理,以减少特征的数量,就像PCA一样降维,显着降低了计算成本。LDA也可以非常有效地处理多个分类问题。 LDA算法的主要优点有: 在降维过程中可以使用类别的先验知识经验,而像PCA这样的无监督学习则无法使用类别先验知识。LDA在样本分类信息依赖均值而不是方差的时候,比PCA之类的算法较优。 LDA算法的主要缺点有: LDA不适合对非高斯分布样本进行降维,PCA也有这个问题。LDA降维最多降到类别数k-1的维数,如果我们降维的维度大于k-1,则不能使用LDA。 如何使用 如果你想使用LDA, 你需要先安装Python和一些必要的库,例如numpy、pandas、matplotlib和scikit-learn。 接下来,你需要导入数据集并将其分为训练集和测试集。 然后,你可以使用scikit-learn库中的LDA类来拟合模型并进行预测。 尺度不变特征变换(SIFT) SIFT算子是一种用于图像特征提取的算法,全称为尺度不变特征变换(Scale-invariant feature transform,SIFT)。它在尺度空间中寻找极值点,并提取出其位置、尺度、旋转不变量,此算法由 David Lowe 在1999年所发表,2004年完善总结。 应用场景 SIFT算子的应用场景包括物体辨别、机器人地图感知与导航、影响拼接、3D模型建立、手势识别、影像追踪等。 其中,物体辨别是SIFT算法最常用的应用之一,它可以在不受光照变化和尺度变化的情况下,对物体进行辨别。 优缺点 SIFT算子的优点 特征稳定,对旋转、尺度变换、亮度保持不变性,对视角变换、噪声也有一定程度的稳定性; SIFT算子的缺点 实时性不高,并且对于边缘光滑目标的特征点提取能力较弱,不够优化。如果您需要更快速的算法,可以考虑使用SURF算法。 如何使用 SIFT算法的主要步骤包括:尺度空间极值检测、关键点定位、方向确定、关键点描述和匹配。 SIFT算子与SURF算子 SIFT算子和SURF算子都是计算机视觉中的特征点检测算法。 SIFT算法是一种尺度不变的特征检测算法,对于旋转、尺度变换、亮度保持不变性,对视角变换、噪声也有一定程度的稳定性;缺点是实时性不高,并且对于边缘光滑目标的特征点提取能力较弱,不够优化。 SURF算法是SIFT算法的增强版,它的计算量小,运算速度快,提取的特征与SIFT几乎相同 SURF算子(Speeded-Up Robust Features) 是一种稳健的局部特征点检测和描述算法,是对SIFT算法的改进。SURF算法在保持SIFT算法优良性能特点的基础上,同时解决了SIFT计算复杂度高、耗时长的缺点,对兴趣点提取及其特征向量描述方面进行了改进,且计算速度得到提高。 应用场景 SURF算法的应用场景包括图像匹配、物体识别、三维重建、运动跟踪等。 SURF算法在保持SIFT算法优良性能特点的基础上,同时解决了SIFT计算复杂度高、耗时长的缺点,提升了算法的执行效率,为算法在实时计算机视觉系统中应用提供了可能。 如何使用 SURF算子的使用步骤如下: 定义SURF对象:cv2.xfeatures2d.SURF_create() 检测关键点:detector.detect(img,None) 计算描述符:kp,des = detector.compute(img,kp) 可视化关键点:cv2.drawKeypoints(img,kp,img,color=(255,0,255)) 其中,第一步是定义SURF对象,第二步是检测关键点,第三步是计算描述符,第四步是可视化关键点。 HOG特征提取算法 是一种图像特征提取算法,全称为方向梯度直方图(Histogram of Oriented Gradient),发表于2005年的CVPR。它是一种用于表征图像局部梯度方向和梯度强度分布特性的描述符,用于解决人体目标检测的图像描述子。 HOG特征描述算法主要用于物体检测和行人检测等任务。HOG特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。除此之外,HOG特征也被应用于人脸检测、车辆检测、手势识别等领域。 应用场景 行人检测:由于HOG特征能够反映人体的轮廓,并且它对图像中的人体的亮度和颜色变化不敏感,在其检测方面有优良的性能; 车辆检测:由于HOG特征对光照的不敏感、即使存在部分遮挡也可检测出来,在各种复杂的交通路和停车场所,有很好的鲁棒性; 跟踪:HOG特征在跟踪具有明显边沿轮廓的运动目标时表现良好。 优缺点 优点: 对图像几何和光学形变都保持良好的不变性; 对于刚性物体的特征提取就有良好的特性;可以忽略细微的动作而不影响检测效果。 缺点: 特征维度大(63x128图片的特征维度有3780个); 计算量大; 无法处理遮挡。 如何使用 HOG特征提取算法的主要步骤包括: 将输入样本缩放为:64 x 128,把样本图像分割为8 x 8像素的单元(cellsize),把梯度方向平均划分为9个区间(bin),在每个单元里面对所有像素的梯度方向在各个方向区间进行直方图统计,得到一个9维的特征向量,每相邻的4个单元构成一个块(blocksize),把一个块内的特征向量联起来得到36维的特征向量,用块(blocksize)对样本图像进行扫描,扫描步长(blockstride)为一个单元(cellsize)。 LBP算法 是一种用来描述图像局部特征的算子,具有灰度不变性和旋转不变性等显著优点。LBP常应用于人脸识别和目标检测中,在OpenCV中有使用LBP特征进行人脸识别的接口。 应用场景 LBP算法是一种用来描述图像局部特征的算子,常应用于人脸识别和目标检测中。LBP特征提取结果还是大小相同的一幅图像,一般都不将LBP图谱作为特征向量用于分类识别,而是采用LBP特征谱的统计直方图作为特征向量用于分类识别。 优缺点 LBP算子的优点包括: 一定程度上缓解光照变化带来的问题 具有旋转不变性 特征维度低,计算速度快 LBP算子的缺点包括: 如果光照不均匀,那么LBP值就不能反映真实的纹理特征 对方向敏感 如何使用 LBP算法的使用步骤如下: 计算图像的LBP特征图像,一般采用3×3的矩形块,有1个中心像素和8个邻域像素分别对应9个灰度值。以中心像素的灰度值为阈值,将其邻域的8个灰度值与阈值比较,大于中心灰度值的像素用1表示,反之用0表示。然后根据顺时针方向读出8个二进制值。 将LBP特征图像进行分块,OpenCV中默认将LBP特征图像分成8行8列64块区域。 计算每块区域特征图像的直方图cell_LBPH,将直方图进行归一化,直方图大小为1* numPatterns。 将上面计算的每块区域特征图像的直方图按分块的空间顺序依次排列成一行,形成LBP特征向量,大小为1 * (numPatterns*64)。 用机器学习的方法对LBP特征向量进行训练,用来检测和识别目标1。 高斯混合模型(GMM) 是一种聚类算法,它使用了高斯分布作为参数模型,并使用了期望最大(Expectation Maximization,简称EM)算法进行训练。高斯混合模型(GMM)是单一高斯概率密度函数的延伸,能够平滑地近似任意形状的密度分布。高斯混合模型种类有单高斯模型(Single Gaussian Model, SGM)和高斯混合模型(Gaussian Mixture Model, GMM)两类 应用场景 高斯混合模型(GMM)有很多应用场景,例如异常检测、推荐系统、高斯词向量、Fisher Vector等。 GMM已经在数值逼近、语音识别、图像分类、图像去噪、图像重构、故障诊断、视频分析、邮件过滤、密度估计、目标识别与跟踪等领域取得了良好的效果 优缺点 GMM的优点包括: GMM使用均值和标准差,簇可以呈现出椭圆形,优于k-means的圆形。 GMM是使用概率,故一个数据点可以属于多个簇。 GMM训练速度快,声学模型较小,容易移植到嵌入式平台。 GMM的缺点包括: 对大规模数据和多维高斯分布,计算量大,迭代速度慢。 如果初始值设置不当,收敛过程的计算代价会非常大。 容易收敛到局部最优解 如何使用 高斯混合模型(GMM)是一种概率模型,可以用于聚类和密度估计。GMM的基本思想是假设数据集中的每个样本都是由多个高斯分布随机生成的,而这些高斯分布的参数是未知的。GMM的目标是通过观测数据来估计这些参数,从而得到一个最优的高斯混合模型。 使用GMM的步骤如下: 初始化高斯分布的数量和参数。 使用EM算法来估计高斯分布的参数。 使用估计出来的高斯分布来对数据进行聚类或密度估计 BRIEF描述子 是一种二进制特征描述子,主要是通过比较中心像素点p任意邻域内的256对像素之间的差值来生成二进制描述子的 应用领域 BRIEF描述子可以应用于图像匹配、目标跟踪、三维重建等领域 优缺点 优点: 对已检测到的特征点进行描述,摒弃了区域灰度直方图描述特征点的传统方法,加快特征描述子建立速度,降低特征匹配时间。 在旋转程度较小的图像中,使用BRIEF特征描述子的匹配质量非常高,测试的大多数情况都超过了SURF,但是在旋转大于30°后,BRIEF特征描述子的匹配率快速降到0左右。 如何使用 使用BRIEF描述子的步骤如下: 在图像中检测出特征点。 对于每个特征点,计算其周围像素的灰度值,然后根据这些灰度值生成一个二进制描述子。 对于两幅图像中的特征点,使用汉明距离计算它们的相似度。 ORB算法 是一种基于FAST特征检测与BRIEF特征描述子匹配实现的算法。它在FAST特征检测的基础上,通过积分图像来进行平滑,进一步增强描述子的抗噪能力。在特征点的31x31邻域内,ORB算法产生随机点对,并以随机点为中心,取5x5的子窗口。比较两个随机点的子窗口内25个像素的大小进行编码(而不仅仅是两个随机点了)。 应用场景 ORB算法的应用场景包括图像匹配、物体识别、三维重建、运动跟踪等。 优缺点: 优点包括:鲁棒性好,计算速度快,可扩展性强 缺点包括:对遮挡敏感,对光照变化敏感,对噪声敏感。 具体来说,ORB算法在图像中检测特征点时,对于部分遮挡的区域会出现漏检的情况,影响检测效果。在图像的光照变化比较明显时,可能会出现特征点数量不稳定的情况,影响检测效果。此外,ORB算法对于图像中存在的噪声比较敏感,可能会将噪声误判为特征点,影响检测效果。 这些算法各有优缺点和应用场景。例如,LBP算法适用于人脸识别、纹理分类等领域;HOG特征提取算法适用于行人检测、车辆检测等领域;SIFT算子适用于图像匹配、物体识别等领域;SURF算子适用于图像匹配、物体识别等领域;BRIEF描述子适用于实时目标跟踪、图像拼接等领域。 |
|
来自: 山峰云绕 > 《机器学习视觉训练模式识别摄像头搜索原理》