深度学习理论——特征提取算法

article/2025/9/28 15:48:57

大家好,继续理论学习,今天介绍几种最常见的特征提取算法。

1.LBP算法(Local Binary Patterns,局部二值模式)

LBP算子是一种用来描述图像局部纹理特征的算子,具有灰度不变性。

其主要思想是在目标像素周围定义一个3x3的窗口,以目标像素为阈值,将相邻的8个像素的灰度值与目标像素进行对比,如果大于目标像素,则标记为1,如果小于等于则标记为0。这样,对每一个窗口都可以产生一个8位的二进制数。这样就得到了目标像素的LBP值。

其基本步骤为:

(1)首先将检测图像划分为16×16的小区域(cell);

(2)对于每个cell中的一个像素,将相邻的8个像素的灰度值与其进行比较,若周围像素值大于中心像素值,则该像素点的位置被标记为1,否则为0。这样,3*3邻域内的8个点经比较可产生8位二进制数,即得到该窗口中心像素点的LBP值;

(3)然后计算每个cell的直方图,即每个数字(假定是十进制数LBP值)出现的频率。然后对该直方图进行归一化处理。

(4)最后将得到的每个cell的统计直方图进行连接成为一个特征向量,也就是整幅图的LBP纹理特征向量。然后便可利用SVM或者其他机器学习算法进行分类了。

 

2.HOG特征提取算法(Histogram of Oriented Gradient,方向梯度直方图)

在一幅图像中,图像的表象和形状能够被边缘或梯度的方向密度分布很好的表示。HOG具有几何和光学不变性。

其具体步骤为:

(1)将图像灰度化(将图像看做一个x,y,z(灰度)的三维图像);

(2)采用Gamma校正法对输入图像进行颜色空间的标准化(归一化)。目的是调节图像的对比度,降低图像局部的阴影和光照变化所造成的影响,同时可以抑制噪音的干扰;

(3)计算图像每个像素的梯度(包括大小和方向)。

(4)将图像划分成小cells(例如6*6像素/cell);

(5)统计每个cell的梯度直方图(不同梯度的个数),即可形成每个cell的descriptor;

(6)将每几个cell组成一个block(例如3*3个cell/block),一个block内所有cell的特征descriptor串联起来便得到该block的HOG特征descriptor。

(7)将图像image内的所有block的HOG特征descriptor串联起来就可以得到该图像(要检测的目标)的HOG特征descriptor。这个就是最终的可供分类使用的特征向量了。

 

3.SIFT算子(Scale-invariant feature transform,尺度不变特征变换)

SIFT算子通过求一幅图中的特征点及其有关尺寸和方向的描述子得到特征并进行图像特征点匹配。具有尺度不变性和旋转不变性。

其主要步骤如下:

(1)尺度空间的生成。将图像卷积上一个高斯核,得到不同平滑程度和尺寸的图像,模拟图像数据的多尺度特征。

(2)检测尺度空间极值点。为了寻找尺度空间的极值点,每一个采样点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。如图所示,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。 一个点如果在DOG尺度空间本层以及上下两层的26个领域中是最大或最小值时,就认为该点是图像在该尺度下的一个特征点,

(3)去除不好的特征点。通过拟和三维二次函数以精确确定关键点的位置和尺度(达到亚像素精度),同时去除低对比度的关键点和不稳定的边缘响应点(因为DoG算子会产生较强的边缘响应),以增强匹配稳定性、提高抗噪声能力。

(4)为每个关键点指定方向参数。为每个特征点计算一个方向,依照这个方向做进一步的计算, 利用关键点邻域像素的梯度方向分布特性为每个关键点指定方向参数,使算子具备旋转不变性。

(5)关键点描述子的生成。以关键点为中心取8×8的窗口。在每4×4的小块上计算8个方向的梯度方向直方图,绘制每个梯度方向的累加值,即可形成一个种子点,如图右部分示。此图中一个关键点由2×2共4个种子点组成,每个种子点有8个方向向量信息。这种邻域方向性信息联合的思想增强了算法抗噪声的能力,同时对于含有定位误差的特征匹配也提供了较好的容错性。

(6)根据SIFT进行图像的匹配。生成A、B两幅图的描述子,(分别是k1*128维和k2*128维),就将两图中各个scale(所有scale)的描述子进行匹配,匹配上128维即可表示两个特征点匹配上了。

具体参考如下:

大佬写的SIFT详细链接

我们下期见!

 


http://chatgpt.dhexx.cn/article/TXegAn1T.shtml

相关文章

特征提取算法的总结

在前面的blog中,我们已经讲了SIFT的原理,这里我们再详细讲解SIFT的变体:PCA-SIFT和GLOH。 – Scale invariant feature transform (SIFT): Lowe, 2004. – PCA-SIFT: SIFT: Ke and Sukthankar 2004 Ke and Sukthankar, 2004. – Gradient l…

常见的几种图像特征提取算法

常见的几种图像特征提取算法 1. LBP算法(Local Binary Patterns,局部二值模式)2.HOG特征提取算法(Histogram of Oriented Gradient)3.SIFT算子(Scale-invariant feature transform,尺度不变特征变换) 1. LBP算法(Local…

SIFT特征提取算法实验

SIFT特征提取算法实验 SIFT特征提取算法 1.1 算法定义 1.2 SIFT特征提取算法实验: 1.3 构造数据集 检测提取感兴趣点 2.1代码实现: 2.2.绘制特征点代码分析: 提取数据集中每张图片的SIFT特征并展示 3.1实现对比: 3.2代码实现: 4.计算两张图片间的SIFT特征匹配结果 4.1匹配…

SIFT、SURF等关键点特征提取算法代码

文章目录 1.关键点特征提取算法2.SIFT代码(pythonopencv)2.SURF代码(pythonopencv)3.SIFT和SURF的比较 1.关键点特征提取算法 特征提取是提取出物体(如图片)的特征,用数学的向量、矩阵等对物体…

HOG图像特征提取算法

HOG图像特征提取算法 HOG简介HOG特点HOG计算步骤HOG参数计算HOG提取特征效果HOG代码实现 HOG简介 HOG全称:方向梯度直方图(Histogram of Oriented Gradient),发表于2005年的CVPR,是一种图像特征提取算法,和…

SURF特征提取算法详解

上一节我们已经介绍了SIFT算法,SIFT算法对旋转、尺度缩放、亮度变化等保持不变性,对视角变换、仿射变化、噪声也保持一定程度的稳定性,是一种非常优秀的局部特征描述算法。但是其实时性相对不高。 SURF(Speeded Up Robust Features)算法改进了特征了提取…

图像特征提取算法—HOG

图像特征提取算法—HOG 一 图像基本概念 1.1特征 边缘,角,区域。但不同的目的对应着的不同的特征,边缘特征,颜色特征,梯度方向分布等。 每个物体,我们总可以用一些词语或部件来描述它,比如人…

时域特征提取_EEG信号特征提取算法

点击上面"脑机接口社区"关注我们 更多技术干货第一时间送达 时域分析与频域分析 EEG信号特征提取就是以脑电信号作为源信号,确定各种参数并以此为向量组成表征信号特征的特征向量。 特征參数主要包括时域信号(如幅值)和频域信号(如频率)两大类,相应的特征提取方法也…

特征提取算法

特征提取 1、背景2、边界预处理Moore boundary tracing algorithmChain CodesFreeman Chain Codesslope chain codes (SCCs) minimum-perimeter polygon (MPP)signaturesskeletons 3、Region Feature Descriptors3.1 区域描述子和特征向量3.2 Topological Descriptors3.3 Textu…

深度学习之特征提取算法

目录 前言 二、LBP(Local Binary Patterns,局部二值模式) 三、HOG算法(Histogram of Oriented Gradient, 方向梯度直方图) 四、SIFT算子(Scale-invariant feature transform ,尺度不变特征变换) 五、H…

idea如何使用git关联远程仓库

1.git的配置 一般本地安装了git,idea会自动检索, 2.创建git本地仓库 一般以你要上传的项目为根目录 3.将文件提交至本地仓库 4.提交至远程仓库 点击VCS选择git点击push提交,第一次连接会让你输入远程仓库的地址。 我们先将github上的地…

git 将本地项目关联到远程仓库

原文链接:https://www.jianshu.com/p/2a8b4e627991 参考链接: https://blog.csdn.net/baidu_35085676/article/details/53456884 1.首先在项目目录下初始化本地仓库 git init 2.添加所有文件( . 表示所有) git add . 3.提交所有文件到本地仓库 git comm…

git创建本地仓库远程仓库,并关联。全过程

1.在网页中自己的github账号下,创建仓库project 2.在本机创建文件夹project。 进入文件夹project. (1) git init (2) git add README.md (3) git commit -m "first commit" (4) git branch -M master (5) git remote add origin https://github.co…

Git本地仓库与远程仓库关联

一、前提条件 1、本地一个仓库:本地仓库已经经过git init 初始化 2、远程一个仓库:已经存在了一个远程的仓库 3、GitHub已经添加了SSH Keys 二、建立远程与本地仓库的关联 本地仓库与远程仓库关联有两种方法,一种是通过IDE(比…

使用git命令,本地仓库关联到远程仓库

本地仓库关联到远程: 创建成功会得到一个url地址和git全局设置的两行命令,下面从本地链接远程时会用到。 git config --global user.name "你的用户名" git config --global user.email "你的邮箱" 2、选择本地文件夹,在…

git关联两个远程仓库,一个仓库(github)拉取代码,另一个仓库(gitlab)推送代码

有这种情况,小伙伴们在github上下载的开源项目(该开源项目还在继续开发维护),然后自己下载下来进行二次开发,然后又要把项目推送自己的gitlab私服上,这个时候不得不本地代码关联两个远程仓库。接下来我将一…

IDEA本地项目关联远程Git远程仓库

IDEA本地项目关联远程Git远程仓库 下面介绍几种方法: 一、代码 clone 到本地 这种方法是直接 clone 代码,这样不需要在手动关联仓库。 1、本地创建空白文件夹 2、右键 Git Bash Here 打开控制台 3、直接 clone 远程仓库的代码 git clone 远程地址&…

如何简单的在IDEA中关联git远程仓库

在IDEA中关联远程仓库有许多的方法,那么在这呢我教大家一种简单的方法。 那么在开始之前呢,需要大家在你自己的电脑上安装git,并且在Gitee上创建自己的仓库。 同时IDEA中需要下载Gitee的插件 那么我在这也创建好了一个测试仓库 点击黄色的…

关于GIT怎么将本地仓库和远程仓库进行关联

1 首先在本地创建一个和远程仓库一样的文件夹(直接在git的命令界面中就能创建,git命令界面貌似大部分的linux的命令都能用) 2 由于是一个空文件要让git认识需要初始化,初始化命令:git init ,会在在nihao中会出现一个.git的文件 3 初始化完成后…

本地项目关联远程 git 仓库

用了几年 git 来管理代码,除了常用的提交代码的一些指令,其他的每次用到都需要查一次资料,这样很麻烦。最近有一个新项目需要关联远程仓库,我自己也整理了一下。 安装 Git:官网 下面介绍几种方法: 一、代…