《深度学习》OpenCV 角点检测、特性提取SIFT 原理及案例分析

[复制链接]
发表于 2026-1-15 10:19:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
目次
一、角点检测
1、什么是角点检测
2、检测流程
        1)输入图像
        2)图像预处置惩罚
        3)特性提取
        4)角点检测
        5)角点定位和标记
        6)角点筛选或后处置惩罚(可选)
        7)输出结果
3、邻域
4、案例实现
        运行结果:
二、特性提取sift
1、什么是特性提取
2、步调
        1)数据预处置惩罚
        2)特性选择
        3)特性提取
        4)特性表现
3、案例实现
        运行结果:


一、角点检测

1、什么是角点检测

        角点检测是盘算机视觉中的一种特性检测方法,用于探求图像中的角点大概具有角点特性的图像地区。角点是指图像中忽然改变方向的点,即在其四周的差别方向上都有较大的灰度厘革。角点具有一些特别性子,如旋转稳固性、标准稳固性和光照稳固性等,因此在图像处置惩罚和盘算机视觉中具有广泛的应用。

2、检测流程

        1)输入图像

                将待检测的图像作为输入。
        2)图像预处置惩罚

                对输入图像举行须要的预处置惩罚,如灰度化、降噪等,以便更好地举行角点检测。
        3)特性提取

                利用角点检测算法对预处置惩罚后的图像举行角点特性提取。常见的角点检测算法有Harris角点检测算法、Shi-Tomasi角点检测算法等。
        4)角点检测

                根据所选的角点检测算法,盘算图像中的每个像素点的角点相应值,以判定其是否为角点。详细算法会根据差别的方法而有所差别。
        5)角点定位和标记

                根据角点相应值,确定角点的位置,并举行标记。可以利用函数或算法来绘制或返回角点的位置信息。
        6)角点筛选或后处置惩罚(可选)

                根据详细需求,可以对检测到的角点举行筛选或举行后处置惩罚利用,如非极大值克制、阈值过滤等,以去除不精确的角点或加强有效的角点。
        7)输出结果

                根据须要,可以将检测到的角点的位置信息、图像中绘制的标记或其他相干信息作为输出结果。

3、邻域

        在角点检测中,邻域指的是一个中心像素四周的一组像素点。在检测角点时,我们须要思量中心像素四周的像素点的特性,如灰度厘革,梯度等。这些特性的盘算通常须要利用邻域内的像素信息。
        邻域的巨细在角点检测中非常告急,它决定了我们思量的像素点的数量。通常,邻域的巨细取决于详细的角点检测算法和应用场景。较大的邻域可以捕捉更多的细节信息,但会增长盘算的复杂性;较小的邻域可以加速盘算速率,但大概会导致角点检测结果不精确。

4、案例实现

  1. # 角点指图像中局部区城与周围区域有较大灰度变化的点或像素。
  2. # cornerHarris(img,blockSize, ksize, kl, dst[, borderType]])-> dst
  3. # img:输入图像。
  4. # blocksize:角点检测中要考虑的领域大小。
  5. # ksize:Sobel求导中使用的窗口大小。
  6. # k:Harris角点检测方程中的自由参数,取值参数为[0.04,0.06]。
  7. # dst:返回numpy.ndarray对象,大小和src相同,值越大,对应像素点是角的機率越高
  8. img = cv2.imread('huanghelou.png')   # 导入图像
  9. cv2.imshow('img1',img)
  10. cv2.waitKey(0)
  11. gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)  # 转变为灰度图
  12. dst = cv2.cornerHarris(gray,4,3, 0.04)  # 输入图像gray必须是灰度图,4表示领域的大小为2*2,
  13. # 3为计算梯度图的Sobel算子的孔径大小,0.04表示角点检查灵敏度,越小检测到的角点越多
  14. # dst为与输入图像相同大小的矩阵
  15. # Sobel算子是一种常用的边缘检测算子
  16. # 标记检测到的角点
  17. img[dst > 0.05 * dst.max()] = [0,255,0]  # 将原图像中灰度值大于0.05*dst.max()的值标记为绿色
  18. # 这里通过对角点响应进行阈值处理,标记出检测到的角点。
  19. # 0.05 * dst.max() 是一个阈值,大于这个值的像素点会被标记为绿色。
  20. cv2.imshow('img',img)
  21. cv2.waitKey(0)
复制代码
        运行结果:



二、特性提取sift

1、什么是特性提取

        特性提取是指从原始数据中提取出具有辨识性和代表性的特性,用于形貌和表现数据的关键信息。在盘算机视觉、模式辨认和呆板学习等范畴,特性提取是一项关键的使命,由于原始数据通常含有大量冗余和噪声,通过提取特性可以淘汰数据的维度、去除冗余信息,从而更好地捕捉数据的埋伏模式和布局。
        特性可以是数据的某种可丈量的属性,比如颜色、纹理、外形、梯度等。特性提取的目标是选择和盘算这些特性,使其可以或许表达出差别种别或实例之间的差别和相似性。
        SIFI标准稳固特性转换是一种呆板视觉的算法用来侦测与形貌影像中的局部性特性,它在空间标准中探求极值点,并提取出其位置、标准、旋转稳固命。
2、步调

        1)数据预处置惩罚

                对原始数据举行预处置惩罚,如去噪、归一化、平滑等。
        2)特性选择

                从原始数据中选择符合的特性子集,以制止冗余和噪声。
        3)特性提取

                根据范畴知识或数学算法,盘算和提取数据中的特性。
        4)特性表现

                将提取到的特性表现成一组数值、向量或其他情势,便于盘算机处置惩罚和分析。
        特性提取的优劣对于后续的数据分析、模子练习和模式辨认使命至关告急。一个好的特性应该可以或许具有辨别性、区分差别种别或实例,而且具有鲁棒性,对于数据的变形和噪声有肯定的容忍度。

3、案例实现

  1. import numpy as np
  2. man = cv2.imread('man.png')
  3. cv2.imshow('man',man)
  4. cv2.waitKey(0)
  5. man_gray = cv2.cvtColor(man,cv2.COLOR_BGR2GRAY)
  6. sift = cv2.SIFT_create()  # 创建一个sift对象
  7. kp = sift.detect(man_gray)   # 在灰度图中查找关键点
  8. for x in kp:   # 打印所有关键点坐标
  9.     print(x.pt)
  10. # drawKeypoints(image,keypoints,outImage, color=None, flags=None)
  11. # image:原始图片
  12. # keypoints:从原图中获得的关键点,这也是画图时所用到的数据
  13. # outputimage:输出图像,可以是原始图片,也可以是None
  14. # color:颜色设置过修改(b,g,r)的值,更改画笔的颜色,b=蓝色,g=绿色,r=红色。
  15. # flags:绘图功能尚标识设置
  16. # 绘制关键点,在原始图像上,绘制点kp,None表示不使用绘制匹配项的图像,cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS指定绘制关键点的样式
  17. man_sift = cv2.drawKeypoints(man,kp,None,flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
  18. cv2.imshow('man sift',man_sift)   # 展示绘制了关键信息的图片
  19. cv2.waitKey(0)
  20. # 使用sift.compute()计算关键点描述符,方便后期的特征匹配
  21. keypoints,des = sift.compute(man,kp)  # man原始图像,kp检测到的关键点坐标的列表,des是一个numpy数组,包含所有关键点的描述符
  22. print(np.array(keypoints).shape,des.shape)  # 打印关键点的个数,以及关键点的描述符矩阵的形状
  23. # 输出关键点的形状和描述符的形状。
  24. # np.array(keypoints).shape 表示关键点的数量和形状。
复制代码
        运行结果:





回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表