技术标签: 机器视觉
前言:特征提取(feature extraction)是计算机视觉和图像处理中的一个概念。它指的是使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征。特征提取的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点、连续的曲线或者连续的区域。
案:理解特征提取就是获取依据需求,来获取图像的独有特征值。或者,是将具有相同特质的图像分解的模块进行分类和归类。
特征是一个“有趣”的部分,它是许多计算机图像分析算法的起点。因此一个算法是否成功往往由它使用和定义的特征决定。因此特征提取最重要的一个特性是“可重复性”:同一场景的不同图像所提取的特征应该是相同的。
特征提取是图象处理中的一个初级运算,也就是说它是对一个图像进行的第一个运算处理。它检查每个像素来确定该像素是否代表一个特征。假如它是一个更大的算法的一部分,那么这个算法一般只检查图像的特征区域。作为特征提取的一个前提运算,输入图像一般通过高斯模糊核在尺度空间中被平滑。此后通过局部导数运算来计算图像的一个或多个特征。
有时,假如特征提取需要许多的计算时间,而可以使用的时间有限制,一个高层次算法可以用来控制特征提取阶层,这样仅图像的部分被用来寻找特征。由于许多计算机图像算法使用特征提取作为其初级计算步骤,因此有大量特征提取算法被发展,其提取的特征各种各样,它们的计算复杂性和可重复性也非常不同。
边缘是组成两个图像区域之间边界(或边缘)的像素。一般一个边缘的形状可以是任意的,还可能包括交叉点。在实践中边缘一般被定义为图像中拥有大的梯度的点组成的子集。一些常用的算法还会把梯度高的点联系起来来构成一个更完善的边缘的描写。这些算法也可能对边缘提出一些限制。局部地看边缘是一维结构。
角是图像中点似的特征,在局部它有两维结构。早期的算法首先进行边缘检测,然后分析边缘的走向来寻找边缘突然转向(角)。后来发展的算法不再需要边缘检测这个步骤,而是可以直接在图像梯度中寻找高度曲率。后来发现这样有时可以在图像中本来没有角的地方发现具有同角一样的特征的区域。
与角不同的是区域描写一个图像中的一个区域性的结构,但是区域也可能仅由一个像素组成,因此许多区域检测也可以用来检测角。一个区域监测器检测图像中一个对于角监测器来说太平滑的区域。
区域检测可以被想象为把一张图像缩小,然后在缩小的图像上进行角检测。
长条形的物体被称为脊。在实践中脊可以被看作是代表对称轴的一维曲线,此外局部针对于每个脊像素有一个脊宽度。从灰梯度图像中提取脊要比提取边缘、角和区域困难。在空中摄影中往往使用脊检测来分辨道路,在医学图像中它被用来分辨血管。
特征被检测后它可以从图像中被抽取出来。这个过程可能需要许多图像处理的计算机。其结果被称为特征描述或者特征向量。
特征提取和特征选择都是从原始特征中找出最有效(同类样本的不变性、不同样本的鉴别性、对噪声的鲁棒性)的特征
特征提取:将原始特征转换为一组具有明显物理意义(Gabor、几何特征[角点、不变量]、纹理[LBP HOG])或者统计意义或核的特征
特征选择:从特征集合中挑选一组最具统计意义的特征,达到降维
两者作用:
1 减少数据存储和输入数据带宽;
2 减少冗余;
3 低纬上分类性往往会提高;
4 能发现更有意义的潜在的变量,帮助对数据产生更深入的了解。
1. 统计样本集中文档总数(N)。
2. 统计每个词的正文档出现频率(A)、负文档出现频率(B)、正文档不出现频率)、负文档不出现频率。
3.计算每个词的卡方值。
4.将每个词按卡方值从大到小排序,选取前k个词作为特征,k即特征维数。
1. 统计正负分类的文档数:N1、N2。
2. 统计每个词的正文档出现频率(A)、负文档出现频率(B)、正文档不出现频率)、负文档不出现频率。
3. 计算信息熵
4. 计算每个词的信息增益
5. 将每个词按信息增益值从大到小排序,选取前k个词作为特征,k即特征维数。
根据对图像信息处理的方法不同,特征点检测一般分为:
基于模板的方法主要是利用参数模型或模板来进行检测特征点的工作。因为需要构建各种不同的参数模型或模板,所以通常用于检测具备特定类型的特征点,计算速度一般较快。缺点是不适合用于形式比较复杂的模板。
基于边缘的方法是把多边形的顶点,或曲率变化较大的物体边缘上的点作为特征点。因为特征点是物体边缘的集合,因此一定程度上对边缘的提取算法要求很高,如果边缘定位出现偏差,就会对检测结果造成很大的影响。
基于灰度的方法是利用像素点灰度的局部变化来进行探测,特征点是建立在某种算法上,在该算法上灰度变化最大的像素点。可以利用微分运算来求取像素点周围灰度的导数,以此求出特征点的位置,该方法的缺点是噪声比较大。
基于空间变换的方法利用空间变换获取特性比较容易辨识的特征点,然后在变换空间中进行极值点的检测。通常空间分为尺度空间、频率空间、小波空间等。尺度空间是指在曲率尺度空间或在DOG尺度空间,将搜索到的绝对值最小或最大的点作为特征点。频率空间是将计算得到的局部相位或特定相位最大值当做特征点。小波变换是利用小波系数或模的局部极大值,利用最佳尺度进行极值点检测。
Reference:
1 百度 https://baike.baidu.com/item/%E7%89%B9%E5%BE%81%E6%8F%90%E5%8F%96/8827539?fr=aladdin
2 特征点提取算法列表 https://blog.csdn.net/sinat_31337047/article/details/69791756
3 ORB(FAST+BRIEF)特征提取与实现——特征点提取算法分析
https://blog.csdn.net/qq_32998593/article/details/79221641
4 【opencv】特征点检测方法--GFTT,SIFT,FAST,SURF
https://blog.csdn.net/u010141025/article/details/16920567
文章浏览阅读3.4k次,点赞3次,收藏11次。小程序的架构 小程序分为两个主要部分:view模块和service模块。View模块负责UI展示,它由wxml和wxss转换后的代码以及微信提供的辅助模块组成。一个view模块对应一个webview组件,小程序支持多个view存在,view模块通过微信jsbridge对象来跟后台通信。 小程序的限制和对测试的影响目前小程序在UI、设计、样式、页面跳转、消息大小等都有自..._小程序前端压测
文章浏览阅读2w次,点赞13次,收藏38次。一、首先确保已经安装好MySQL,如果还没有安装也没关系,可以参考:https://blog.csdn.net/beyond_f4/article/details/79894234二、windows下win+R键入cmd进入命令窗口输入mysql -uroot -p,提示输入密码,输入后进入mysql界面三、创建数据库输入create database wltx ;创建数据库(wltx为数据库名)..._mysql如何使用窗口创建数据库
文章浏览阅读5.3k次,点赞13次,收藏84次。什么的消息队列?为什么使用消息队列?如何使用RabbitMQ?看这篇就够了_绝对详细的 rabbitmq入门,看完本系列就够了
文章浏览阅读8k次,点赞4次,收藏12次。对于N*N的矩阵A,对于任意i和j(N-1>i>=0 && N-1>j>=0),如果Aij=Aji那么,就称矩阵A是对称矩阵。以矩阵对角线为分界线,矩阵A分为上三角和下三角。如下图:由对称矩阵的性质,存储对称矩阵时,只需要存储对称矩阵的上三角或下三角就可以了(压缩存储),最多存储N*(N+1)/2个数据。对称矩阵和压缩存储的对应关系:下三角存储i>=j, SymmetricMat_对称矩阵压缩存储列优先公式
文章浏览阅读2.6k次,点赞2次,收藏29次。这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入OSPF单区域(PPP及广播网络)的基本配置只配置了静态NAT和动态NAT,未配置Easy IP未配置配置LSW1L_华为模拟器目的nat 访问http失败
文章浏览阅读265次。LED灯数字变换要改变的笔画数目。。最烦这种题了。。一个个情况都要罗列一遍。。#include<bits/stdc++.h>using namespace std;int a[10] = { 6,2,5,5,4,5,6,3,7,6 };int Cal( int x ){ if ( x%7==0 ) return x/7; else ..._2018杭电acm集训队单人排位赛 hdu
文章浏览阅读4.9k次,点赞6次,收藏11次。注意区分Scanner类中的获取输入字符串的两种方法:next() 和 nextLine()next()nextLine()一定要读取到有效字符后才可以结束输入以Enter回车键作为结束符有效字符前的空格会自动忽略返回输入回车之前的所有字符有效字符后的空格会被作为结束符可以获得空白字符串综上,next()不能得到带有空格的字符串综上,nextLine()可以得到有空格的字符串使用next()import java.util.Scanner;p_scanner读取字符
文章浏览阅读83次。开始在实验室服务器上安装Xen 4.0版本,需要更新Linux内核(服务器RHEL内核版本为2.6.18-128.el5,而安装时需要2.6.31.8版本)。安装完毕后,启动时找不到启动文件,原来是启动引导文件grub.conf出错。想着进入linux rescue模式救活,但是,原来的2.6.18-128.el5的内核又被我删除了,新的版本又进不去,前后都无法动弹,真是麻烦。忙会了一天,今天早上..._linux改了grup.cfg后怎么还原
文章浏览阅读908次。https://github.com/kyleduo/SwitchButton这是git地址,类似这种自定义控件的第三方,我们最好不要直接依赖应用,因为一方面jar包导多了会出现一些没必要的问题,也会增加项目大小,我们可以下载下来直接复制到项目中。把所缺少的资源全部复制好之后,我们直接运用这个控件,设置好他的属性<social.milin.tech.switchbutton.S..._wpf开关按钮源码
文章浏览阅读665次。在实际工作中的例子:(XXX项目,流水号部分)@Override public long quaryNum(String ids) { StringBuffer sb = new StringBuffer(); sb.append("SELECT LST_SERIAL_NUMBER FROM (SELECT LST_SERIAL_NUMBER FROM EC_WJB_JTC_LIST where LST_SERIAL_NUMBER like '"); sb.append(ids); s_锁定请求与已有锁定冲突
文章浏览阅读1.7w次,点赞12次,收藏138次。安装go-cqhttp+QQBot教程+对接青龙+对接nvjdc可手机号登录_conetos安装cqhttp安装
文章浏览阅读3.8k次,点赞8次,收藏14次。前段时间,我写了很多关于嵌入式学习的文章,通过不少学习者的反馈使我有成就感。分享的乐趣使我决定继续写下去。在接下来的时间,我计划也开始写关于Java的内容。希望对你或多或少提供方向,话不多说,给大家带来一个软件工程师的成长史:其实我很早以前就想写了,Java是我毕业后学的第一门语言,准确来说,如果单纯为了做一个普通的开发人员的话,只要你熟练掌握MVC的分层,熟练掌握List和Map的..._现在还有从事纯硬件的吗