精华内容
下载资源
问答
  • 图像识别算法

    万次阅读 多人点赞 2019-08-15 17:36:40
    图像特征提取是图像分析与图像识别的前提,它是将高维的图像数据进行简化表达最有效的方式,从一幅图像的的数据矩阵中,我们看不出任何信息,所以我们必须根据这些数据提取出图像中的关键信息,一些基本元件以及它们...

    图像特征包括颜色特征、纹理特征、形状特征以及局部特征点等。

    局部特点具有很好的稳定性,不容易受外界环境的干扰。

    1. 局部特征点

    图像特征提取是图像分析与图像识别的前提,它是将高维的图像数据进行简化表达最有效的方式,从一幅图像的的数据矩阵中,我们看不出任何信息,所以我们必须根据这些数据提取出图像中的关键信息,一些基本元件以及它们的关系。

    局部特征点是图像特征的局部表达,它只能反正图像上具有的局部特殊性,所以它只适合于对图像进行匹配,检索等应用。对于图像理解则不太适合。而后者更关心一些全局特征,如颜色分布,纹理特征,主要物体的形状等。全局特征容易受到环境的干扰,光照,旋转,噪声等不利因素都会影响全局特征。相比而言,局部特征点,往往对应着图像中的一些线条交叉,明暗变化的结构中,受到的干扰也少。

    而斑点与角点是两类局部特征点。斑点通常是指与周围有着颜色和灰度差别的区域,如草原上的一棵树或一栋房子。它是一个区域,所以它比角点的噪能力要强,稳定性要好。而角点则是图像中一边物体的拐角或者线条之间的交叉部分。

    2. 斑点检测原理与举例

    2.1 LoG与DoH

    斑点检测的方法主要包括利用高斯拉普拉斯算子检测的方法(LOG),以及利用像素点Hessian矩阵(二阶微分)及其行列式值的方法(DOH)。

    LoG的方法已经在斑点检测这入篇文章里作了详细的描述。因为二维高斯函数的拉普拉斯核很像一个斑点,所以可以利用卷积来求出图像中的斑点状的结构。

    DoH方法就是利用图像点二阶微分Hessian矩阵:

     

     

    以及它的行列式的值DoH(Determinant of Hessian):

     

     

    Hessian矩阵行列式的值,同样也反映了图像局部的结构信息。与LoG相比,DoH对图像中的细长结构的斑点有较好的抑制作用。

    无论是LoG还是DoH,它们对图像中的斑点进行检测,其步骤都可以分为以下两步:

    1)使用不同的生成或模板,并对图像进行卷积运算;

    2)在图像的位置空间与尺度空间中搜索LoG与DoH响应的峰值。

    2.2 SIFT

    详细的算法描述参考:SIFT定位算法关键步骤的说明

    2004年,Lowe提高了高效的尺度不变特征变换算法(SIFT),利用原始图像与高斯核的卷积来建立尺度空间,并在高斯差分空间金字塔上提取出尺度不变性的特征点。该算法具有一定的仿射不变性,视角不变性,旋转不变性和光照不变性,所以在图像特征提高方面得到了最广泛的应用。

    该算法大概可以归纳为三步:1)高斯差分金字塔的构建;2)特征点的搜索;3)特征描述。

    在第一步中,它用组与层的结构构建了一个具有线性关系的金字塔结构,让我们可以在连续的高斯核尺度上查找特征点。它比LoG高明的地方在于,它用一阶高斯差分来近似高斯的拉普拉斯核,大大减少了运算量。

    在第二步的特征点搜索中,主要的关键步骤是极值点的插值,因为在离散的空间中,局部极值点可能并不是真正意义上的极值点,真正的极植点可以落在了离散点的缝隙中。所以要对这些缝隙位置进行插值,然后再求极值点的坐标位置。

    第二步中另一关键环节是删除边缘效应的点,因为只忽略那些DoG响应不够的点是不够的,DoG的值会受到边缘的影响,那些边缘上的点,虽然不是斑点,但是它的DoG响应也很强。所以我们要把这部分点删除。我们利用横跨边缘的地方,在沿边缘方向与垂直边缘方向表现出极大与极小的主曲率这一特性。所以通过计算特征点处主曲率的比值即可以区分其是否在边缘上。这一点在理解上可以参见Harris角点的求法。

    最后一步,即为特征点的特征描述。特征点的方向的求法是需要对特征点邻域内的点的梯度方向进行直方图统计,选取直方图中比重最大的方向为特征点的主方向,还可以选择一个辅方向。在计算特征矢量时,需要对局部图像进行沿主方向旋转,然后再进邻域内的梯度直方图统计(4x4x8)。

    2.3 SURF

    详细的算法描述参考:1. SURF算法与源码分析、上  2. SURF算法与源码分析、下

    2006年,Bay和Ess等人基于SIFT算法的思路,提出了加速鲁棒特征(SURF),该算法主要针对于SIFT算法速度太慢,计算量大的缺点,使用了近似Harr小波方法来提取特征点,这种方法就是基于Hessian行列式(DoH)的斑点特征检测方法。通过在不同的尺度上利用积分图像可以有效地计算出近似Harr小波值,简化了二阶微分模板的构建,搞高了尺度空间的特征检测的效率。

    SURF算法在积分图像上使用了盒子滤波器对二阶微分模板进行了简化,从而构建了Hessian矩阵元素值,进而缩短了特征提取的时间,提高了效率。其中SURF算法在每个尺度上对每个像素点进行检测,其近似构建的Hessian矩阵及其行列式的值分另为:

     

     

     

     

    其中和为利用盒子滤波器获得的近似卷积值。如果大于设置的门限值,则判定该像素点为关键字。然后与SIFT算法近似,在以关键点为中心的像素邻域内进行非极大值抑制,最后通过对斑点特征进行插值运算,完成了SURF特征点的精确定位。

    而SURF特征点的描述,则也是充分利用了积分图,用两个方向上的Harr小波模板来计算梯度,然后用一个扇形对邻域内点的梯度方向进行统计,求得特征点的主方向。

    3. 角点检测的原理与举例

    角点检测的方法也是极多的,其中具有代表性的算法是Harris算法与FAST算法。

    这两个算法我都有专门写过博文来描述其算法原理。Harris角点FAST特征点检测

    3.1 Harris角点特征提取

    Harris角点检测是一种基于图像灰度的一阶导数矩阵检测方法。检测器的主要思想是局部自相似性/自相关性,即在某个局部窗口内图像块与在各个方向微小移动后的窗口内图像块的相似性。

    在像素点的邻域内,导数矩阵描述了数据信号的变化情况。假设在像素点邻域内任意方向上移动块区域,若强度发生了剧烈变化,则变化处的像素点为角点。定义的Harris矩阵为:

     

     

    其中,和分别为点在和方向上的强度信息的一阶导数,为对应位置的权重。通过计算Harris矩阵的角点响应值D来判断是否为角点。其计算公式为:

     

     

    其中,det和trace为行列式和迹的操作符,是取值为0.04~0.06的常数。当角点响应值大于设置的门限,且为该点邻域内的局部最大值时,则把该点当作角点。

    3.2 FAST角点特征提取

    基于加速分割测试的FAST算法可以快速地提取出角点特征。该算法判断一个候选点是否为角点,依据的是在一个像素点为圆心,半径为3个像素的离散化Bresenllam圆周上,在给定阈值的条件下,如果在圆周上有个连续的像素灰度值大于或小于。

    针对于上面的定义,我们可以用快速的方法来完成检测,而不用把圆周上的所有点都比较一遍。首先比较上下左右四个点的像素值关系,至少要有3个点的像素灰度值大于或小于,则为候选点,然后再进一步进行完整的判断。

    为了加快算法的检测速度,可以使用机器学习ID3贪心算法来构建决策树。这里需要说明的是,在2010年Elmar和Gregory等人提出了自适应通用加速分割检测(AGAST)算法,通过把FAST算法中ID3决策树改造为二叉树,并能够根据当前处理的图像信息动态且高效地分配决策树,提高了算法的运算速度。

    4. 二进制字符串特征描述子

    可以注意到在两种角点检测算法里,我们并没有像SIFT或SURF那样提到特征点的描述问题。事实上,特征点一旦检测出来,无论是斑点还是角点描述方法都是一样的,可以选用你认为最有效的特征描述子。

    特征描述是实现图像匹配与图像搜索必不可少的步骤。到目前为止,人们研究了各种各样的特征描述子,比较有代表性的就是浮点型特征描述子和二进帽字符串特征描述子。

    像SIFT与SURF算法里的,用梯度统计直方图来描述的描述子都属于浮点型特征描述子。但它们计算起来,算法复杂,效率较低,所以后来就出现了许多新型的特征描述算法,如BRIEF。后来很多二进制串描述子ORB,BRISK,FREAK等都是在它上面的基础上的改进。

    4.1 BRIEF算法

    BRJEF算法的主要思想是:在特征点周围邻域内选取若干个像素点对,通过对这些点对的灰度值比较,将比较的结果组合成一个二进制串字符串用来描述特征点。最后,使用汉明距离来计算在特征描述子是否匹配。

    BRIEF算法的详细描述可以参考:BRIEF特征描述子

    4.2 BRISK算法

    BRISK算法在特征点检测部分没有选用FAST特征点检测,而是选用了稳定性更强的AGAST算法。在特征描述子的构建中,BRISK算法通过利用简单的像素灰度值比较,进而得到一个级联的二进制比特串来描述每个特征点,这一点上原理与BRIEF是一致的。BRISK算法里采用了邻域采样模式,即以特征点为圆心,构建多个不同半径的离散化Bresenham同心圆,然后再每一个同心圆上获得具有相同间距的N个采样点。

    image

    由于这种邻域采样模式在采样时会产生图像灰度混叠的影响,所以BRISK算法首先对图像进行了高斯平滑图像。并且使用的高斯函数标准差与各自同心圆上点间距成正比。

    假设在个采样点中任意选取一对采样点,其平滑后的灰度值分别为和,则两点间的局部梯度为:

     

     

    假设把所有采样点对构成的集合记为,则

     

     

    那么短距离采样点对构成的集合S以及长距离采样点构成的集合L分别为:

     

     

     

     

    其中,通常设置距离阈值为,其中为特征点的尺度。

    由于长距离采样点对含有更多的特征点角度信息,且局部梯度相互抵消,所以可以在集合L中计算出特征点的特征模式方向为:

     

     

    然后将采样模式围绕特征点旋转角度,进而特征描述子具有了旋转不变性。

    最后,在旋转后的短距离采样点集合S内,对所有的特征点对行像素灰度值比较,最终形成512比特的二进制字符串描述子。

    4.3 ORB算法

    ORB算法使用FAST进行特征点检测,然后用BREIF进行特征点的特征描述,但是我们知道BRIEF并没有特征点方向的概念,所以ORB在BRIEF基础上引入了方向的计算方法,并在点对的挑选上使用贪婪搜索算法,挑出了一些区分性强的点对用来描述二进制串。ORB算法的详细描述可以参考:ORB特征点检测

    4.4 FREAK算法

    Fast Retina KeyPoint,即快速视网膜关键点。

    根据视网膜原理进行点对采样,中间密集一些,离中心越远越稀疏。并且由粗到精构建描述子,穷举贪婪搜索找相关性小的。42个感受野,一千对点的组合,找前512个即可。这512个分成4组,前128对相关性更小,可以代表粗的信息,后面越来越精。匹配的时候可以先看前16bytes,即代表精信息的部分,如果距离小于某个阈值,再继续,否则就不用往下看了。

    5. 应用之图像匹配

    图像匹配的研究目标是精确判断两幅图像之间的相似性。图像之间的相似性的定义又随着不同的应用需求而改变。例如,在物体检索系统中(找出含有亚伯拉罕·林肯的脸的图像),我们认为同一物体的不同图像是相近的。而在物体类别检索系统中(找出含有人脸的图像),我们则认为相同类的物体之间是相近的。

    这里局部特征点的应用主要表现在第一种相似性上,也就是说我们需要设计某种图像匹配算法来判断两幅图像是否是对同一物体或场景所成的图像。理想的图像匹配算法应该认为两幅同一物体的图像之间相似度很高,而两幅不同物体的图像之间相似度很低,如下图所示。

    image

    由于成像时光照,环境,角度的不一致,我们获取的同一物体的图像是存在差异的,如同上图中的两辆小车的图像一样,角度不同,成像就不同。我们直接利用图像进行比较是无法进行判断小车是否为同一类的。必须进行特征点的提取,再对特征点进行匹配。

    图像会存在哪些变换呢?一般来说包括了光照变化与几何变化,光照变化表现是图像上是全局或局部颜色的变化,而几何变化种类就比较多了,可以是平移、旋转、尺度、仿射、投影变换等等。所以我们在研究局部特征点时才要求特征点对这些变化具有稳定性,同时要有很强的独特性,可以让图像与其他类的图像区分性强,即类内距离小而类间距离大。

    6. 参考文献

    [1] 基于角点的图像特征提取与匹配算法研究,薛金龙,2014.

    [2] 基于局部特征的图像匹配与识别,宫明明,2014.

    [3] 基于视觉信息的图像特征提取算法研究,戴金波,2014.

    [4] 图像局部不变性特征与描述,王永明,王贵锦编著。

    展开全文
  • 耶鲁大学教授讲授图像识别算法,内有图像识别算法公式,算法实例
  • 基于卷积神经网络的图像识别算法,基于卷积神经网络的图像识别算法PPT,基于卷积神经网络的图像识别算法课件
  • 主要为大家详细介绍了python实现识别手写数字,python图像识别算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 基于卷积神经网络的图像识别算法的研究,适合于毕业学生,非常好用,赶紧下载,非常合适,基于卷积神经网络的图像识别算法的研究
  • 货车典型故障图像识别算法研究,对于图像处理,图像的故障识别
  • 基于卷积神经网络的图像识别算法的研究,适合于毕业学生,非常好用,赶紧下载,非常合适,基于卷积神经网络的图像识别算法的研究
  • 一张图看懂图像识别算法发展历史

    千次阅读 2019-08-22 13:50:24
    一张图看懂图像识别算法发展历史

    一张图看懂图像识别算法发展历史

     

    展开全文
  • 基于稀疏表示和深度学习的图像识别算法研究基于稀疏表示和深度学习的图像识别算法研究
  • 提出一种基于辨识性统计特征的PQ(perturbed quantization)隐密图像识别算法。该算法根据经典PQ隐写对图像数据的更改方式,提取可有效区分该类隐密图像与其他类隐密图像的辨识性统计特征,并运用SVM(support ...
  • 图像识别算法,详细的matlab和c++相关编程,内带相关接口,稍微改动就可以成为数学建模或者毕业设计的主程序。
  • Mean Shift图像识别算法简单例子 Java版
  • 详细介绍了QR码及基于QR的图像识别算法的研究
  • 基于标准像素图像识别算法

    千次阅读 2015-03-05 16:27:48
    自己试着实现一些简单规则的图像识别算法,纯属交流,不喜勿喷!
    我们直观上看到的一张图片里面的字符是很整齐的,但把图片放大,你就可以发现直观上看到的图片都是由一个个像素点组成的,比如下面这图片 很清晰的看到是“like3944”8个字符,但放大之后却是这样的

    这样我就可以根据其每个像素点的颜色轨迹来进行图像字符识别!

        算法原理是首先第一步把所有有可能出现的字符以节点的方式全部存储在一棵树上,然后就是扫描目标图像,扫描完成后返回结果,说起来好像就几个步骤而已,接下来就描述一下算法的实现过程吧。
        最先要解决的问题是你要识别的图像正常情况下肯定不止一个字符,比如上面的“like3944”就有8个字符,我们肉眼能分割得出明显是8个字,但如何让机器也能分割这8个字符呢?

    图片上的每个点都有3个数据表示颜色,包括红、绿、蓝3种颜色的数据值,仔细看可以发现“分割线”的颜色都是差不多的,所以我们可以自己定一个规则,我通过测试发现,只要像素值中红色的值只要 >= 210就是空白点,当然这个值只针对我这次需要处理的图像类型,其他图像也许颜色不同但原理是一样的。所以我们第一步就是根据自己定的规则把图像的所有像素点存储在一个1/0矩阵当中,1表示该点不为空,0表示空白处,这样处理完之后字符间的“分割线”就自然的出现,如上图,2个字符之间至少有1列数值全为0,这就形成我们所说的“分割线”。
        接下来就是收集所有可能出现的字符图像,每个字符都存储在一棵树结构上,我定义的规则是每个字符的最左上角的那个像素点为字符的开始,通过 Y轴-X轴的遍历方法很容易找到该点的坐标位置,找到字符的其实位置之后就开始上下扫描,上下波浪扫描的意思如图

    直到扫描到有一整列的值都为0或矩阵扫描完成时结束,在扫描过程中遇到值为1的点时则计算该点所在位置与前一个为1的点之间的X坐标和Y坐标的偏移值,存储在一个数组当中,在这里要说明一点,这里的X轴Y轴并不是我们数学上真正意义上的坐标轴,这里我是用矩阵模拟,所以Y轴往下为+往上为-,举例说明上图中起始点坐标为(1,7),通过扫描规则我们可以看出下一个扫描点为(1,8),该点的值也是1,所以要计算2点之间的偏移值,X偏移量为0,Y偏移量为1。再举一个具有代表性的例子,比如到了第一列最下面那个点的坐标(1,12),通过扫描规则我们发现往下剩下的点值都为0,第一列扫描完后开始往上扫描第二列,可以看到下一个为1的点坐标为(2,13),再计算2点之间的偏移值,X偏移量为1,Y偏移量为1。所以扫描完成后,我们得到的结果是2个数组,假设字符像素点为1的点有n个,则数组存的分别是该n点中每相邻两个点的X和Y偏移量,数组长度为n-1。
        接下来就要开始初始化这个树了,下面是我建立该树节点的数据结构:
    struct pxPath 
    {
        int offX;//x轴偏移量
        int offY;//y轴偏移量
        int childNum;//子节点数量
        char word;//完成搜索后代表字符
        int isFin;//是否完成搜索
        struct pxPath *child;//子节点
        struct pxPath *next;//兄弟节点
        struct pxPath *lastChild;//最后一个子节点
    };
        先定义一个头节点,树节点存储的是坐标的相对偏移值,实现细节就不一一赘述了,看下图,树的结构:


    从上图可以看出字符a的路径为(0,+1)->(0,+1)->(+1,+1)->(+1,0)->'a'
    字符b可以看出路径中有与字符a重叠的部分,但到最后节点处可以发现,他们都不是互相的前缀,这样可以保证每个字符路径的唯一性。当然以上的举例路径都是我个人假设的,真正一个字符大概有更多节点,所以在初始化树结构的时候每层的子节点都需要遍历,遇到偏移量相同则无需创建新的节点,否则加多一个兄弟节点,同时需给父节点记录最后一个子节点lastChild,如此类推,把所有可能出现的字符加进树中。

        成功建立树结构之后,开始识别图像字符,识别的过程可不是简简单单反过来执行一遍就OK,因为机器在识别之前是不知道将要识别的字符是什么,识别过程其实就是遍历我们刚刚建立的树的过程,只要走到最底层就能发现字符是什么。假如识别最上面的图“like3944”,图像还是要先经过颜色判断保存在0/1矩阵数组中,找到最左上角的为1的点为起始点,开始遍历树的头节点所有子节点,回到刚才的0/1矩阵中的起始点加上每个树节点的XY偏移量找到对应的坐标看是否为1,但这并不代表该点就是我们所要找的下一个节点,因为我们扫描是用上下波浪扫描,所以这2个点之间的扫描路径上不能存在有1的点,如果出现有1的点则表示这个路径是错误的,因此需要遍历下一个兄弟节点,以此类推,只有符合上述条件才是正确的唯一路径,在这里描述得不是很清晰,我再举个例子吧
    假如字符'a'的像素点为如下
    0 0 0 0 0 0 0
    1 0 1 0 1 0
    0  1 0 1 0 0
    1  0 0 0 1 0
    0  0 1 1 1 0
    上面最左上蓝色的1为起始点,而假如我们通过树节点的偏移量计算出下一个点的坐标恰好是右边蓝色1的坐标,虽然该坐标点值为1,但并不代表这就是字符'a'的第二个像素点,因为我们看到蓝色1下面还有个红色的1,所以就如我上面说的还需满足一个条件,2点之前遵循上下波浪扫描路径不存在值为1的点,上面红色的数字方向就是路径,存在值为1的点,就要放弃该树节点,到下一个树节点继续此操作,直到满足条件位置。根据树的结构走到最底层遍能找出这个字符是什么,然后继续往后扫描,找到下一个字符的起始点,继续循环操作,直到图像结束。

    (图像资源都在源码bmp文件夹中,bmp文件夹内图片用于初始化字符路径,里面test文件夹内才是测试图像)


    展开全文
  • 毕业设计论文中文摘要 一种新的人脸图像识别算法的研究与实现 摘要 非负矩阵分解近来被证明是一个很有用的多元数据分解方法而人脸自动识别是一种基于生物特征识别的身份认证技术其应用十分广泛,具有直接友好方便的...
  • 而后讨论了基于联合度量策略机制的识别算法在字符识别中的可行性及识别精度,其识别率达到90.3%,并具备较高的稳定性;最后,将该算法应用在实际的车牌图像的识别系统中,车牌图像识别率达到86%,单个字符的识别率...
  • 寻找一维条形码图像识别算法开发

    千次阅读 2018-06-04 10:26:39
    因公司项目需要,现寻找成熟的一套一维条形码图像识别算法,测试通过后,可购买。如哪位高手具有这方面的开发能力,我们可以付费开发,有兴趣的朋友可以联系一下。邮箱:865841431@qq.com...
    因公司项目需要,现寻找成熟的一套一维条形码图像识别算法,测试通过后,可购买。如哪位高手具有这方面的开发能力,我们可以付费开发,有兴趣的朋友可以联系一下。邮箱:865841431@qq.com
    展开全文
  • 基于深度学习的图像识别算法研究

    万次阅读 2016-10-24 12:34:34
    作者:丰晓霞 ...(1)认真分析了图像识别的方法及存在的问题,对现有的图像识别算法进行了对比研究,详细叙述了深度学习的发展和进展,对比了深度学习结构相比浅层结构的优势所在,总结了深度学习的常用方法,
  • 几种基于模板匹配法的数字图像识别算法分析.pdf,详细分析了几种基于模板匹配算法的数字图像识别。
  • 一种新的 图像识别 图像处理 算法 学位论文
  • 该方法首先通过图像预处理来改善图像质量,减少噪声,然后利用Sobel边缘检测算法识别图像各区域边界,使用自适应阈值图像分割提取边界特征,对轮廓进行线性拟合,最后采用基于河岸角度的河道边界算法识别河道边界。...
  • PCA+LDA的图像识别算法VC封装类,PCA+LDA的图像识别算法VC封装类
  • 再谈AR中的图像识别算法

    千次阅读 2018-02-27 20:36:30
    原文:http://www.10tiao.com/html/655/201612/2650215081/1.html#comment之前在《浅谈移动平台创新玩法》简单的猜测了easyar中使用的图像识别算法,基于图片指纹的哈希算法的图片检索 。后再阿里引商大神的指点下,...
  • 提出一种快速全自动超声子宫图像节育环物体识别算法,算法包括全自动超声子宫图像分割和特定模式识别框架部分。基于719幅超声子宫图像开展算法性能验证。实验结果表明,该算法无需人工干预,平均耗时527ms/幅,有环...
  • 传统图像识别算法与图像质量评估

    千次阅读 2019-06-13 21:35:01
    DMS 在商用车和客车上逐渐得到普及,相信在DMS开发的过程中,工程师都会遇到算法图像质量的问题。 最近我在这方面也有一些自己的陋见,主要集中在如何评估算法图像质量上。 讨论这个问题,有两个阶段,第一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 179,892
精华内容 71,956
关键字:

图像识别算法