首页 > 其他分享 >图像特征提取

图像特征提取

时间:2022-09-26 09:56:45浏览次数:49  
标签:阈值 检测 角点 sift 图像 特征提取 关键点

1、角点的定义

如果一个点在任意方向的微小变动都会导致灰度很大的变化,那么这个点就被称为角点。也就是一阶导数中的局部最大值就是角点。

2、Harris角点检测

harris角点具有平移不变性和旋转不变性,但不具有尺度变换不变性。

步骤:

  • RGB2GRAY
  • sobel算子计算Ix Iy
  • 构建M矩阵 
  • 计算det(M) - trace(M)^2   阈值取0.04 ~ 0.06,大于一定阈值作为角点 
  • R = det(M) = λ1 * λ2    trace(M) = λ1 + λ2  
  • 可不一定正确的将λ1看作x方向梯度,λ2看作y方向梯度,则二者都很小时,说明是内部,二者都很大时说明是角点,二者一个很大一个很小时,说明是边缘

harris返回的是一个由角点分数构成的灰度图像,选取适当的阈值对结果图像进行二值化就检测到了图像的角点。

# opencv中的harris角点检测  要求输入图像为float32
score_img = cv2.cornerHarris(img, blockSize, ksize, k)
blockSize:角点检测的领域大小
ksize:sobel核的大小
k:0.04 ~ 0.06

3、Shi-Tomasi角点检测

harris的改进,将打分函数R修改为  R = min(λ1, λ2),如果得分超过阈值,即认定该点为角点,即要求λ1和λ2都超过阈值

# opencv中的Shi-Tomasi检测
corners = cv2.goodFeaturesToTrack(gray, nums, level, distance)
nums:返回的角点个数
level:角点的质量水平  0 ~ 1
distance: 相邻角点之间的最短欧式距离

4、SIFT角点检测

为解决尺度变换导致的角点检测问题,提出sift角点检测,分为四步实现

  • 尺度空间极值检测:LoG 高斯拉普拉斯算子计算量很大,故sift用DoG来对LoG做近似;在DoG搞定后,就可以在不同的尺度空间和2D平面搜索局部最大值了。
  • 对于图像中的一个像素点来说,需要与自己周围八邻域和尺度空间中上下两层中的18个点点关闭,如果是局部最大值,说明是关键点
  • 关键点定位:要对找到的关键点进行修正
  • 为关键点指定方向参数:
  • 关键点描述符:选取关键点周围的16X16邻域,由16个4x4方块的方向直方图组成的长度为128的向量构成描述符
  • 关键点匹配:采用关键顶啊特征向量的欧式距离作为两幅图像中关键点的相似性判定度量
# opencv中的sift检测   3.4.1之后sift进专利,付费了
sift = cv2.SIFT()
keypoints = sift.detect(gray, None)

 

 

由特征检测延伸到图像拼接

实现方法:

1、用SIFT提取图像中的特征点,对关键点计算特征向量

sift = cv2.xfeatures2d.SIFT_create()

keypoints, feature = sift.detectAndCompute(image,None)

2、利用两张图像的特征点和特征向量进行匹配,可以用Knn进行匹配,但是用FLANN(快速最近邻搜索包)更快,使用FLANN的单应性匹配

3、单应性匹配后获得透视变换矩阵H,用H矩阵的逆矩阵对第二幅图进行透视变换,转换成第一张图一样的视角  (单应性被定义为图像的两个平面投影之间的映射)

4、透视变换后就可以直接拼接图片了,将图片通过numpy直接加到透视变化完成的图像的左边,覆盖掉重合的部分,可以加权平均,但拉普拉斯金字塔效果更好

标签:阈值,检测,角点,sift,图像,特征提取,关键点
From: https://www.cnblogs.com/Liang-ml/p/16725191.html

相关文章

  • 如何使用Modelsim进行图像处理仿真
    #modelsim如何仿真AlteraIP##建立仿真库我们将IP核等相关库文件编译到Modelsim中后,以后凡是设计中调用到IP核时,我们就不用再重复添加了。我们看一下如何在Modelsim中......
  • 【图像处理笔记】图像分割之阈值处理
    本章的大多数分割算法都基于图像灰度值的两个基本性质之一:不连续性和相似性。第一类方法根据灰度的突变(如边缘)将图像分割为多个区域;第二类方法根据一组预定义的准则把一幅......
  • 图像处理学习笔记-04-频率域滤波01-基本知识
    背景傅里叶指出:任何周期函数都可以表示为不同频率的正弦和/或余弦之和的形式,每个正弦项和/或余弦项乘以不同的系数(现在称该和为傅里叶级数);傅里叶变换:非周期函数(该曲......
  • KeyShot Pro 11入门:如何选择环境渲染图像
    KeyShotPro11可以让您在几分钟内渲染图像。通过提供许多高级功能和即时实时反馈的简单界面,您可以在专注于设计的同时节省时间。下面为您带来了KeyShotPro11入门,只要讲......
  • Python cv2(Opencv) 图像运算
    OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和MacOS操作系统上。它轻量级而且高效,由一系列C函数和少......
  • Python cv2(OpenCV) 图像处理
    OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和MacOS操作系统上。它轻量级而且高效,由一系列C函数和少......
  • 跟我学Python图像处理丨带你掌握傅里叶变换原理及实现
    摘要:傅里叶变换主要是将时间域上的信号转变为频率域上的信号,用来进行图像除噪、图像增强等处理。本文分享自华为云社区《[Python图像处理]二十二.Python图像傅里叶变换原......
  • 基于扩散模型的图像压缩:创建基于Stable Diffusion的有损压缩编解码器
    StableDiffusion是最近在图像生成领域大火的模型,在对他研究的时候我发现它可以作为非常强大的有损图像压缩编解码器。在介绍之前,我们先看看它与高压缩率下的JPG和WebP相比......
  • 图像处理学习笔记-03-灰度变换与空间滤波-模糊技术
    混合空间增强法将多种图像增强方法结合起来,完成困难的图像增强任务使用模糊技术进行灰度变换和空间滤波目的:例如将人分为年轻人和非年轻人,使用一个确定的阈值例如20岁,......
  • GCINE4349 4.3微米 49MP 卷帘快门 堆栈背照式 CMOS图像传感器
    GCINE43494.3微米49MP卷帘快门堆栈背照式CMOS图像传感器<ignore_js_op>GCINE4349采用4.3um背照像素设计,4900万像素(8192x6000)全画幅(35.2x25.8mm),在16bitADC(64x......