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

2024-04-18 03:44

本文主要是介绍OpenCV基本图像处理操作(十)——图像特征harris角点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

角点

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

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

图像特征-harris角点检测

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

算法原理

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

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

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
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 npimg = 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角点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/913677

相关文章

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND

OpenCV在Java中的完整集成指南分享

《OpenCV在Java中的完整集成指南分享》本文详解了在Java中集成OpenCV的方法,涵盖jar包导入、dll配置、JNI路径设置及跨平台兼容性处理,提供了图像处理、特征检测、实时视频分析等应用... 目录1. OpenCV简介与应用领域1.1 OpenCV的诞生与发展1.2 OpenCV的应用领域2

在Java中使用OpenCV实践

《在Java中使用OpenCV实践》用户分享了在Java项目中集成OpenCV4.10.0的实践经验,涵盖库简介、Windows安装、依赖配置及灰度图测试,强调其在图像处理领域的多功能性,并计划后续探... 目录前言一 、OpenCV1.简介2.下载与安装3.目录说明二、在Java项目中使用三 、测试1.测

Python使用openpyxl读取Excel的操作详解

《Python使用openpyxl读取Excel的操作详解》本文介绍了使用Python的openpyxl库进行Excel文件的创建、读写、数据操作、工作簿与工作表管理,包括创建工作簿、加载工作簿、操作... 目录1 概述1.1 图示1.2 安装第三方库2 工作簿 workbook2.1 创建:Workboo

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更