mvc网站入口asp,如何制作个人网站,安阳网站建设优化渠道,模板网站怎么建设文章目录 sift特征提取一、基本原理二、特点三、代码实现1. 函数方法2. 检测图像中的关键点3. 绘制关键点4. 计算关键点描述符5. 输出特征坐标点 总结 sift特征提取
SIFT#xff08;Scale-Invariant Feature Transform#xff0c;尺度不变特征变换#xff09;特征检测是一种… 文章目录 sift特征提取一、基本原理二、特点三、代码实现1. 函数方法2. 检测图像中的关键点3. 绘制关键点4. 计算关键点描述符5. 输出特征坐标点 总结 sift特征提取
SIFTScale-Invariant Feature Transform尺度不变特征变换特征检测是一种在图像处理和计算机视觉领域广泛使用的算法主要用于特征点检测和特征匹配。
SIFT特征具有对旋转、尺度缩放、亮度变化等保持不变性是一种非常稳定的局部特征。
一、基本原理
SIFT算法通过在不同尺度空间中寻找关键点并计算这些关键点的局部特征描述子从而实现图像的特征匹配和识别。
关键点也称为特征点或兴趣点是指图像中一些具有独特性和稳定性的局部特征区域。
其基本原理包括以下几个步骤
构建尺度空间通过对原始图像进行多次高斯模糊和降采样构建出高斯金字塔以在不同尺度下检测出特征点。检测关键点利用高斯差分DoG图像检测尺度空间中的极值点这些极值点被认为是潜在的关键点。定位关键点位置通过泰勒展开式对DoG图像进行拟合精确定位关键点的位置并排除低对比度和边缘响应的干扰。确定关键点方向基于图像局部的梯度方向为每个关键点分配一个或多个主方向以保证特征描述子的旋转不变性。生成特征描述子在关键点周围的邻域内测量图像局部的梯度并将这些梯度变换成一种表示形式生成具有128维特征向量的特征描述子。
二、特点
图像的局部特征对旋转、尺度缩放、亮度变化保持不变对视角变化、仿射变换、噪声也保持一定程度的稳定性。独特性好信息量丰富适用于海量特征库进行快速、准确的匹配。多量性即使是很少几个物体也可以产生大量的SIFT特征。高速性经优化的SIFT匹配算法甚至可以达到实时性。扩招性可以很方便的与其他的特征向量进行联合。
三、代码实现
原始图片 1. 函数方法
创建sift特征的提取对象
cv2.SIFT_create() / cv2.xfeatures2d.SIFT_create() ----- 创建一个sift特征的提取对象检测图像中的关键点
sift.detect(img)绘制关键点
drawKeypoints(image,keypoints,outImage,colorNone,flagsNone)
参数
-- image:原始图像
-- keypoints从原图中获得的关键点这也是画图时所用到的数据
-- outImage输出图像可以是原图也可以是None
-- color颜色设置更改画笔颜色
-- flags绘图功能的标识设置计算关键点描述符
sift.compute() --- 输出关键点的形状和描述符的形状2. 检测图像中的关键点
# 检测图像中的关键点
# cv2.SIFT_create() / cv2.xfeatures2d.SIFT_create() ----- 创建一个sift特征的提取对象
#sift.detect(img) ----- 在图像中查找关键点yf cv2.imread(tu.jpg)
yf_gray cv2.cvtColor(yf,cv2.COLOR_BGR2GRAY)
sift cv2.SIFT_create() # 创建sift对象
kp sift.detect(yf_gray) # 查找关键点3. 绘制关键点
yf_sift cv2.drawKeypoints(yf,kp,None,flagscv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
cv2.imshow(yf_sift,yf_sift)
cv2.waitKey(0)4. 计算关键点描述符
主要用于方便后期进行特征匹配
# 使用sift.compute()计算关键点描述符方便后期的特征匹配
kp,des sift.compute(yf,kp)
print(np.array(kp).shape,des.shape)
# 输出关键点的形状和描述符的形状
# np.array(kp).shape表示关键点的数量和属性
# des.shape表示描述符的数量和属性
-------------------
(764,) (764, 128)5. 输出特征坐标点
# 输出特征点坐标
# .pt将隐藏的坐标数据显示出来
for i in kp:print(f特征点坐标为:{i.pt})
----------------------
展示部分结果
特征点坐标为:(5.986441612243652, 704.0958862304688)
特征点坐标为:(6.146509647369385, 192.4614715576172)
特征点坐标为:(6.952261447906494, 719.527587890625)
特征点坐标为:(11.127826690673828, 497.750732421875)
特征点坐标为:(11.127826690673828, 497.750732421875)总结
本篇介绍了
sift特征提取的作用是描绘出图中的特征点如何获得特征点的信息以便于特征匹配