OpenCV基本图像处理操作(十)——图像特征harris角点

这篇具有很好参考价值的文章主要介绍了OpenCV基本图像处理操作(十)——图像特征harris角点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

角点

角点是图像中的一个特征点,指的是两条边缘交叉的点,这样的点在图像中通常表示一个显著的几角。在计算机视觉和图像处理中,角点是重要的特征,因为它们通常是图像中信息丰富的区域,可以用于图像分析、对象识别、3D建模等多种应用。

角点的识别可以帮助在进行图像匹配和跟踪时提供稳定的参考点,这是因为角点在图像中的位置比较容易通过算法检测出来,且不易受到视角变化的影响。因此,角点检测在视觉系统中非常重要,如机器人导航、增强现实等领域中都有广泛应用。

图像特征-harris角点检测

Harris 角点检测是一种流行的角点检测算法,用于从图像中识别出角点的位置,即图像中两条边交叉的特征点。这些特征点在图像匹配、追踪、计算机视觉等领域中非常有用。

算法原理

算法的基本思想是检测图像中灰度强度的局部变化非常显著的点。具体来说,Harris 角点检测器会对图像进行窗口滑动,计算窗口内每个点移动小量后对应的灰度变化量。这些变化量通过一个数学公式进行计算,其中包括图像的梯度、梯度的协方差矩阵以及这些矩阵的迹和行列式。

最终,通过一个响应函数的计算,可以评估每个点是否为角点。如果响应函数的值超过某个阈值,则该点被认为是角点。

Harris 角点检测器的优点在于它对图像旋转保持不变性,并且对噪声有一定的抵抗力,但可能对图像尺度的变化敏感。

OpenCV基本图像处理操作(十)——图像特征harris角点,opencv,计算机视觉,opencv,图像处理,人工智能
OpenCV基本图像处理操作(十)——图像特征harris角点,opencv,计算机视觉,opencv,图像处理,人工智能
OpenCV基本图像处理操作(十)——图像特征harris角点,opencv,计算机视觉,opencv,图像处理,人工智能
OpenCV基本图像处理操作(十)——图像特征harris角点,opencv,计算机视觉,opencv,图像处理,人工智能
OpenCV基本图像处理操作(十)——图像特征harris角点,opencv,计算机视觉,opencv,图像处理,人工智能
OpenCV基本图像处理操作(十)——图像特征harris角点,opencv,计算机视觉,opencv,图像处理,人工智能
OpenCV基本图像处理操作(十)——图像特征harris角点,opencv,计算机视觉,opencv,图像处理,人工智能
Harris 角点检测是一种在图像中识别角点的流行算法。其核心思想是通过测量图像窗口在各个方向上移动时产生的度变化程度来识别角点。

Harris 角点检测原理:

Harris 角点检测算法基于这样一个观察:一个窗口如果在图像中的角点上移动,窗口内像素强度的变化将会很大。算法通过构建一个结构张量(也称为二阶矩阵)来量化这种变化,该矩阵反映了图像窗口内强度的变化情况。

数学表示:
  1. 计算图像梯度:首先计算图像的梯度 I x I_x Ix, I y I_y Iy,这里 I x I_x Ix I y I_y Iy 分别是图像在 x 方向和 y 方向的一阶导数。

  2. 构建结构张量:接着计算图像在每一点的结构张量 M M M,其由以下公式定义:
      M = ∑ x , y w ( x , y ) [ I x 2 I x I y I x I y I y 2 ]   \ M = \sum_{x, y} w(x, y) \begin{bmatrix} I_x^2 & I_x I_y \\ I_x I_y & I_y^2 \end{bmatrix} \  M=x,yw(x,y)[Ix2IxIyIxIyIy2] 

    其中, w ( x , y ) w(x, y) w(x,y) 是窗口函数,常用的是高斯窗口。

  3. 响应函数计算:Harris 响应函数 ( R ) 由下面的公式给出:
      R = det ⁡ ( M ) − k ⋅ ( trace ( M ) ) 2   \ R = \det(M) - k \cdot (\text{trace}(M))^2 \  R=det(M)k(trace(M))2 
    其中, det ⁡ ( M ) = λ 1 λ 2 \det(M) = \lambda_1 \lambda_2 det(M)=λ1λ2 是 ( M ) 的行列式(即特征值的乘积), trace ( M ) = λ 1 + λ 2 \text{trace}(M) = \lambda_1 + \lambda_2 trace(M)=λ1+λ2 M M M 的迹(即特征值的和), k k k 是一个经验参数,通常取值在 0.04 到 0.06 之间。

  4. 角点检测:如果 R R R 的值大于某个阈值,那么该点被认为是角点。

代码实战

  • gray: 这是输入图像,应该是灰度图像,因为 Harris 角点检测通常在灰度图像上进行。
  • 2: 这是块大小(blockSize),即用于计算每个像素点的 Harris 响应值的邻域大小。这里的值 2 指的是考虑每个点周围 2x2 的窗口。
  • 3: 这是用于梯度计算的 Sobel 算子的孔径大小(apertureSize)。孔径大小为 3 意味着使用 3x3 的 Sobel 算子来计算图像的 x 方向和 y 方向的导数。
  • 0.04: 这是 Harris 角点检测算法中的自由参数 ( k )。该参数用于在响应函数 ( R ) 中平衡角点的度量,通常取值在 0.04 到 0.06 之间。

该函数的输出是一个灰度图像,其中每个像素的值代表该点作为角点的可能性。角点的位置通常是响应图中值较高的区域。在实际应用中,可能还需要进一步的步骤来阈值化和局部极大值抑制,以准确确定和标记角点的位置。

import cv2 
import numpy as np

img = cv2.imread('test_1.jpg')
print ('img.shape:',img.shape)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# gray = np.float32(gray)
dst = cv2.cornerHarris(gray, 2, 3, 0.04)
print ('dst.shape:',dst.shape)
img[dst>0.01*dst.max()]=[0,0,255]
cv2.imshow('dst',img) 
cv2.waitKey(0) 
cv2.destroyAllWindows()

OpenCV基本图像处理操作(十)——图像特征harris角点,opencv,计算机视觉,opencv,图像处理,人工智能文章来源地址https://www.toymoban.com/news/detail-855941.html

到了这里,关于OpenCV基本图像处理操作(十)——图像特征harris角点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenCV(图像处理)-基于Python-特征检测-特征点匹配

    图像特征就是指有意义的图像区域,具有独特性,易于识别性,比如角点、斑点以及高密度区。而为什么角点具有重要的特征呢? 看下图: 观察ABD三张图片,我们不容易得知图像的位置,而CEF三张图我们特别容易找到它们在原图中对应的位置,这是因为ABD比较平滑,我们不

    2024年02月03日
    浏览(33)
  • 【Python_Opencv图像处理框架】图像基本操作+90bb5729-b33a-4e82-a0d9-faa3e5cbf621

    很幸运能选择Python语言进行学习,这是有关Opencv的图像处理的第一篇文章,讲解了有关图像处理的一些基础操作,作为初学者,我尽己所能,但仍会存在疏漏的地方,希望各位看官不吝指正❤️ 1. 计算机眼中的图像 计算机眼中的图像由一个个像素组成, 每个像素点的值在

    2023年04月18日
    浏览(29)
  • OpenCV(二)——图像基本处理(四)

    目录 4.图像形态学操作 4.1 图像腐蚀 4.2 图像膨胀  4.3 开运算 4.4 闭运算

    2024年02月12日
    浏览(30)
  • OpenCV(二)——图像基本处理(二)

    目录  2.图像的几何变换 2.1 图像平移 2.2 图像缩放 2.3 图像旋转 2.4 仿射变换

    2024年02月12日
    浏览(29)
  • OpenCV(二)——图像基本处理(三)

    目录  3.图像滤波与增强 3.1线性滤波 3.2 非线性滤波 3.3 图像锐化 3.4 直方图均衡化

    2024年02月12日
    浏览(26)
  • python数字图像处理基础(八)——harris角点检测、图像尺度空间、SIFT算法

    原理 Harris 角点检测是一种用于在图像中检测角点的算法。角点是图像中局部区域的交叉点或者突出的特征点。Harris 角点检测算法旨在寻找图像中对于平移、旋转和尺度变化具有不变性的角点。 该算法通过计算图像中每个像素点的灰度值的变化,来识别角点。具体来说,Ha

    2024年01月19日
    浏览(35)
  • ROS OpenCV 图像基本处理函数

    在ROS中结合OpenCV使用时, cv::imread() 函数 并非ROS本身的API,而是来自OpenCV库的函数,用于读取本地磁盘上的图像文件。 其用法如下: cv::Mat cv::imread(const string filename, int flags = IMREAD_COLOR); 参数说明:     filename: 字符串类型,表示要读取的图像文件的完整路径和名称。   

    2024年02月02日
    浏览(33)
  • 【课程介绍】OpenCV 基础入门教程:图像读取、显示、保存,图像处理和增强(如滤波、边缘检测、图像变换),特征提取和匹配,目标检测和跟踪

    [ 专栏推荐 ] 😃 《视觉探索: OpenCV 基础入门教程》 😄 ❤️【简介】: Opencv 入门课程适合初学者,旨在介绍 Opencv 库的基础知识和核心功能。课程包括图像读取、显示、保存,图像处理和增强(如滤波、边缘检测、图像变换),特征提取和匹配,目标检测和跟踪等内容。学

    2024年02月16日
    浏览(45)
  • Python|OpenCV-基本使用和图像处理(1)

    前言 本文是该专栏的第1篇,后面将持续分享OpenCV计算机视觉的干货知识,记得关注。 OpenCV是基于开源许可的跨平台计算机 视觉库 ,起初OpenCV是由Intel公司开发的,直到后面由非营利组织进行维护。提到OpenCV,就不得不说它提供了大量的图像和视频处理函数,使得计算机视觉

    2024年02月12日
    浏览(37)
  • Opencv 图像处理:图像基础操作与灰度转化

    本文已收录于Opencv系列专栏: 深入浅出OpenCV ,专栏旨在详解Python版本的Opencv,为计算机视觉的开发与研究打下坚实基础。免费订阅,持续更新。 1.图像格式 图像压缩比: 通过编码器压缩后的图象数字大小和原图象数字大小的压缩比。 BMP 格式 Windows系统下的 标准位图格式 ,

    2024年02月04日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包