百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

图像识别(四):图像特征选择与提取

bigegpt 2024-08-19 12:05 32 浏览

图像特征的提取和选择是图像处理过程中最重要的环节之一,对后续图像分类有着重要的影响,并且对于图像数据具有样本少,维数高的特点,要从图像中提取有用的信息,必须对图像特征进行降维处理,特征提取与特征选择就是最有效的降维方法,其目的是得到一个反映数据本质结构、识别率更高的特征子空间 。

图像特征提取的主要算法有,HOG、LBP、HAAR、SIFT、SURF、ORB等。

一、向梯度直方图特征(HOG)

方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述器。它的主要思想是获取图像的轮廓信息,通过计算和统计图像局部区域的梯度方向直方图来构成特征。其主要的提取过程如下:

(1) 首先将一个图像灰度化,看做一个x,y,z的三维图像,采用Gamma校正法对输入图像进行颜色空间的标准化,其目的是为了调节图像的对比度,降低图像局部的阴影和光照变化所造成的影响,抑制噪音干扰。

(2) 计算图像每个像素的梯度,获取图像的轮廓信息。

(3) 将图像划分为多个子区域(cell),并统计每个cell的梯度直方图,即获得每个cell的descriptor。

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

(5) 将图像内的所有block的HOG特征descriptor串联起来就可以得到该图像的HOG特征descriptor了,即最终的可供分类使用的特征向量。

目前Hog特征结合SVM分类器已经被广泛应用于图像识别中。


二、局部二值模式特征(LBP)

局部二值模式(Local Binary Pattern,LBP)是一种用来描述图像局部纹理特征的算子。它具有旋转不变性和灰度不变性等显著的优点。原始的LBP算子定义为在3*3的窗口内,以窗口中心像素为阈值,将相邻的8个像素的灰度值与其进行比较,若周围像素值大于中心像素值,则该像素点的位置被标记为1,否则为0。这样,3*3邻域内的8个点经比较可产生8位二进制数,即得到该窗口中心像素点的LBP值,并用这个值来反映该区域的纹理信息。

但是直接对两幅图片按此方法提取的特征进行判别分析,很可能会因为“位置没有对准”而产生较大的误差。后来研究人员发现,可以将一幅图片划分为若干的子区域,对每个子区域内的每个像素点都提取LBP特征,然后,在每个子区域内建立LBP特征的统计直方图。如此一来,每个子区域,就可以用一个统计直方图来进行描述,整个图片就由若干个统计直方图组成。其主要的提取过程如下:

(1) 将图像划分为16*16的子区域(cell)。

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

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

(4) 将得到的每个cell的统计直方图进行连接成为一个特征向量,也就是整幅图的LBP纹理特征向量。

三、Haar-like特征

Haar-like特征最早是由Papageorgiou等应用于人脸表示,Viola和Jones在此基础上,使用三种类型四种形式的特征。Haar-like特征是很简单,特征可分为几类,如两矩形特征、三矩形特征、对角特征。后来,还加入了边缘特征、线特征、中心环绕特征等。使用积分图可以加速计算特征。最后,使用集成的方法Adaboost进行训练。Haar特征只是使用特征模板,计算图像颜色的深浅模式,模板以不同的大小和位置在子图像中滑动,计算出特征值来,交给boost分类器。Haar与LBP有一些相似之处,都是灰度差。


四、SIFT特征

SIFT特征提取的关键点是角点,在不同的尺度空间上查找关键点(特征点),并计算出关键点的方向。SIFT所查找到的关键点是一些十分突出、不会因光照、仿射变换和噪音等因素而变化的点,如角点、边缘点、暗区的亮点及亮区的暗点等。它通过构建高斯金字塔,保证图像在任何尺度都能有对应的特征点,即保证尺度不变性。为了实现旋转不变性,需要根据检测到的关键点的局部图像结构为特征点赋值,具体做法是用梯度方向直方图。关键点描述器不仅包括关键点,还包括关键点周围对其有贡献的像素点。为了保证旋转不变性,要以特征点为中心,在附近领域内旋转θ角(即旋转为特征点的方向),然后计算采样区域的梯度直方图,形成n维SIFT特征矢量。特征向量形成后,为了去除光照变化的影响,需要对它们进行归一化处理。

HOG、LBP、HAAR等提取的是面的信息,是描述一块区域的特征,这些特征可以用于人脸、人体等物体识别。SIFT、SURF、ORB等提取的是关键点的信息,可以用于表示某些图像的细节,可用于图像匹配和三维建模等算法。

五、SURF算法

SURF(Speeded-Up Robust Features)加速稳健特征,是一种稳健的局部特征点检测和描述算法。SURF是对SIFT算法的改进,该算子在保持 SIFT 算子优良性能特点的基础上,同时解决了 SIFT 计算复杂度高、耗时长的缺点,提升了算法的执行效率,为算法在实时计算机视觉系统中应用提供了可能。

SURF算法与SIFT算法在很多方面都有较大差异。

在生成尺度空间方面,SIFT中下一组图像的尺寸是上一组的一半,同一组间图像尺寸一样,但是所使用的高斯模糊系数逐渐增大。而在SURF中,不同组间图像的尺寸都是一致的,但不同组间使用的盒式滤波器的模板尺寸逐渐增大,同一组间不同层间使用相同尺寸的滤波器,但是滤波器的模糊系数逐渐增大。

在特征点检验时,SIFT算子是先对图像进行非极大值抑制,再去除对比度较低的点。然后通过Hessian矩阵去除边缘的点。SURF算法是先通过Hessian矩阵来检测候选特征点,然后再对非极大值的点进行抑制。

在特征向量的方向确定上,SIFT算法是在正方形区域内统计梯度的幅值的直方图,找到最大梯度幅值所对应的方向。SIFT算子确定的特征点可以有一个或一个以上方向,其中包括一个主方向与多个辅方向。SURF算法则是在圆形邻域内,检测各个扇形范围内水平、垂直方向上的Haar小波响应,找到模值最大的扇形指向,且该算法的方向只有一个。

(4)SIFT算法生成描述子时,是将16x16的采样点划分为4x4的区域,从而计算每个分区种子点的幅值并确定其方向,共计4x4x8=128维。SURF算法在生成特征描述子时将的正方形分割成4x4的小方格,每个子区域25个采样点,计算小波haar响应,一共4x4x4=64维。

综上,SURF算法在各个步骤上都简化了一些繁琐的工作,仅仅计算了特征点的一个主方向,生成的特征描述子也与前者相比降低了维数。

六、ORB算法

ORB 是 Oriented Fast and Rotated Brief 的简称,可以用来对图像中的关键点快速创建特征向量,这些特征向量可以用来识别图像中的对象。

其中,Fast和Brief 分别是特征检测算法和向量创建算法。ORB 首先会从图像中查找特殊区域,称为关键点。关键点即图像中突出的小区域,比如角点,比如它们具有像素值急剧的从浅色变为深色的特征。然后 ORB 会为每个关键点计算相应的特征向量。ORB 算法创建的特征向量只包含 1 和 0,称为二元特征向量。1 和 0 的顺序会根据特定关键点和其周围的像素区域而变化。该向量表示关键点周围的强度模式,因此多个特征向量可以用来识别更大的区域,甚至图像中的特定对象。

ORB 的特点是速度非常快,而且在一定程度上不受噪点和图像变换的影响,例如旋转和缩放变换等。



喜欢本文的话,欢迎关注活在信息时代哦:)

相关推荐

悠悠万事,吃饭为大(悠悠万事吃饭为大,什么意思)

新媒体编辑:杜岷赵蕾初审:程秀娟审核:汤小俊审签:周星...

高铁扒门事件升级版!婚宴上‘冲喜’老人团:我们抢的是社会资源

凌晨两点改方案时,突然收到婚庆团队发来的视频——胶东某酒店宴会厅,三个穿大红棉袄的中年妇女跟敢死队似的往前冲,眼瞅着就要扑到新娘的高额钻石项链上。要不是门口小伙及时阻拦,这婚礼造型团队熬了三个月的方案...

微服务架构实战:商家管理后台与sso设计,SSO客户端设计

SSO客户端设计下面通过模块merchant-security对SSO客户端安全认证部分的实现进行封装,以便各个接入SSO的客户端应用进行引用。安全认证的项目管理配置SSO客户端安全认证的项目管理使...

还在为 Spring Boot 配置类加载机制困惑?一文为你彻底解惑

在当今微服务架构盛行、项目复杂度不断攀升的开发环境下,SpringBoot作为Java后端开发的主流框架,无疑是我们手中的得力武器。然而,当我们在享受其自动配置带来的便捷时,是否曾被配置类加载...

Seata源码—6.Seata AT模式的数据源代理二

大纲1.Seata的Resource资源接口源码2.Seata数据源连接池代理的实现源码3.Client向Server发起注册RM的源码4.Client向Server注册RM时的交互源码5.数据源连接...

30分钟了解K8S(30分钟了解微积分)

微服务演进方向o面向分布式设计(Distribution):容器、微服务、API驱动的开发;o面向配置设计(Configuration):一个镜像,多个环境配置;o面向韧性设计(Resista...

SpringBoot条件化配置(@Conditional)全面解析与实战指南

一、条件化配置基础概念1.1什么是条件化配置条件化配置是Spring框架提供的一种基于特定条件来决定是否注册Bean或加载配置的机制。在SpringBoot中,这一机制通过@Conditional...

一招解决所有依赖冲突(克服依赖)

背景介绍最近遇到了这样一个问题,我们有一个jar包common-tool,作为基础工具包,被各个项目在引用。突然某一天发现日志很多报错。一看是NoSuchMethodError,意思是Dis...

你读过Mybatis的源码?说说它用到了几种设计模式

学习设计模式时,很多人都有类似的困扰——明明概念背得滚瓜烂熟,一到写代码就完全想不起来怎么用。就像学了一堆游泳技巧,却从没下过水实践,很难真正掌握。其实理解一个知识点,就像看立体模型,单角度观察总...

golang对接阿里云私有Bucket上传图片、授权访问图片

1、为什么要设置私有bucket公共读写:互联网上任何用户都可以对该Bucket内的文件进行访问,并且向该Bucket写入数据。这有可能造成您数据的外泄以及费用激增,若被人恶意写入违法信息还可...

spring中的资源的加载(spring加载原理)

最近在网上看到有人问@ContextConfiguration("classpath:/bean.xml")中除了classpath这种还有其他的写法么,看他的意思是想从本地文件...

Android资源使用(android资源文件)

Android资源管理机制在Android的开发中,需要使用到各式各样的资源,这些资源往往是一些静态资源,比如位图,颜色,布局定义,用户界面使用到的字符串,动画等。这些资源统统放在项目的res/独立子...

如何深度理解mybatis?(如何深度理解康乐服务质量管理的5个维度)

深度自定义mybatis回顾mybatis的操作的核心步骤编写核心类SqlSessionFacotryBuild进行解析配置文件深度分析解析SqlSessionFacotryBuild干的核心工作编写...

@Autowired与@Resource原理知识点详解

springIOCAOP的不多做赘述了,说下IOC:SpringIOC解决的是对象管理和对象依赖的问题,IOC容器可以理解为一个对象工厂,我们都把该对象交给工厂,工厂管理这些对象的创建以及依赖关系...

java的redis连接工具篇(java redis client)

在Java里,有不少用于连接Redis的工具,下面为你介绍一些主流的工具及其特点:JedisJedis是Redis官方推荐的Java连接工具,它提供了全面的Redis命令支持,且...