python计算机视觉 局部图像描述子

文章目录前言一、Harris角点检测算法1.1 角点是什么1.2 好的角点检测算法具备的特征1.3 角点检测算法基本原理1.4 用数学方法刻画角点特征1.5 定义角点响应函数1.6 Harris角点检测步骤1.7 Harris角点检测算法的响应函数1.8 Harris角点检测实例1.9不同场景下测试Harris角点检测器1.9.1 角点丰富场景1.9.2 纹理平坦场景1.10 图像种寻找对应点二、SIFT(尺度不变特征变换)2.1 SIFT简介2.2 SIFT特点2.3 SIFT算法2.3.1 SIFT..
摘要由CSDN通过智能技术生成


前言

一、Harris角点检测算法

1.1 角点是什么

角点具有的特征:

<1>轮廓之间的交点;

<2>局部窗口沿任意方向移动,均产生明显变化的点;

<3>图像局部曲率突变的点;

<4>对于同一场景,即使视角发生变化,通常具备稳定性质的特征;

<5>该点附近区域的像素点无论在梯度方向上还是其梯度幅值上有着较大变化。

在这里插入图片描述
在这里插入图片描述

1.2 好的角点检测算法具备的特征

<1>检测出图像中“真实的”角点;

<2>准确的定位性能;

<3>具有很高的稳定性;

<4>具有对噪声的鲁棒性;

<5>具有较高的计算效率。

1.3 角点检测算法基本原理

基本原理:
人眼对角点的识别通常是在一个局部的小区域或小窗口完成的。使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与滑动后两种情况,如果滑动前后窗口内区域的灰度发生了较大的变化,那么就认为在窗口内遇到了角点;如果滑动前后窗口内区域的灰度没有发生变化那么窗口内就不存在角点。

1.4 用数学方法刻画角点特征

当窗口发生[u,v]移动的时候,滑动前和滑动后对应的窗口中的像素点灰度变化描述如下:
在这里插入图片描述
所以得到,当在平坦区域时,窗口向任意方向移动,无灰度变化;在边缘区域时,沿着边缘方向移动,无灰度变化;在角点区域时,沿着任意方向移动,有明显灰度变化
在这里插入图片描述
经过一系列E(u,v)表达式的演化, E(u,v)表达式可以更新为:
在这里插入图片描述
其中矩阵M是2x2矩阵,可由图像的导数求得:
在这里插入图片描述
在这里插入图片描述

1.5 定义角点响应函数

在这里插入图片描述

1.6 Harris角点检测步骤

Harris角点检测可以分为5个步骤:

(1)计算图像I(x,y)I(x,y)在xx和yy两个方向的梯度IxIx,IyIy;
在这里插入图片描述

(2)计算图像两个方向梯度的乘积;
在这里插入图片描述

(3)使用高斯函数对Ix2、Iy2、IxIy进行高斯加权(取σ=2,ksize=3),计算中心点为(x,y)(x,y)的窗口W对应的矩阵M;
在这里插入图片描述

(4)计算每个像素点(x,y)处的(x,y)处的Harris响应值R;

在这里插入图片描述

(5)过滤大于某一阈值t的R值;
在这里插入图片描述

1.7 Harris角点检测算法的响应函数

1.8 Harris角点检测实例

1.9不同场景下测试Harris角点检测器

1.9.1 角点丰富场景

1.9.2 纹理平坦场景

1.10 图像种寻找对应点

二、SIFT(尺度不变特征变换)

2.1 SIFT简介

SIFT,即尺度不变特征变换(Scale-invariant feature transform,SIFT),是用于图像处理领域的一种描述。这种描述具有尺度不变性,可在图像中检测出关键点,是一种局部特征描述子。SIFT特征是基于物体上的一些局部外观的兴趣点而与影像的大小和旋转无关。对于光线、噪声、微视角改变的容忍度也相当高。基于这些特性,它们是高度显著而且相对容易撷取,在母数庞大的特征数据库中,很容易辨识物体而且鲜有误认。

2.2 SIFT特点

1.SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性;

2.区分性好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配;

3.多量性,即使少数的几个物体也可以产生大量的SIFT特征向量;

4.高速性,经优化的SIFT匹配算法甚至可以达到实时的要求;

5.可扩展性,可以很方便的与其他形式的特征向量进行联合。

2.3 SIFT算法

2.3.1 SIFT算法可以解决的问题

(1)目标的旋转、缩放、平移;

(2)图像仿射或投影变换;

(3)弱光照影响以及部分目标遮挡;

(4)杂物场景以及噪声点影响。

2.3.2 SIFT算法实现特征匹配的三个流程:

1.提取关键点;

2.对关键点附加详细的信息(局部特征),即描述符;

3.通过特征点(附带上特征向量的关键点)的两两比较找出相互匹配的若干对特征点,建立景物间的对应关系。

2.3.3 SIFT中要查找的特征点

这些点是一些十分突出的点,不会因光照、尺度、旋转等因素的改变而消失,比如角点、边缘点、暗区域的亮点以及亮区域的暗点。假定两幅图像中有相同的景物,那么使用某种算法分别提取各自的特征点,这些点之间会有相互对应匹配关系。根据归纳,我们可以看出SIFT特征点希望选出具有下述不变性的点: 尺度 、方向、位移、光照。

2.4 尺度空间

在一定的范围内,无论物体是大还是小,人眼都可以分辨出来。然而计算机要有相同的能力却不是那么的容易,在未知的场景中,计算机视觉并不能提供物体的尺度大小,其中的一种方法是把物体不同尺度下的图像都提供给机器,让机器能够对物体在不同的尺度下有一个统一的认知。在建立统一认知的过程中,要考虑的就是在图像在不同的尺度下都存在的特征点。

而尺度空间的基本思想是:在图像信息处理模型中引入一个被视为尺度的参数,通过连续变化尺度参数获得多尺度下的尺度空间表示序列,对这些序列进行尺度空间主轮廓的提取,并以该主轮廓作为一种特征向量,实现边缘、角点检测和不同分辨率上的特征提取等。尺度空间中各尺度图像的模糊程度逐渐变大,能够模拟人在距离目标由近到远时目标在视网膜上的形成过程。要使得图像具有尺度空间不变性,就要建立尺度空间。

一个图像的尺度空间,定义为一个变化尺度的高斯函数与原图像的卷积。

在这里插入图片描述
其中*表示卷积运算,(x, y)代表图像的像素位置,尺度空间因子,值越小表示图像被平滑的越少,相应的尺度也就越小。大尺度对应于图像的概貌特征,小尺度对应于图像的细节特征。

2.5 高斯金字塔

尺度空间在实现时使用高斯金字塔表示,高斯金字塔的构建分为两部分:

(1)对图像做不同尺度的高斯模糊;

(2)对图像做降采样(隔点采样)

图像的金字塔模型是指,将原始图像不断降阶采样,得到一系列大小不一的图像,由大到小,从下到上构成的塔状模型。原图像为金字塔的第一层,每次降采样所得到的新图像为金字塔的一层(每层一张图像),每个金字塔的具体层数根据图像的原始大小和塔顶图像的大小共同决定。为了让尺度体现其连续性,高斯金字塔在简单降采样的基础上加上了高斯滤波。如图所示,将图像金字塔每层的一张图像使用不同参数做高斯模糊。

在这里插入图片描述

2.6 关键点检测-DOG

2.6.1 DOG函数(高斯差分函数)

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

2.6.2 DoG高斯差分金字塔

(1)对应DOG算子,构建DOG金字塔。

可通过高斯差分图像看出图像上的像素值变化情况(如果没有变化也就没有特征,特征必须是变化尽可能多的点),DOG图像描绘的是目标的轮廓。

(2)DOG局部极值检测

特征点是由DOG空间的局部极值点组成的。为了寻找DoG函数的极值点,每一个像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小,看其是否比它的图像域和尺度域的相邻点大或者小。如下图所示,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。 一个点如果在DOG尺度空间本层以及上下两层的26个领域中是最大或最小值时,就认为该点是图像在该尺度下的一个特征点。

(3)去除边缘效应

由于DOG函数在图像边缘有较强的边缘响应,因此需要排除边缘响应。DOG函数的峰值点在边缘梯度的方向上主曲率值比较大,而沿着边缘方向则主曲率值较小。

2.7 关键点方向分配、描述和匹配

2.7.1 关键点方向分配

为了使描述符具有旋转不变性,需要利用图像的局部特征为给每一个关键点分配一个方向。通过尺度不变性求极值点,可以使其具有缩放不变的性质。而利用关键点邻域像素的梯度方向分布特性,可以为每个关键点指定方向参数方向,从而使描述子对图像旋转具有不变性。

通过求每个极值点的梯度来为极值点赋予方向,完成关键点的梯度计算后,使用直方图统计邻域内像素的梯度和方向。确定关键点的方向采用梯度直方图统计法,统计以关键点为原点,一定区域内的图像像素点对关键点方向生成所作的贡献。

2.7.2 关键点描述

经过一系列步骤此时对于每一个关键点都拥有三个信息:位置、尺度以及方向。然后就是为每个关键点建立一个描述符,用一组向量将这个关键点描述出来,使其不随各种变化而改变,比如光照和视角等变化。这个描述子不但包括关键点,也包含关键点周围对其有贡献的像素点,并且描述符应该有较高的独特性,以便于提高特征点正确匹配的概率。

SIFT描述子是关键点邻域高斯图像梯度统计结果的一种表示。通过对关键点周围图像区域分块,计算块内梯度直方图,生成具有独特性的向量,这个向量对该区域图像信息的表达具有唯一性。

Lowe实验结果表明:描述子采用4×4×8=128维向量表征,综合效果最优(不变性与独特性)。
在这里插入图片描述

2.7.3 关键点匹配

(1)分别对模板图(参考图,reference image)和实时图(观测图,observation image)建立关

键点描述子集合。目标的识别是通过两点集内关键点描述子的比对来完成。具有128维的关键点描

述子的相似性度量采用欧式距离。

(2)关键点的匹配可以采用穷举法来完成,但是这样耗费的时间太多,一般都采用kd树的数据结

构来完成搜索。搜索的内容是以目标图像的关键点为基准,搜索与目标图像的特征点最邻近的原图

像特征点和次邻近的原图像特征点。

2.8 SIFT算法实现

2.8.1 SIFT特征检测

由于该二进制文件需要的图像格式是灰度.pgm,所以如果图像为其他格式,我们需要首先将其转换成.pgm格式文件,转换的结果以易读的格式保存在文本文件中。转换代码如下:

def process_image(imagename, resultname, params="--edge-thresh 10 --peak-thresh 5"):
    """ 处理一幅图像,然后将结果保存在文件中"""
    if imagename[-3:] != 'pgm':
        # create a pgm file
        im = Image.open(imagename).convert('L')
        im.save('tmp.pgm')
        imagename = 'tmp.pgm'
 
    cmmd = str("D:\python\win64VLfeat\sift.exe " + imagename + " --output=" + resultname +
               " " + params)
    os.system(cmmd)
    print('processed', imagename, 'to', resultname)

下面是从文本文件中将特征读取到NumPy数组中的函数:

def read_features_from_file(filename):
    """ 读取特征属性值,然后将其以矩阵的形式返回"""
    f = np.loadtxt(filename)
    return f[:, :4]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1) 二值图像: 一幅二值图像的二维矩阵仅由0、1两个值构成,“0”代表黑色,“1”代白色。由于每一像素(矩阵中每一元素)取值仅有0、1两种可能,所以计算机中二值图像的数据类型通常为1个二进制位。二值图像通常用于文字、线条图的扫描识别(OCR)和掩膜图像的存储。 2) 灰度图像: 灰度图像矩阵元素的取值范围通常为[0,255]。因此其数据类型一般为8位无符号整数的(int8),这就是人们经常提到的256灰度图像。“0”表示纯黑色,“255”表示纯白色,中间的数字从小到大表示由黑到白的过渡色。在某些软件中,灰度图像也可以用双精度数据类型(double)表示,像素的值域为[0,1],0代表黑色,1代表白色,0到1之间的小数表示不同的灰度等级。二值图像可以看成是灰度图像的一个特例。 3) 索引图像: 索引图像的文件结构比较复杂,除了存放图像的二维矩阵外,还包括一个称之为颜色索引矩阵MAP的二维数组。MAP的大小由存放图像的矩阵元素值域决定,如矩阵元素值域为[0,255],则MAP矩阵的大小为256Ⅹ3,用MAP=[RGB]表示。MAP中每一行的三个元素分别指定该行对应颜色的红、绿、蓝单色值,MAP中每一行对应图像矩阵像素的一个灰度值,如某一像素的灰度值为64,则该像素就与MAP中的第64行建立了映射关系,该像素在屏幕上的实际颜色由第64行的[RGB]组合决定。也就是说,图像在屏幕上显示时,每一像素的颜色由存放在矩阵中该像素的灰度值作为索引通过检索颜色索引矩阵MAP得到。索引图像的数据类型一般为8位无符号整形(int8),相应索引矩阵MAP的大小为256Ⅹ3,因此一般索引图像只能同时显示256种颜色,但通过改变索引矩阵,颜色的类型可以调整。索引图像的数据类型也可采用双精度浮点型(double)。索引图像一般用于存放色彩要求比较简单的图像,如Windows中色彩构成比较简单的壁纸多采用索引图像存放,如果图像的色彩比较复杂,就要用到RGB真彩色图像。 4) RGB彩色图像: RGB图像与索引图像一样都可以用来表示彩色图像。与索引图像一样,它分别用红(R)、绿(G)、蓝(B)三原色的组合来表示每个像素的颜色。但与索引图像不同的是,RGB图像每一个像素的颜色值(由RGB三原色表示)直接存放在图像矩阵中,由于每一像素的颜色需由R、G、B三个分量来表示,M、N分别表示图像的行列数,三个M x N的二维矩阵分别表示各个像素的R、G、B三个颜色分量。RGB图像的数据类型一般为8位无符号整形,通常用于表示和存放真彩色图像,当然也可以存放灰度图像。 4.图像数字化 通过取样和量化过程将一个以自然形式存在的图像变换为适合计算机处理的数字形式。图像在计算机内部被表示为一个数字矩阵,矩阵中每一元素称为像素。图像数字化需要专门的设备,常见的有各种电的和光学的扫描设备,还有机电扫描设备和手工操作的数字化仪。图像编码。 对图像信息编码,以满足传输和存储的要求。编码能压缩图像的信息量,但图像质量几乎不变。为此,可以采用模拟处理技术,在通过模-数转换得到编码,不过多数是采用数字编码技术。编码方法有对图像逐点进行加工的方法,也有对图像施加某种变换或基于区域、特征进行编码的方法。脉码调制、微分脉码调制、预测码和各种变换都是常用的编码技术。 5.图像压缩 由数字化得到的一幅图像的数据量十分巨大,一幅典型的数字图像通常由500×500或1000×1000个像素组成。如果是动态图像,是其数据量更大。因此图像压缩对于图像的存储和传输都十分必要。 有两类压缩算法,即不失真的方法和近似的方法。最常用的不失真压缩取空间或时间上相邻像素值的差,再进行编码。游程码就是这类压缩码的例。近似压缩算法大都采用图像交换的途径,例如对图像进行快速傅里叶变换或离散的余弦变换。著名的、已作为图像压缩国际标准的JPEG和MPEG均属于近似压缩算法。前者用于静态图像,后者用于动态图像。它们已由芯片实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值