这里写自定义目录标题

  • 传统图像分类算法的原理
  • (1) 数据集的处理
  • (2)图像特征提取
  • (3)训练分类器
  • (4)图像分类

图像分类,顾名思义,就是输入一张图像,输出对该图像内容分类的描述的问题。它是计算机视觉的核心,实际应用广泛。

图像分类的传统方法是特征描述及检测,这类传统方法可能对于一些简单的图像分类是有效的,但由于实际情况非常复杂,传统的分类方法不堪重负。

传统图像分类算法的原理

(1)输入图像数据集
(2)图像预处理
(3)特征提取
(4)训练分类器
(5)图像分类识别
以上就是图像分类算法的基本步骤。
接下来,就挨个来介绍每一步的处理。

(1) 数据集的处理

首先,数据集分为两类:训练集和测试集。训练集,顾名思义,就是让计算机去学习数据的特征。在训练集中,图像是已经分类好且标注了标签的数据集,而在测试集中,是包含各类图像的。如下图所示:

该图就是一个数据训练集的制作


上图就是对需要分类的图像的测试集
在制作好数据集之后,接下来就是对数据的预处理,其中包括图像归一化、调整图像尺寸、图像去噪等一系列的可以增强图像质量的一些图像处理操作,这些预处理同样是为了让计算机能够更好的学习数据的特征,从而不被一些不必要的干扰模糊。

(2)图像特征提取

众所周知,计算机不认识图像,只认识数字。为了使计算机能够“理解”图像,从而具有真正意义上的“视觉”,所以我们要研究如何从图像中提取有用的数据或信息,得到图像的“非图像” 的表示或描述,如数值、向量和符号等。这一过程就是特征提取,而提取出来的这些“非图像”的表示或描述就是特征。有了这些数值或向量形式的特征我们就可以通过训练过程教会计算机如何懂得这些特征, 从而使计算机具有识别图像的本领。
所谓图像特征,就是是某一类对象区别于其他类对象的相应(本质)特点或特性, 或是这些特点和特性的集合。特征是通过测量或处理能够抽取的数据。对于图像而言, 每一幅图像都具有能够区别于其他类图像的自身特征,有些是可以直观地感受到的自然特征,如亮度、边缘、纹理和色彩等;有些则是需要通过变换或处理才能得到的, 如矩、直方图以及主成份等。
这里,就引出了一个新的名词——特征向量,我们常常将某一类对象的多个或多种特性组合在一起, 形成一个特征向量来代表该类对象,如果只有单个数值特征,则特征向量为一个一维向量,如果是n个特性
的组合,则为一个n维特征向量。该类特征向量常常作为识别系统的输入。实际上,一个n维特征就是位于n维空间中的点,而识别分类的任务就是找到对这个n维空间的一种划分。
在特征提取时,通常会根据各类图像的特点,选取出最佳的特征提取算法。接下来,就介绍几种常见的特征提取算法。

  1. LBP特征提取

(1)原理
LBP:全名为局部二值模式,是Local Binary Patterns的缩写形式,最开始研究这个算法的初衷是来帮助图像做局部对比度的,用现在的话说就是描述图像的纹理,但它作为描述子来说,却不是在各方面都能发挥到极致的一个特征描述子。当然,它也有自己的优点,比如快速简单易实现,对于图像的强度以及光强弱的变化也能保持不变。LBP的计算思维是利用结构化的思想提取图像划分的每个区域的特征,再将每个区域统计起来,作为最终图像特征的提取。
在早期,LBP算子是被定义在了3*3的区域,以这个区域的中心像素为标准值,让与它相邻的8个灰度值与其相比较(具体比较方法如图2.1所示),结果就会有一个8位的二进制数,一般还会有一个步骤就是再将它转化为十进制数也就是LBP码,即得到了该区域的LBP值,同时这个值也就反映了这个区域的纹理信息。
(2)提取基本步骤
①首先把要提取特征的图像划分为16*16的区域;
②然后对于每个区域中的一个像素,通过上述所提到的获取LBP值的方法得到该区域中心像素的LBP值;
③继而根据此值来计算每部分的直方图,也就是每个数字的出现次数,然后用归一化处理直方图;
④最后将每一部分所得到的直方图衔接成一个特征向量,也就是整幅图的LBP纹理特征向量;
⑤最后便可利用分类算法来进行分类了。

  1. HOG特征提取
    (1)主要思想
    hog特征,即方向梯度直方图。是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。它的主要思想是在一副图像中,局部目标的表象和形状(appearance and shape)能够被梯度或边缘的方向密度分布很好地描述。
    (2)实现方法

①将一个image(你要检测的目标或者扫描窗口)灰度化(将图像看做一个x,y,z(灰度)的三维图像);
②采用Gamma校正法对输入图像进行颜色空间的标准化(归一化);目的是调节图像的对比度,降低图像局部的阴影和光照变化所造成的影响,同时可以抑制噪音的干扰;
③计算图像每个像素的梯度(包括大小和方向);主要是为了捕获轮廓信息,同时进一步弱化光照的干扰。
④将图像划分成小cells(例如66像素/cell);
⑤统计每个cell的梯度直方图(不同梯度的个数),即可形成每个cell的descriptor;
⑥将每几个cell组成一个block(例如3
3个cell/block),一个block内所有cell的特征descriptor串联起来便得到该block的HOG特征descriptor。
⑦将图像image内的所有block的HOG特征descriptor串联起来就可以得到该image(你要检测的目标)的HOG特征descriptor了。这个就是最终的可供分类使用的特征向量了。
Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。

(3)训练分类器

模式识别分类问题是根据待分类的事物所呈现出来的一些特性,将它归到与其特性相似的种类当中去。具体实现过程如下:
(1) 创建训练数据集,并且要知道训练集中每个数据的分类标签;
(2) 根据已知的这些前提,寻找相应的函数或者准则来判断,并设计该判决函数模型;
(3) 对于函数模型中的参数应由训练集中的数据来确定;
(4) 模型确定好之后,利用相应的函数或准则取判定待分类的数据应属于哪一类.
从上述内容可以看出,对待分类的对象做出正确分类就是分类器要讨论的问题,接下来本章节将主要介绍关于分类器的问题。
简单来说就是,将提取到的数据集的特征送入到分类器中去学习,得到自己所需要的模型。
在实践中最常用到的分类器为SVM分类器、KNN等。

(4)图像分类

当分类器训练好之后,就可以开始对需要待分类的图像进行分类识别了。一般情况下,如果想确定自己所训练的分类器性能好坏时,我们测试集的图片不能过少,否则无法判断模型性能。

传统图像分类算法总结相关推荐

  1. 基于卷积神经网络的垃圾图像分类算法

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 垃圾分类作为资源回收利用的重要环节之一, 可以有效地提高资源回收利 ...

  2. 最先进的图像分类算法:FixEfficientNet-L2

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 FixEfficientNet 是一种结合了两种现有技术的技术:来 ...

  3. 【深度学习】最先进的图像分类算法:FixEfficientNet-L2

    FixEfficientNet 是一种结合了两种现有技术的技术:来自 Facebook AI 团队的 FixRes [2] 以及由 Google AI 研究团队首先提出的EfficientNet [3 ...

  4. elm分类器功能_基于ELM的图像分类算法研究

    基于ELM的图像分类算法研究 摘要:近年来,机器人科技应用越来越广泛,其核心原理就是利用计算器对外界传感器得到的图像进行内容分析.在获得相应的信息后,对数字化后的有用信息进行处理.根据处理结果,作出决 ...

  5. Interview:算法岗位面试—10.29下午上海某电子(偏传统ML算法,外企)数据结构算法+晚上国内某保险公司(偏AI算法,世界500强)技术面试之分类算法、回归算法、聚类算法等细节考察

    ML岗位面试:10.29下午上海某电子(偏传统ML算法,外企)数据结构算法+晚上国内某保险公司(偏AI算法,世界500强)技术面试之分类算法.回归算法.聚类算法等细节考察 Interview:算法岗位 ...

  6. 图像分类算法_图像分类算法优化技巧:Bag of Tricks for Image Classification

    关注微信公众号:人工智能前沿讲习,重磅干货,第一时间送达 论文复现对很多人而言难度都比较大,因为常常涉及很多细节,部分细节对于模型效果影响很大,但是却很少有文章介绍这些细节,前段时间正好看到这篇文章, ...

  7. [Python人工智能] 十.Tensorflow+Opencv实现CNN自定义图像分类案例及与机器学习KNN图像分类算法对比

    从本专栏开始,作者正式开始研究Python深度学习.神经网络及人工智能相关知识.前一篇详细讲解了gensim词向量Word2Vec安装.基础用法,并实现<庆余年>中文短文本相似度计算及多个 ...

  8. 基于svm图像分类C语言,基于SVM的图像分类算法与实现.PDF

    , ( ) 计算机工程与应用 40 ComputerEngineeringandApplications 基于SVM的图像分类算法与实现 张淑雅 赵一鸣 李均利 , , , , ZHANGShu-ya ...

  9. KNN 算法--图像分类算法

    KNN 算法–图像分类算法 找到最近的K个邻居,在前k个最近样本中选择最近的占比最高的类别作为预测类别. 给定测试对象,计算它与训练集中每个对象的距离. 圈定距离最近的k个训练对象,作为测试对象的邻居 ...

最新文章

  1. linux 运行lua脚本语言,你知道在linux下搭建lua脚本语言的编程环境?
  2. 从C语言的角度重构数据结构系列(八)-数据结构堆知识超级丑数
  3. 傅里叶变换表_Numpy库小抄表!主要语法和代码都在这里啦
  4. 使用xtrabackup(innobackupex)实现MySQL的热备
  5. python自加_浅谈:为什么python没有自增运算符?
  6. hyper-v 安装centos7 后,虚拟机无法访问网络。
  7. java开发的windows程序工作机制_Windows程序运行原理及程序编写流程
  8. c语言冒泡排序的两种实现方式,c语言中冒泡排序的实现原理是什么?
  9. 如何使用Vectorworks Vision 2020将场景另存为图像
  10. js富文本转换html,JS解析富文本中的html实体符号
  11. 12.30天自动登陆
  12. 《暖暖环游世界》:突破女性休闲游戏的商业化局限
  13. mapbox-gl加载带环境贴图白模(视频)
  14. import javax.jws 出错
  15. python中的screen blit_什么是python中的surface.blit()函数?它有什么作用?这个怎么运作?...
  16. 2021-04-06-MSF之永恒之蓝
  17. 关于VERIFY_OCTAL_PERMISSIONS权限检查
  18. 用 Silverlight 开发围棋在线对弈程序(一)UI 雏形
  19. 27m3氨基酸发酵反应釜设计
  20. 《Windows》Windows系统如何重启资源管理器

热门文章

  1. bcm4360网卡linux驱动,archlinux bcm4360 无线网卡驱动
  2. Validform验证控件使用
  3. 统计二叉树中叶子节点的数目(数组实现)
  4. 我在51sap学习过程中经常遇到的一些实施问题
  5. 对工具的探索 - 对工具、工作流、自动化的杂思
  6. Python零基础学习 | 分享一个使用Python画出太极阴阳八卦图的代码
  7. 对话系统 | (6) 医疗健康领域的短文本理解
  8. java 夏令时区_土耳其的Java时区(拒绝夏令时)
  9. linux一些意想不到的题
  10. 2021 Google Developer Summit 中国开发者大会-主场内容