图像处理 识别算法_matlab图像识别处理算法 - CSDN
  • 图像处理+边缘检测算法

    万次阅读 2018-04-03 16:41:15
    一、边缘检测算子类别 常见边缘检测算子:Roberts 、Sobel 、Prewitt、Laplacian、Log/Marr、Canny、Kirsch、Nevitia二、一阶微分算子:Roberts 、Sobel 、Prewitt Robert算子是第一个边缘检测算子,提出者...

    一、边缘检测算子类别 

         常见边缘检测算子:Roberts 、Sobel 、Prewitt、Laplacian、Log/Marr、Canny、Kirsch、Nevitia

    二、一阶微分算子:Roberts 、Sobel 、Prewitt

            Robert算子是第一个边缘检测算子,提出者Lawrence Roberts in 1963。

            Sobel边缘算子,当年作者并没有公开发表过论文,仅仅是在一次博士生课题讨论会(1968)上提出("A 3x3 Isotropic Gradient Operator for Image Processing"),后在1973年出版的一本专著("Pattern Classification and Scene Analysis")的脚注里作为注释出现和公开的。提出者Irwin Sobel。

            Prewitt算子来自J.M.S. Prewitt "Object Enhancement and Extraction" in "Picture processing and Psychopictorics", Academic Press,1970。

            我们看这三种边缘检测算子模板及写成差分的形式



     Roberts算子



    Sobel算子



    Prewitt算子

    图 4 一阶微分算子

           如何计算边缘幅值与方向?以Sobel算子为例。3*3 Sobel两个方向的算子在图像上滑动,模板与其覆盖的图像3*3区域9个像素进行卷积,求和后得到此方向的边缘检测幅值。





    f(x,y)为图像,Gx和Gy分别是水平和竖直方向算子的卷积结果,G则是最终得到的边缘幅值,θ值则是边缘方向。当然G的计算有时简化为

      

    或者

     

    求幅值时是有多种选择的,一般根据具体应用选择用水平还是竖直或是两个方向同时检测。

            另外,需要说明的是,Sobel算子还有一种变种,是各向同性Sobel算子,其模板为



    图 5 各向同性Sobel算子

    Sobel各向同性算子的权值比普通Sobel算子的权值更准确。为什么?模板的权值是离中心位置越远则权值(看绝对值)影响越小,如上图,把模板看成是9个小正方形,小正方形边长为1,则虚线三角形的斜边长为,下直角边长为1,则如果(0,0)位置权值绝对值大小为1,则按照距离关系,位置(1,0)处的权值绝对值大小应该为才是准确的。

    三、 二阶微分算子:Laplacian、Log/Marr

            拉普拉斯算子来自拉普拉斯变换,而Log算子又称Marr算子,由David Courtnay Marr和Ellen Hildreth(1980)共同提出,计算神经学创始人Marr在1980年正式发表论文时,因换白血病早逝,后面设立Marr奖以此纪念其贡献,现在每两年的ICCV(与ECCV,CVPR并称计算机视觉三大顶级会议)会评出一个Marr奖。这两种算子模板如下:


    Laplacian算子(两种模板)


    Log算子

    图 6 二阶微分算子


    拉普拉斯算子数学公式是

    写成差分形式为


            Log边缘检测则是先进行高斯滤波再进行拉普拉斯算子检测,然后找过零点来确定边缘位置,很多时候我们只是知道Log 5*5模板如上图所示,但是具体是怎么得到的?下面进行推导。

    二维高斯公式是


    按拉普拉斯算子公式求x,y方向的二阶偏导后为


    这里x,y不能看成模板位置,应看成是模板其他位置到中心位置的距离。那么写成


    这里x0,y0就是模板中心位置,x,y是模板其他位置,对于5*5模板,则x0=2,y0 = 2,那对于模板中(0,0)位置的权值,即把x= 0,y= 0,x0= 2,y0 = 2带入上式,另= 1,得到约等于0.0175,这样得到


    通过取整变符号,且模板总和为0,得到图6所示的模板。

            另外,这里模板大小是如何取的?通常高斯分布中,在(-3,3)的范围内就覆盖了绝大部分区域,所以模板大小一般取dim = 1 + 6(在SIFT特征中,其中的高斯模糊也是这样取),dim如果为小数,则取不小于dim的最小整数,当然实际使用时没有这么严格,如上面我们取=1时,模板大小取5*5。那同一个尺寸的模板中的权值调整就是的变化得到的,变化到一定程度,模板尺寸大小改变(这个是个人理解,欢迎拍砖羡慕)。

    四、非微分边缘检测算子:Canny

           Canny边缘检测大家应该很熟悉,这里列出步骤,并给出一个详细介绍的链接Canny算子

        1.      彩色图像转换为灰度图像
        2.      对图像进行高斯模糊
        3.      计算图像梯度,根据梯度计算图像边缘幅值与角度(这里其实用到了微分边缘检测算子来计算梯度幅值方向)
        4.      非最大信号压制处理(边缘细化)
        5.      双阈值边缘连接处理

        6.      二值化图像输出结果

    五、方向算子Kirsch(8个3*3模板),Nevitia (12个5*5模板)

            这两个算子是利用多个方向的子模板进行分别计算,最后取幅值最大的那个为最终边缘幅值,方向即最大幅值对应的那个方向。

    六、各边缘检测算子对比


    参考文献:

    1、http://blog.csdn.net/xiaojiegege123456/article/details/7714863

    2、http://blog.csdn.net/yanmy2012/article/details/8110316

    3、http://blog.csdn.net/langb2014/article/details/45667921

    4、https://blog.csdn.net/tigerda/article/details/61192943

    展开全文
  • 图像处理常用算法总结

    万次阅读 2015-12-02 21:26:41
    5、图像分割(灰度、颜色、频谱特征、纹理特征、空间特征) 6、变换(空域和频域、几何变换、色度变换) 7、几何形态分析(Blob分析) (形状、大小、长度、面积、边缘、圆形度位置、方向、数量、连通性等) 8、匹配...

    1、滤波(平滑、降噪)

    2、增强

    3、边缘锐化

    4、纹理分析(去骨架、连通性)

    5、图像分割(灰度、颜色、频谱特征、纹理特征、空间特征)

    6、变换(空域和频域、几何变换、色度变换)

    7、几何形态分析(Blob分析) (形状、大小、长度、面积、边缘、圆形度位置、方向、数量、连通性等)

    Blob分析是对图像中相同像素的连通域进行分析。该连通域称为Blob。

    Blob分析可为机器视觉应用提供图像中的斑点的数量、位置、形状和方向,还可提供相关斑点间的拓扑结构。应用:二维目标图像、高对比度图像、存在/缺席检测、数值范围和旋转不变性需求。

    8、匹配(模板匹配、搜索匹配)

    9、关于特征识别:字符识别(OCR)、二维码识别(QR code)、人脸识别(LBP)、车牌识别、虹膜识别、语音识别(高斯混合模型和隐马尔科夫模型)、行人检测(HOG)和物体识别(SIFT);

    10、色彩分析(色度、色密度、光谱、自动白平衡)

    11、立体测量

    展开全文
  • 图像处理】特征点算法整理总结

    万次阅读 2018-08-29 11:18:40
    图像处理特征不变算子系列之SUSAN算子(三) Susan SUSA(Smallest Univalue Segment Assimilating Nucleus)算子是一种高效的边缘和角点检测算子,并且具有结构保留的降噪功能 原理 用一个圆形模板在图像...

    参考

    对常用特征点记录总结
    图像处理特征不变算子系列之Harris算子(二)
    图像处理特征不变算子系列之SUSAN算子(三)
    【计算机视觉】SIFT中LoG和DoG比较
    SIFT特征提取分析
    RANSAC算法详解
    Harris角点检测原理详解


    Susan

    SUSA(Smallest Univalue Segment Assimilating Nucleus)算子是一种高效的边缘和角点检测算子,并且具有结构保留的降噪功能

    原理

    用一个圆形模板在图像上移动,若模板内的像素灰度与模板中心的像素(被称为核Nucleus)灰度值小于一定的阈值,则认为该点与核Nucleus具有相同的灰度,满足该条件的像素组成的区域就称为USAN(Univalue Segment Assimilating Nucleus)。边缘处的点的USAN值小于或等于最大值一半。由此,我们可以得出SUSAN提取边缘和角点算法的基本原理:在边缘或角点处的USAN值最小,可以根据USAN区域的大小来检测边缘、角点等特征的位置和方向信息。

    这里写图片描述

    实现步骤

    1. 利用圆形模板遍历图像,计算每点处的USAN值
    2. 设置一阈值g,一般取值为1/2(Max(n)), 也即取值为USAN最大值的一半,进行阈值化,得到角点响应
    3. 使用非极大值抑制来寻找角点

    优缺点

    • 完全不涉及梯度的运算,因此其抗噪声能力很强,运算量也比较小
    • SUSAN算子还是一个各向同性的算子
    • 图像的对比度较大,则可选取较大的t值,而图像的对比度较小,则可选取较小的t值
    • 不仅具有很好的边缘检测性能;而且对角点检测也具有很好的效果。

    FAST

    FAST( Features from Accelerated Segment Test)由Rosten等人在SUSAN角点特征检测方法的基础上利用机器学习方法提出.

    原理

    分割测试

    在FAST角点检测算子中,一般是通过半径为3.4 pixel、外围16个像素的圆的作为模板筛选特征点。12点分割角点检测算法是在一个图像块上进行。其中p是中心像素点,12点取的是图上用弧线连接的12个点的像素值(通过测试,12点的角点检测性能最稳定、速度更快、效果也很好,有些文献指出9点的方式也很好)。

    这里写图片描述

    t是一个阈值(默认取值为10,不同场景取值有差异),Ip表示的是中心像素的像素值,Ipx表示的是圆形模板中的像素值。统计圆形区域中d或b的个数,只要d或b出现的次数大于n((当是12点分割测试角点检测时,n=12;当是9点时,则n=9),那么该点就被认为是候选角点。

    Spx={d,Ipx<Ipt,darks,Ipt<Ipx<Ip+t,similiarb,Ipx>Ip+t,brighter

    在分割测试步骤中,为了加快速度,其实不需要对这些像素进行逐一的比较。简单来说:首先比较1、5、9、13处点的像素值(也即水平方向和垂直方向上的4个点)与中心像素值的大小,如果这四个点中的像素值有3个或3个以上大于Ipx+t或小于Ipxt,那么则认为该处是一个候选角点,否则就不可能是角点。

    ID3训练

    将模板内的像素分成三部分d、s、b,分别记为:PdPsPb。因此对于每个Spx都属于PdPsPb中的一个。另外,令Kp为true,如果p为角点,否则为false。通过ID3算法来选择具有最大信息增益的像素来判断一个像素是否为角点。Kp的熵用下式来计算:

    H(P)=(c+c)log2(c+c)clog2cclog2c

    上式中c表示角点数量,c表示非角点数量。某一像素的信息增益通过下式表示:
    H(P)H(Pd)H(Ps)H(Pb)

    非极大值抑制

    在上面的分割测试中,没有计算角点响应函数(Corner Response Function),非极大值抑制无法直接应用于提取的特征。因此,定义一个角点响应函数V,考虑到分割测试的特征以及计算速度的需要,角点响应函数的定义如下:

    V=max(xϵSbright|IpxIp|t,xϵSdark|IpxIp|t)

    实现步骤

    1. 对固定半径圆上的像素进行分割测试,通过逻辑测试可以去处大量的非特征候选点;
    2. 基于分类的角点特征检测,利用ID3 分类器根据16个特征判决候选点是否为角点特征,每个特征的状态为一1,0,1。
    3. 利用非极大值抑制进行角点特征的验证。

    优缺点

    • 计算速度快,可以应用于实时场景中
    • 容易受到噪声影响,阈值t的影响也较大

    BRIEF

    Brief为特征描述子,对已检测到的特征点进行描述,是一种二进制编码描述子

    实现步骤

    1. 为减少噪声干扰,先对图像进行高斯滤波(方差2,窗口9x9)
    2. 以特征点为中心,取SxS的邻域大窗口。在大窗口中随机选取(有5种经典方法)一对(两个)5x5的子窗口,比较子窗口内的像素和(可用积分图像完成),进行二进制赋值。(一般S=31),其中p(x),p(y)分别为所在5x5子窗口的像素和
      τ(p;x,y):={1,if p(x)<p(y)0,otherwise

    这里写图片描述

    1. 在大窗口中随机选取N对子窗口,重复步骤2的二进制赋值,形成一个二进制编码,这个编码就是对特征点的描述,即特征描述子。(一般N=256)构造一个512个bit的BRIEF,就需要512对[x,y],且需要注意,它们是有序的,每次计算位置都相同,否则影响最终结果。也就说说,一旦选定了512对[x,y],那么,无论是提取特征,还是匹配特征,都要按照这512对进行计算。
    2. 汉明距离进行配对。两个特征编码对应bit位上相同元素的个数小于128的,一定不是配对的。一幅图上特征点与另一幅图上特征编码对应bit位上相同元素的个数最多的特征点配成一对。

    优缺点

    • 抛弃了传统的用梯度直方图描述区域的方法,改用检测随机响应,大大加快了描述子建立速度
    • 生成的二进制描述子便于高速匹配,计算Hamming距离只需通过异或操作加上统计二进制编码中“1”的个数的操作,这些通过底层的运算即可实现
    • 缺点很明显就是旋转不变性较差

    ORB


    DoG

    DoG算子是由Lowe D.G.提出的,对噪声、尺度、仿射变化和旋转等具有很强的鲁棒性,能够提供更丰富的局部特征信息

    原理

    尺度空间

    在用机器视觉系统分析未知场景时,机器并不知道图像中物体的尺度,只有通过对图像的多尺度描述,才能获得对物体感知的最佳尺度。如果在不同尺度上,对输入的图像都能检测到相同的关键点特征,那么在不同尺度下也可以实现关键点的匹配,从而实现关键点的尺度不变特性

    图像金字塔多分辨率

    金字塔是早期图像多尺度的表示形式,图像金字塔一般包括2个步骤,分别是使用低通滤波平滑图像;对图像进行降采样(也即图像缩小为原来的1/4,长宽高缩小为1/2),从而得到一系列尺寸缩小的图像。金字塔的构造如下所示:

    这里写图片描述

    高斯平滑滤波

    高斯核是唯一可以产生多尺度空间的核。一个图像的尺度空间L(x,y,σ) ,定义为原始图像I(x,y)与一个可变尺度的2维高斯函数G(x,y,σ)卷积运算。 二维空间高斯函数:

    G(xi,yi,σ)=12πσ2exp((xxi)2+(yyi)22σ2)

    尺度空间表示为:
    L(x,y,σ)=G(x,y,σ)I(x,y)

    高斯模版是圆对称的,且卷积的结果使原始像素值有最大的权重,距离中心越远的相邻像素值权重也越小。高斯模糊另一个重要的性质就是线性可分,使用二维矩阵变换的高斯模糊可以通过在水平和竖直方向各进行一维高斯矩阵变换相加得到。

    多尺度与多分辨率

    尺度空间表达和金字塔多分辨率表达之间最大的不同是:
    1. 尺度空间表达是由不同高斯核平滑卷积得到,在所有尺度上有相同的分辨率
    2. 金字塔多分辨率表达每层分辨率减少固定比率
    所以,金字塔多分辨率生成较快,且占用存储空间少;而多尺度表达随着尺度参数的增加冗余信息也变多。多尺度表达的优点在于图像的局部特征可以用简单的形式在不同尺度上描述;而金字塔表达没有理论基础,难以分析图像局部特征。

    拉普拉斯金字塔

    结合尺度空间表达和金字塔多分辨率表达,就是在使用尺度空间时使用金字塔表示,在计算机视觉中最有名莫过于拉普拉斯金字塔。拉普拉斯金字塔顾名思义就是通过对图像进行拉普拉斯操作,然后进行一个降采样的过程。具体来说就是:原始图像作为金字塔的底层,也即0层,称为g0,对0层图像g0进行进行拉普拉斯金操作,得到第一层图像g1;接着对第一层图像进行拉普拉斯操作,得到第二层图像g2,依次类推,并进行一个降采样,如此构造拉普拉斯金字塔。

    DoG金字塔

    DoG(Difference of Gaussian)其实是对高斯拉普拉斯(LoG)的近似,在某一尺度上的特征检测可以通过对两个相邻高斯尺度空间的图像相减,得到DoG的响应值图像D(x,y,σ),这比直接计算LoG效率更高。

    • 对原图进行相邻尺度的高斯滤波
      g1=Gσ1(x,y)f(x,y)

      g2=Gσ2(x,y)f(x,y)
    • 将上面的滤波得到的两幅图像相减:
      g1(x,y)g2(x,y)=Gσ1f(x,y)Gσ2f(x,y)=(Gσ1Gσ2)f(x,y)=DoGf(x,y)
    • 将公式简化写法:

      D(x,y,σ)=(G(x,y,kσ)G(x,y,σ))I(x,y)
      =L(x,y,kσ)L(x,y,σ)

    • 构造高斯金字塔
      为了得到DoG图像,首先要构造高斯金字塔,高斯金字塔在多分辨率金字塔的基础上加入了高斯滤波,也就是对金字塔每层图像采用不同的参数sigma进行了高斯卷积,使得金字塔的每层有多张图片组成为一个Octave,每组有多张(也叫层interval)图像。每个Octave是由同一大小的图像,经过不同sigma高斯滤波得到的,而Interval则表示的是同一个sigma高斯滤波的图像。另外,降采样时,金字塔上边一组图像的第一张图像(最底层的一张)是由前一组(金字塔下面一组)图像的倒数第三张隔点采样得到,图像表示如下:

    这里写图片描述

    • 求DoG

    这里写图片描述

    求角点

    这里写图片描述

    X标记当前像素点,绿圈标记邻接像素点,用这个方式,最多检测相邻尺度的26个像素点。如果它是所有邻接像素点的最大值或最小值点,则X被标记为特征点,如此依次进行,则可以完成图像的特征点提取。

    这里写图片描述

    这里写图片描述

    优缺点

    • 具有尺度不变特性,抗旋转
    • 计算量大

    RANSC特征点筛选

    随机抽样一致算法(random sample consensus,RANSAC),采用迭代的方式从一组包含离群的被观测数据中估算出数学模型的参数。

    RANSAC算法的基本假设是样本中包含正确数据(inliers,可以被模型描述的数据),也包含异常数据(outliers,偏离正常范围很远、无法适应数学模型的数据),即数据集中含有噪声。这些异常数据可能是由于错误的测量、错误的假设、错误的计算等产生的。同时RANSAC也假设,给定一组正确的数据,存在可以计算出符合这些数据的模型参数的方法。

    实现步骤

    • 假定模型(如直线方程),并随机抽取Nums个(以2个为例)样本点,对模型进行拟合
    • 由于不是严格线性,数据点都有一定波动,假设容差范围为:sigma,找出距离拟合曲线容差范围内的点,并统计点的个数
    • 重新随机选取Nums个点,重复第一步~第二步的操作,直到结束迭代
    • 每一次拟合后,容差范围内都有对应的数据点数,找出数据点个数最多的情况,就是最终的拟合结果

    这里写图片描述

    优缺点

    • 最小二乘法适用于有效数据占大多数,无效数据少的情况,是从一个整体误差最小的角度去考虑。RANSC基于假设寻找最优。

    这里写图片描述


    Harris角点检测

    原理

    用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与滑动后两种情况,窗口中的像素灰度变化程度,如果存在任意方向上的滑动,都有着较大灰度变化,那么我们可以认为该窗口中存在角点。

    • 数学刻画

      E(U,V)=x,yw(x,y)[I(x+u,y+v)I(x,y)]2

      式中,[u,v]是窗口的偏移量,w(x,y)是窗口的权重系数。一般可用高斯二维函数。

    • 表达式演化-泰勒展开

      f(x+u,y+v)f(x,y)+ufx(x,y)+vfy(x,y)

    (1)[I(x+u,y+v)I(x,y)]2[I(x,y)+uIx+vIyI(x,y)]2(2)=u2Ix2+2uvIxIy+v2Iy2(3)=[uv][Ix2IxIyIxIyIy2][uv](4)=[uv]([Ix2IxIyIxIyIy2])[uv]

    • E(u,v)
      E(u,v)[uv]M[uv]

      M=x,yw(x,y)[Ix2IxIyIxIyIy2]

    实现步骤

    1. 对每一个像素计算自相关矩阵M
    2. 构造角点性映射图

      M=[ACCB]

      C(x,y)=det(M)k(trace(M))2

      det(M)=λ1λ2=ABC2

      trace(M)=λ1+λ2=A+B

    3. 阈值化,对得到的C(x,y)

    4. 非极大值抑制

    优缺点

    • 针对Moravec算子的不足进行了改进,提高了特征点的检测率
    • Harris算子计算量大,对尺度很敏感,不具有尺度不变性
    • Harris对特征点的定位也不是很精确
    • Harris也是各向异性的,对噪声敏感。



    展开全文
  • 图像识别算法

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

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

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

    1. 局部特征点

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

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

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

    2. 斑点检测原理与举例

    2.1 LoG与DoH

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

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

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

    H(L)=[LxxLxyLxyLyy]

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

    det=σ4(Lxx(x,y,σ)Lyy(x,y,σ)−Lxy2(x,y,σ))

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

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

    1)使用不同的σ生成(∂2g∂x2+∂2g∂y2)∂2g∂x2,∂2g∂y2,∂2g∂x∂y模板,并对图像进行卷积运算;

    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矩阵及其行列式的值分另为:

    Happrox=[Dxx(σ)Dxy(σ)Dxy(σ)Dyy(σ)]

    c(x,y,σ)=DxxDyy−(0.9Dxy)2

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

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

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

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

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

    3.1 Harris角点特征提取

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

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

    A(x)=∑x,yω(x,y)[Cx2(x)CxCy(x)CxCy(x)Cy2(x)]=[abbc]

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

    D=detA−m(traceA)2=(ac−b)2−m(a+c)2

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

    3.2 FAST角点特征提取

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

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

    为了加快算法的检测速度,可以使用机器学习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算法首先对图像进行了高斯平滑图像。并且使用的高斯函数标准差σi与各自同心圆上点间距成正比。

    假设在(N2)个采样点中任意选取一对采样点(pi,pj),其平滑后的灰度值分别为I(pi,σi)I(pj,σj),则两点间的局部梯度为:

    g(pi,pj)=(pj−pi)I(pj,σj)−I(pi,σi)∥pj−pi∥2

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

    A={(pi,pj)∈R2×R2|i<N且j<i且i,j∈N}

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

    S={(pi,pj)∈A|∥pj−pi∥<δmax}⊆A

    L={(pi,pj)∈A|∥pj−pi∥>δmin}⊆A

    其中,通常设置距离阈值为δmax=9.75δ,δmin=13.67δ,其中δ为特征点的尺度。

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

    g=(gxgy)=1L∑(pi,pj)∈Lg(pi,pj)

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

    最后,在旋转后的短距离采样点集合S内,对所有的特征点对(Piα,pjα)行像素灰度值比较,最终形成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] 图像局部不变性特征与描述,王永明,王贵锦编著。

    展开全文
  • 常用图像处理算法()

    万次阅读 2018-10-04 22:38:10
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&a
  • 图像处理算法其实都很简单

    万次阅读 多人点赞 2018-05-03 16:07:12
     线性滤波可以说是图像处理最基本的方法,它可以允许我们对图像进行处理,产生很多不同的效果。做法很简单。首先,我们有一个二维的滤波器矩阵(有个高大上的名字叫卷积核)和一个要处理的二维图像。然后,对于图像...
  • 图像处理基本算法 车牌识别与定位

    万次阅读 2017-05-22 17:42:11
    图像处理基本算法 车牌识别与定位 标签: 图像处理 2013-02-20 22:35 4416人阅读 评论(1) 收藏 举报  分类: opencv(27)  版权声明:本文为博主原创文章,未经博主允许不得转载。 ...
  • 一张图看懂图像识别算法发展历史

    千次阅读 2019-08-22 13:50:24
    一张图看懂图像识别算法发展历史
  • 图像处理常用算法(基础)

    万次阅读 多人点赞 2018-08-12 23:15:22
    图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像。需要说明的是:边缘和物体间的边界并不等同,边缘指的是图像中像素的值有突变的地方,而物体间的边界指的是现实场景中的存在于物体之间的边界。...
  • FPGA的图像处理算法

    千次阅读 2019-02-25 15:07:47
    下面简要分析了 FPGA 技术,包括 FPGA 技术原理和技术特点等,随后介绍一下FPGA 的图像处理系统算法的实现,包括存储模块、运算单元、控制模块以及数据传输模块等内容。 智能机器人、多媒体已经计算机的诞生都离不...
  • 图像识别算法实现

    千次阅读 2009-10-27 23:27:00
    以往的图像处理函数实现,多是针对图像句柄。算法实现 需要操作复杂的图像文件。但是,这种方式算法实现和调试的周期比较长。为了加速开外,我在中间插入的矩阵库。因为图像处理算法多是针对矩阵,所以实现和调试...
  • 一些基本数字图像处理算法

    千次阅读 2020-05-10 19:45:46
    一些基本数字图像处理算法 所有的图像算法都在DIPAlgorithm类中,并且所有算法都为抽象成员函数。我已经按照java注释规范为所有方法添加使用说明注释,具体实现可见于DIPAlgorithm.java,这里只做算法说明。 1 图像...
  • 基于视频图像识别算法

    千次阅读 2019-06-04 14:34:09
    一个典型的基于视频图像的人脸识别系统一般都是自动检测人脸区域,从视频中提取特征,最后如果人脸存在则识别出人脸的身份。在视频监控、信息安全和出入控制等应用中,基于视频的人脸识别是一个非常重要的问题,也是...
  • 图像处理算法工程师

    万次阅读 2017-09-11 15:09:04
    整理了一下网上各个公司图像处理算法工程师的招聘要求:  图像处理算法工程师 职位要求 编程技能: 1、 具有较强的编程能力和良好的编程习惯, 精通c/c++编程,并熟练使用VS 或matlab开发环境; 2、 在计算机...
  • 基于DSP的嵌入式视觉应用平台存在的主要问题为:运算速度较低,通常需要设计专用的多核DSP、开发相应的并行处理机制、并利用其提供的指令集进行算法优化,使得专注于图像处理算法的工程师“望而生畏”。而ARM平台不...
  • 写在前面这一段的内容可以说是最难的一部分之一了,因为是识别图像,所以涉及到的算法会相比之前的来说比较困难,所以我尽量会讲得清楚一点。而且因为在编写的过程中,把前面的一些逻辑也修改了一些,将其变得更完善...
  • 图像处理基本思想和算法研究

    千次阅读 2016-05-09 20:38:07
    意在介绍图像处理中的一些基本算法,后来仔细想想决定不这么写,因为图像处理是一个非常大的概念,图像处理不等于人脸识别,也不等于模式识别,直接介绍诸如图像处理基本算法之类的内容很容易写成空话,没有什么实际...
  • 图像处理OpenCV算法01

    千次阅读 2018-06-25 10:10:43
    OpenCV算法 1、图像的基本操作读取、显示、存储:通过调用OpenCV中的cv2.imread(),cv2.imshow(),cv2.write()分别实现。 2、图像由数组构成,黑白图像就是一个单通道的二维矩阵,如同一个的棋盘(矩阵),棋盘中...
  • image格式转换: # OpenCV图片转换为PIL image def CVImageToPIL(image): return Image.fromarray(cv.cvtColor(img, cv.COLOR...图片锐化处理 def custom_blur_demo(image): kernel = np.array([[0, -1, 0], [-1, ...
  • 基于MATLAB的人脸识别算法的研究

    万次阅读 多人点赞 2019-03-27 09:34:33
    基于MATLAB的人脸识别算法的研究 作者:lee神 现如今机器视觉越来越盛行,从智能交通系统的车辆识别,车牌识别到交通标牌的识别;从智能手机的人脸识别的性别识别;如今无人驾驶汽车更是应用了大量的机器识别的是...
1 2 3 4 5 ... 20
收藏数 114,734
精华内容 45,893
关键字:

图像处理 识别算法