当前位置: 首页 > news >正文

计算机视觉图像特征提取入门:Harris角点与SIFT算法

在这里插入图片描述
在这里插入图片描述

计算机视觉图像特征提取入门:Harris角点与SIFT算法

  • 一、前言
  • 二、Harris 角点检测算法​
    • 2.1 Harris 角点的定义与直观理解​
      • 2.1.1 角点的概念​
      • 2.1.2 Harris 角点的判定依据​
    • 2.2 Harris 角点检测的实现步骤​
      • 2.2.1 计算图像的梯度​
      • 2.2.2 构建结构张量矩阵​
      • 2.2.3 计算 Harris 响应值​
      • 2.2.4 非极大值抑制与阈值筛选​
      • 2.2.5 代码示例(Python + OpenCV)​
    • 2.3 Harris 角点检测的应用场景​
      • 2.3.1 图像配准​
      • 2.3.2 目标识别​
      • 2.3.3 运动估计​
  • 三、SIFT 算法​
    • 3.1 SIFT 算法的核心思想与特点​
      • 3.1.1 尺度不变性与旋转不变性​
      • 3.1.2 特征点描述子的构建​
    • 3.2 SIFT 算法的实现步骤​
      • 3.2.1 尺度空间构建​
      • 3.2.2 关键点检测​
      • 3.2.3 关键点精确定位​
      • 3.2.4 方向分配​
      • 3.2.5 特征描述子生成​
      • 3.2.6 代码示例(Python + OpenCV)​
    • 3.3 SIFT 算法的应用场景​
      • 3.3.1 图像匹配​
      • 3.3.2 目标跟踪​
      • 3.3.3 三维重建​
    • 3.4 SIFT 算法的优缺点分析​
      • 3.4.1 优点​
      • 3.4.2 缺点​
  • 四、Harris 角点与 SIFT 算法的对比​
    • 4.1 特征特性对比​
    • 4.2 计算复杂度对比​
    • 4.3 应用场景适应性对比​
  • 五、总结与展望​
  • 致读者一封信

计算机视觉图像特征提取入门:Harris角点与SIFT算法,在计算机视觉领域,图像特征提取是一项至关重要的基础任务。它旨在从图像中提取具有代表性和独特性的信息,这些信息能够帮助计算机理解图像内容,为后续的目标识别、图像匹配、图像分割等高级任务提供有力支持。Harris 角点和 SIFT(尺度不变特征变换)算法作为经典的图像特征提取方法,在学术界和工业界都得到了广泛应用。Harris 角点能够有效地检测出图像中的角点特征,这些角点往往是图像中物体形状的关键转折点,蕴含着丰富的结构信息。SIFT 算法则更为强大,它能够提取出具有尺度不变性、旋转不变性等特性的特征点,即使在图像发生尺度变化、旋转、光照变化等复杂情况下,也能准确地匹配和识别特征。本文将深入探讨 Harris 角点和 SIFT 算法的原理、实现步骤,并通过大量的代码示例帮助读者更好地理解和应用这两种算法。

在这里插入图片描述

一、前言

    计算机视觉是一门研究如何使机器“看”的科学,更进一步的说,就是是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取‘信息’的人工智能系统。这里所指的信息指Shannon定义的,可以用来帮助做一个“决定”的信息。因为感知可以看作是从感官信号中提取信息,所以计算机视觉也可以看作是研究如何使人工系统从图像或多维数据中“感知”的科学。


👉👉👉 🥇 点击进入计算机视觉专栏,计算机视觉(CV)是人工智能的重要分支,致力于让机器通过数字图像或视频获取、处理和分析视觉信息,并模拟人类视觉的认知能力。本专栏涵盖基础概念、技术应用、前沿研究和实战案例等方向。

👉👉👉 🥇 点击进入计算机网络技术专栏,本专栏旨在深入探讨计算机网络的核心概念、关键技术、协议标准以及最新发展趋势,帮助读者全面理解网络通信的原理与实践。

👉👉👉 🥇 点击进入网络安全知识专栏,本专栏详细介绍了网络安全入门:理解基本概念和术语,网络安全的五大核心领域:防护、检测、响应、恢复与治理,常见的网络攻击类型及防范技巧,网络安全防护层次:从物理到应用的多重保障,企业网络安全的十大挑战及解决方案等。

二、Harris 角点检测算法​

2.1 Harris 角点的定义与直观理解​

2.1.1 角点的概念​

    在图像中,角点是指那些在多个方向上都有显著变化的点。从直观上看,角点可以被认为是图像中物体轮廓的转折点或者是不同区域的交汇点。例如,在一幅建筑图像中,建筑物的墙角、窗户的角落等都是典型的角点。角点具有丰富的信息,对于图像的配准、目标识别等任务具有重要意义。因为角点在图像中的位置相对稳定,即使图像发生一定程度的变形、旋转或光照变化,角点仍然能够保持其独特的特征,从而为后续的图像处理提供可靠的参考点。​

2.1.2 Harris 角点的判定依据​

    Harris 角点检测算法基于图像局部窗口的灰度变化来判断是否为角点。假设在图像中存在一个以点(x,y)为中心的小窗口W,当这个窗口在图像上进行微小移动(u,v)时,窗口内的灰度变化可以通过以下公式计算:​

其中,I(x,y)表示图像在点(x,y)处的灰度值。如果在某个方向上移动窗口时,灰度变化E(u,v)较大,说明该点周围的图像特征在这个方向上变化明显。Harris 角点检测通过计算窗口在x和y方向上的一阶导数,构建一个2×2的矩阵M:​
在这里插入图片描述
在这里插入图片描述

2.2 Harris 角点检测的实现步骤​

2.2.1 计算图像的梯度​

首先,需要计算图像在x和y方向上的梯度。这可以通过使用一些常见的梯度算子来实现,如 Sobel 算子。Sobel 算子是一个3×3的卷积核,在x方向上的卷积核为:​

在y方向上的卷积核为:​
在这里插入图片描述

在这里插入图片描述

2.2.2 构建结构张量矩阵​

在这里插入图片描述

2.2.3 计算 Harris 响应值​

利用前面构建的矩阵M,计算每个像素点的 Harris 响应值R。通过遍历图像中的所有像素点,计算出每个点的R值,得到一幅 Harris 响应图像。​

2.2.4 非极大值抑制与阈值筛选​

在得到 Harris 响应图像后,需要进行非极大值抑制操作。这是因为在角点周围的区域,Harris 响应值可能也会比较大,但这些点并不是真正的角点。非极大值抑制的目的是在局部邻域内,只保留 Harris 响应值最大的点,抑制其他点。具体做法是,对于每个像素点,将其 Harris 响应值与邻域内的其他像素点进行比较,如果该点的响应值不是邻域内最大的,则将其值设为 0。最后,通过设定一个阈值,筛选出 Harris 响应值大于该阈值的点,这些点即为检测到的 Harris 角点。​

2.2.5 代码示例(Python + OpenCV)​

import cv2​
import numpy as np​
​
# 读取图像​
image = cv2.imread('example.jpg')​
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)​
​
# 使用OpenCV的Harris角点检测函数​
dst = cv2.cornerHarris(gray, 2, 3, 0.04)​
​
# 对检测结果进行膨胀,用于标记角点,仅为了可视化​
dst = cv2.dilate(dst, None)​
​
# 设置阈值,这里根据图像的具体情况进行调整​
image[dst > 0.01 * dst.max()] = [0, 0, 255]​
​
cv2.imshow('Harris Corners', image)​
cv2.waitKey(0)​
cv2.destroyAllWindows()

    在这段代码中,首先使用cv2.imread读取图像,并将其转换为灰度图像。然后,调用cv2.cornerHarris函数进行 Harris 角点检测,该函数的参数依次为输入的灰度图像、角点检测时考虑的邻域大小(这里设为 2)、Sobel 算子的孔径大小(设为 3)以及 Harris 响应值计算中的常数k(设为 0.04)。接着,对检测结果dst进行膨胀操作,这一步主要是为了在可视化时能够更清晰地看到角点。最后,通过设定一个阈值(这里是 Harris 响应值最大值的 0.01 倍),将检测到的角点在原图像上标记为红色并显示出来。​

2.3 Harris 角点检测的应用场景​

2.3.1 图像配准​

    在图像配准任务中,需要将不同时间、不同视角或不同传感器获取的图像进行对齐。Harris 角点由于其在图像中的稳定性,可以作为图像之间的对应点。通过检测两幅图像中的 Harris 角点,然后使用一些匹配算法(如基于欧式距离的最近邻匹配算法)找到角点之间的对应关系,进而计算出图像之间的变换矩阵(如平移、旋转、缩放等变换),实现图像的配准。例如,在医学图像领域,需要将同一患者不同时期的 CT 图像进行配准,Harris 角点检测可以帮助找到图像中的关键特征点,实现图像的准确对齐,便于医生观察病情的变化。​

2.3.2 目标识别​

    在目标识别任务中,Harris 角点可以作为目标物体的特征描述子。通过提取目标物体图像中的 Harris 角点,并将其与训练集中的目标特征进行匹配,可以识别出图像中的目标物体。例如,在智能安防系统中,要识别监控图像中的行人、车辆等目标,Harris 角点检测可以提取目标的关键特征,结合机器学习算法(如支持向量机)进行目标分类和识别。​

2.3.3 运动估计​

    在视频分析中,通过检测相邻帧图像中的 Harris 角点,并跟踪这些角点在不同帧之间的运动轨迹,可以实现对物体运动的估计。这在自动驾驶系统中具有重要应用,通过分析摄像头采集的视频帧中的 Harris 角点运动,能够判断车辆周围物体的运动方向和速度,为自动驾驶决策提供依据。​

三、SIFT 算法​

3.1 SIFT 算法的核心思想与特点​

3.1.1 尺度不变性与旋转不变性​

    SIFT 算法的核心目标是提取出具有尺度不变性和旋转不变性的特征点。尺度不变性意味着无论图像是放大还是缩小,提取的特征点都能保持一致。旋转不变性则保证图像在发生旋转时,特征点的描述也不会改变。这使得 SIFT 算法在处理不同尺度和旋转状态下的图像时具有很强的鲁棒性。例如,在识别一个物体时,无论该物体在图像中是远处的小物体还是近处的大物体,也无论物体是正放还是旋转了一定角度,SIFT 算法都能提取出相同或相似的特征点,从而准确地识别出物体。​

3.1.2 特征点描述子的构建​

    SIFT 算法通过构建独特的特征点描述子来表征每个特征点。特征点描述子是一个向量,它包含了特征点周围邻域内的图像梯度信息。SIFT 算法将特征点邻域划分为多个子区域,计算每个子区域内的梯度方向直方图,然后将这些直方图信息组合起来,形成一个高维的特征向量。这个特征向量能够准确地描述特征点周围的图像结构,并且在图像发生尺度、旋转和光照变化时,具有较好的稳定性。例如,对于一个在不同光照条件下拍摄的同一物体图像,SIFT 特征点描述子能够保持相似性,从而实现准确的特征匹配。​

3.2 SIFT 算法的实现步骤​

3.2.1 尺度空间构建​

在这里插入图片描述

3.2.2 关键点检测​

    在尺度空间中,通过比较每个像素点与其邻域内的像素点(包括同层和上下层的邻域)来检测关键点。具体来说,对于每个像素点,将其与同尺度下周围
8个邻域像素点以及上下相邻尺度层对应位置的9×2个像素点进行比较,如果该像素点是这些邻域像素点中的极大值或极小值点,则该点被认为是一个潜在的关键点。这一步骤能够检测出在不同尺度下具有显著特征变化的点,这些点对尺度变化具有一定的不变性。​

3.2.3 关键点精确定位​

    检测到的潜在关键点可能由于噪声等因素存在位置偏差,需要进行精确定位。SIFT 算法通过拟合三维二次函数来精确确定关键点的位置和尺度。对于每个潜在关键点,利用其周围邻域的像素值构建一个二次函数,通过求解该二次函数的极值点来得到关键点的精确位置和尺度。同时,还会去除那些响应值较低(即特征不明显)的关键点以及位于边缘区域的关键点,以提高关键点的质量。​

3.2.4 方向分配​

    为每个关键点分配一个主方向,使得特征描述子具有旋转不变性。在关键点的邻域内,计算每个像素点的梯度方向和幅值。然后,构建一个梯度方向直方图,直方图的范围通常是0−360°,将邻域内的梯度方向分配到对应的直方图区间内。取直方图中最大值对应的方向作为关键点的主方向,如果存在其他方向的梯度幅值超过最大值的80%,则将这些方向也作为关键点的辅方向。通过为关键点分配方向,在构建特征描述子时可以基于该方向进行归一化处理,使得特征描述子在图像旋转时保持不变。​

3.2.5 特征描述子生成​

    以关键点为中心,取一定大小的邻域(通常为16×16像素),将其划分为4×4个小区域。对于每个小区域,计算其梯度方向直方图(通常分为8个方向区间)。将这些小区域的梯度方向直方图信息依次排列,形成一个4×4×8=128维的特征向量,这个向量就是该关键点的 SIFT 特征描述子。在计算过程中,还会对梯度幅值进行高斯加权,使得靠近关键点中心的像素对特征描述子的贡献更大。这样生成的特征描述子能够充分描述关键点周围的图像结构,并且对尺度、旋转和光照变化具有较强的鲁棒性。​

3.2.6 代码示例(Python + OpenCV)​

import cv2​
import numpy as np​
​
# 读取图像​
image = cv2.imread('example.jpg')​
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)​
​
# 创建SIFT对象​
sift = cv2.SIFT_create()​
​
# 检测关键点和计算描述子​
keypoints, descriptors = sift.detectAndCompute(gray, None)​
​
# 在图像上绘制关键点​
image_with_keypoints = cv2.drawKeypoints(image, keypoints, None, color=(0, 255, 0), flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)​
​
cv2.imshow('SIFT Keypoints', image_with_keypoints)​
cv2.waitKey(0)​
cv2.destroyAllWindows()

​    在这段代码中,首先读取图像并将其转换为灰度图像。然后,使用cv2.SIFT_create()创建一个 SIFT 对象。接着,调用detectAndCompute方法,该方法会自动检测图像中的关键点并计算其描述子,返回的keypoints是检测到的关键点列表,descriptors是对应的特征描述子数组。最后,使用cv2.drawKeypoints函数在原图像上绘制出检测到的关键点,将绘制后的图像显示出来。这里绘制关键点时,使用了cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS标志,该标志会绘制出关键点的大小和方向等详细信息,使可视化效果更丰富。​

3.3 SIFT 算法的应用场景​

3.3.1 图像匹配​

​    SIFT 算法在图像匹配领域有着广泛的应用。通过提取两幅图像中的 SIFT 特征点和描述子,使用一些匹配算法(如 BFMatch(Brute - Force Match)暴力匹配算法),计算两幅图像中特征描述子之间的距离(通常使用欧氏距离或余弦距离),找到距离最小的特征点对,从而实现图像之间的匹配。例如,在图像检索系统中,用户上传一幅查询图像,系统通过提取查询图像和数据库中图像的 SIFT 特征,进行特征匹配,找出与查询图像最相似的图像。在全景图像拼接中,通过匹配相邻图像之间的 SIFT 特征点,确定图像之间的重叠区域和变换关系,实现​图像的无缝拼接,生成广阔视角的全景图像。在实际操作中,匹配得到的特征点对需要经过进一步筛选,去除误匹配点,以提高匹配精度。常用的方法有随机抽样一致性(RANSAC)算法,它通过随机选取部分特征点对来估计变换模型,并计算其他点对与该模型的符合程度,多次迭代后保留最符合模型的点对集合,从而得到准确的匹配结果用于后续操作。​

3.3.2 目标跟踪​

​    在目标跟踪任务中,SIFT 算法能够有效应对目标在视频序列中出现的尺度变化和旋转等情况。首先在初始帧中提取目标物体的 SIFT 特征点和描述子,建立目标模板。然后在后续帧中,通过搜索与目标模板特征描述子最匹配的特征点,确定目标的位置。例如在监控视频中跟踪特定车辆,即使车辆在行驶过程中由于远近变化出现尺度改变,或者因转弯产生旋转,SIFT 算法凭借其尺度和旋转不变性,依然可以准确地跟踪车辆。通过不断更新目标模板的特征点和描述子,还能适应目标外观的缓慢变化,提高跟踪的稳定性和持续性。​

3.3.3 三维重建​

​    SIFT 算法在三维重建领域发挥着重要作用。从多个不同视角拍摄的图像中提取 SIFT 特征点并进行匹配,通过三角测量原理,可以计算出这些特征点在三维空间中的坐标。例如在文物数字化三维重建中,对文物从不同角度拍摄大量图像,利用 SIFT 算法匹配不同图像中的相同特征点,结合相机的内参和外参信息(相机内部参数如焦距、主点位置,外部参数如相机在世界坐标系中的位置和姿态),精确计算特征点的三维坐标,进而构建文物的三维模型。这种基于 SIFT 特征的三维重建方法能够准确还原文物的细节特征,为文物保护、展览展示等提供高精度的数字化资源。​

3.4 SIFT 算法的优缺点分析​

3.4.1 优点​

​    强大的不变性:SIFT 算法最显著的优点是其尺度不变性和旋转不变性,这使得它在处理不同尺度和旋转状态下的图像时表现出色,极大地提高了特征提取和匹配的准确性与鲁棒性,适用于各种复杂场景下的计算机视觉任务。​

​    独特的特征描述子:SIFT 算法生成的 128 维特征描述子能够全面且细致地描述关键点周围的图像结构信息,并且在光照变化等情况下仍能保持较好的稳定性,为图像匹配和目标识别提供了可靠的特征表示。​

​    广泛的适用性:由于其良好的性能,SIFT 算法在图像匹配、目标跟踪、三维重建、图像检索等众多计算机视觉领域都有广泛的应用,成为一种通用且有效的特征提取方法。​

3.4.2 缺点​

​    计算复杂度高:SIFT 算法涉及到尺度空间构建、关键点检测、方向分配和特征描述子生成等多个复杂步骤,计算量巨大。构建尺度空间需要对图像进行多次高斯模糊和下采样操作,关键点检测要在不同尺度层的邻域内进行大量比较,这使得算法运行时间较长,对计算资源要求较高,在实时性要求苛刻的应用场景中可能受到限制。​

​    对边缘特征提取不足:SIFT 算法在检测关键点时,倾向于选择图像中纹理丰富的区域,对于一些边缘特征明显但纹理相对较少的物体,可能无法提取足够数量的有效关键点,影响算法在这类场景下的性能。例如在识别简单几何形状(如直线边框的矩形物体)时,SIFT 算法可能无法准确提取足够特征用于可靠识别。​

四、Harris 角点与 SIFT 算法的对比​

4.1 特征特性对比​

​    Harris 角点主要关注图像中的角点特征,即物体轮廓的转折点。这些角点在图像中的位置相对稳定,对于图像的局部结构变化敏感,但缺乏尺度和旋转不变性。如果图像发生尺度变化或旋转,Harris 角点的位置和数量可能会发生较大改变。而 SIFT 算法提取的特征点具有尺度不变性、旋转不变性和一定的光照不变性。无论图像如何缩放、旋转或光照条件如何变化,SIFT 算法都能提取出相对稳定且具有代表性的特征点,在复杂变换情况下的适应性更强。​

4.2 计算复杂度对比​

​    Harris 角点检测算法相对简单,计算复杂度较低。其主要计算步骤包括图像梯度计算、结构张量矩阵构建和 Harris 响应值计算等,计算量主要集中在图像的局部邻域内。而 SIFT 算法由于涉及多尺度空间构建、关键点在不同尺度和邻域的比较、方向分配以及高维特征描述子生成等复杂操作,计算复杂度远高于 Harris 角点检测算法。在处理大规模图像数据集或对实时性要求较高的应用中,Harris 角点检测算法可能更具优势,而 SIFT 算法则需要强大的计算资源支持。​

4.3 应用场景适应性对比​

​    Harris 角点检测适用于对图像局部结构特征敏感且图像变换相对较小的场景,如简单的图像配准(在图像尺度和旋转变化不大时)、目标物体具有明显角点特征的目标识别(如建筑物识别)以及视频中物体运动轨迹的初步分析(当物体运动导致的尺度和旋转变化不剧烈时)。SIFT 算法则广泛应用于需要处理图像复杂变换的场景,如不同拍摄角度和尺度下的图像匹配(如全景图像拼接、图像检索)、目标在视频中存在明显尺度和旋转变化的目标跟踪(如运动中的车辆、旋转的机械零件跟踪)以及基于多视角图像的高精度三维重建(如文物、建筑的三维建模)。​

五、总结与展望​

​    Harris 角点检测算法和 SIFT 算法作为计算机视觉中经典的图像特征提取方法,各自具有独特的优势和适用场景。Harris 角点检测算法简单高效,能够准确提取图像中的角点特征,为图像配准、目标识别等任务提供基础支持,尤其适用于对局部结构敏感且图像变换较小的场景。SIFT 算法则以其强大的尺度、旋转不变性和独特的特征描述子,在处理复杂图像变换的任务中表现卓越,广泛应用于图像匹配、目标跟踪和三维重建等领域。然而,随着计算机视觉技术的不断发展和应用需求的日益复杂,这两种算法也面临着挑战。例如,在实时性要求极高的自动驾驶、智能监控等场景中,SIFT 算法的高计算复杂度成为瓶颈;而 Harris 角点检测算法在面对复杂图像变换时的局限性也需要进一步克服。​

​    未来,图像特征提取技术的发展方向可能集中在以下几个方面。一方面,研究人员将致力于开发更加高效、快速的特征提取算法,在保证特征提取准确性和鲁棒性的同时,降低计算复杂度,提高算法的实时性能。例如,基于深度学习的特征提取方法逐渐兴起,通过构建深度神经网络模型,可以自动学习图像中的特征表示,并且在一些场景下能够实现快速、准确的特征提取。另一方面,结合多种特征提取方法的优势,形成混合特征提取策略也是一个重要趋势。例如,将 Harris 角点检测与 SIFT 算法相结合,或者将传统特征提取方法与深度学习特征提取方法融合,充分发挥不同方法在不同场景下的优势,提高计算机视觉系统在复杂环境中的性能。此外,针对特定应用场景,开发定制化的特征提取算法也是未来的研究重点之一。例如,在医学图像分析中,根据医学图像的特点(如灰度分布、组织结构等),设计专门的特征提取算法,以满足医学诊断对图像特征分析的高精度和高可靠性要求。通过不断的研究和创新,图像特征提取技术将在计算机视觉领域发挥更加重要的作用,推动相关技术在更多领域的广泛应用和发展。​

致读者一封信

        亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

         愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

        至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


----------- 业精于勤,荒于嬉 -----------

请添加图片描述

----------- 行成于思,毁于随 -----------

在这里插入图片描述


     💞 关注博主 带你实现畅游前后端

     🏰 大屏可视化 带你体验酷炫大屏

     💯 神秘个人简介 带你体验不一样得介绍

     🎀 酷炫邀请函 带你体验高大上得邀请


     ① 🉑提供云服务部署;
     ② 🉑提供前端、后端、应用程序、H5、小程序、公众号等相关业务;
     ③ 🉑提供产品测评,产品推广业务;
     如🈶合作请联系我,期待您的联系。
    :本文撰写于CSDN平台,作者:xcLeigh所有权归作者所有) ,https://xcleigh.blog.csdn.net/,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


     亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(评论),博主看见后一定及时给您答复,💌💌💌


原文地址:https://xcleigh.blog.csdn.net/article/details/147002576(防止抄袭,原文地址不可删除)

相关文章:

计算机视觉图像特征提取入门:Harris角点与SIFT算法

计算机视觉图像特征提取入门:Harris角点与SIFT算法 一、前言二、Harris 角点检测算法​2.1 Harris 角点的定义与直观理解​2.1.1 角点的概念​2.1.2 Harris 角点的判定依据​ 2.2 Harris 角点检测的实现步骤​2.2.1 计算图像的梯度​2.2.2 构建结构张量矩阵​2.2.3 …...

swift菜鸟教程1-5(语法,变量,类型,常量,字面量)

一个朴实无华的目录 今日学习内容:1.基本语法引入空格规范输入输出 2.变量声明变量变量输出加反斜杠括号 \\( ) 3.可选(Optionals)类型可选类型强制解析可选绑定 4.常量常量声明常量命名 5.字面量整数 and 浮点数 实例字符串 实例 今日学习内容: 1.基本…...

02142数据结构导论

初学者,怎样理解这道题,怎样大白话分析 答案解析 00、概念 29、 28、 27、 26、 25、 24、 23、 22、有5个元素,其入栈次序为:A、B、C、D、E,写出以元素C、D最先出栈(即C第一个且D第二个出栈)的各种可能的出栈次序。 (来…...

如何在AMD MI300X 服务器上部署 DeepSeek R1模型?

DeepSeek-R1凭借其深度推理能力备受关注,在语言模型性能基准测试中可与顶级闭源模型匹敌。 AMD Instinct MI300X GPU可在单节点上高效运行新发布的DeepSeek-R1和V3模型。 用户通过SGLang优化,将MI300X的性能提升至初始版本的4倍,且更多优化将…...

【Django】教程-15-注册页面

【Django】教程-1-安装创建项目目录结构介绍 【Django】教程-2-前端-目录结构介绍 【Django】教程-3-数据库相关介绍 【Django】教程-4-一个增删改查的Demo 【Django】教程-5-ModelForm增删改查规则校验【正则钩子函数】 【Django】教程-6-搜索框-条件查询前后端 【Django】教程…...

OpenAI即将上线新一代重磅选手——GPT-4.1

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

参照Spring Boot后端框架实现序列化工具类

本文参照Jackson实现序列化工具类,旨在于简化开发 JacksonUtil.class public class JacksonUtil {private JacksonUtil() {}/*** 单例*/private final static ObjectMapper OBJECT_MAPPER;static {OBJECT_MAPPER new ObjectMapper();}private static ObjectMappe…...

C_内存 内存地址概念

1. 计算机内存的基本概念 计算机的内存(RAM,随机存取存储器)是用来存储程序运行时的数据和指令的地方。内存被划分为许多小单元,每个单元有一个唯一的地址,这些地址从0开始编号。 内存单元:每个内存单元通…...

Rust重定义数据库内核:从内存安全到性能革命的破界之路

Rust语言正在颠覆传统数据库开发范式,其独特的所有权系统与零成本抽象能力,为攻克C/C时代遗留的内存泄漏、并发缺陷等顽疾提供全新解决方案。本文通过TiKV、Materialize等新一代数据库核心组件的实践案例,剖析Rust如何重塑存储引擎、查询优化…...

tree 显示到二级目录

要使用 tree 命令显示到二级目录,可以通过 -L 参数指定目录层级。具体命令如下: tree -L 2 参数说明: -L 数字:控制显示的目录深度。-L 2 表示显示到第二级目录(即当前目录下的直接子目录及其内容)。 示例输出: 复制 . ├── dir1 │ ├── file1.txt │ └─…...

UE5 在UE中创建骨骼动画

文章目录 创建动画的三种方式修改骨骼动画 创建动画的三种方式 方法一 打开一个已有的动画,左上角“创建资产/创建动画/参考姿势” 这将创建一个默认的A字形的骨骼,不建议这么做 方法二 打开一个已有的动画,左上角“创建资产/创建动画/当前…...

工业相机使用笔记

目前工业相机有多种分类方式,以下是基于不同原理和特点的类别总结: 按维度分类 2D相机: 原理:通过镜头将二维平面上的物体成像在图像传感器上,传感器上的像素点阵列捕捉物体的光信号,并转换为电信号或数字…...

深度兼容性测试和自助兼容性测试的区别,如何正确的选择?

泽众云经过几年业务快速发展,特别是泽众云兼容性测试服务已成为市场热门供应商之一,也根据用户不同需求推出了超高性价比服务,主要有深度兼容性测试和自助兼容性测试两种方式。2025年上半云真机平台的机型已升级到1000,全面覆盖了…...

Windows下安装depot_tools

一、引言 Chromium和Chromium OS使用名为depot_tools的脚本包来管理检出和审查代码。depot_tools工具集包括gclient、gcl、git-cl、repo等。它也是WebRTC开发者所需的工具集,用于构建和管理WebRTC项目。本文介绍Windows系统下安装depot_tools的方法。 二、下载depo…...

学术分享:基于 ARCADE 数据集评估 Grounding DINO、YOLO 和 DINO 在血管狭窄检测中的效果

一、引言 冠状动脉疾病(CAD)作为全球主要死亡原因之一,其早期准确检测对有效治疗至关重要。X 射线冠状动脉造影(XCA)虽然是诊断 CAD 的金标准,但这些图像的人工解读不仅耗时,还易受观察者间差异…...

NLP高频面试题(四十一)——什么是 IA3 微调?

随着大型语言模型的广泛应用,如何高效地将这些模型适配到特定任务中,成为了研究和工程实践中的重要课题。IA3(Infused Adapter by Adding and Adjusting)微调技术,作为参数高效微调的一种新颖方法,提供了在保持模型性能的同时,显著减少可训练参数数量的解决方案。 IA3 …...

STM32 模块化开发指南 · 第 3 篇 环形缓冲区 RingBuffer 模块设计与单元测试

本文是《STM32 模块化开发实战指南》第 3 篇,聚焦于“如何设计一个高性能、稳定、安全的环形缓冲区模块”。我们将从基本结构讲起,逐步完成接口定义、边界处理、API 实现与单元测试,最终实现一个可移植、线程安全、可嵌入 UART/BLE/协议模块的通用 RingBuffer。 一、RingBuf…...

软件测试岗位:IT行业中的质量守护者

在当今数字化飞速发展的IT行业,软件如同空气般无处不在,从日常的手机应用到复杂的企业级管理系统,软件的稳定性和可靠性至关重要。而软件测试岗位的从业者,就像是软件世界的质检员,精心守护着软件的质量。 一、软件测…...

单片机方案开发 代写程序/烧录芯片 九齐/应广等 电动玩具 小家电 语音开发

在电子产品设计中,单片机(MCU)无疑是最重要的组成部分之一。无论是消费电子、智能家居、工业控制,还是可穿戴设备,小家电等,单片机的应用无处不在。 单片机,简而言之,就是将计算机…...

恐龙专利及商标维权行动,已获批TRO并冻结资金

2025年3月30日,原告Shenzhen xingyin technology co.,Ltd.,现化名为Shenzhen Z Tech Co., Ltd.委托kemet律所发起维权。目前该案件已获批TRO临时禁令,涉案账户资金已被冻结,案件详情如下: 案件基本情况:起…...

【北京市小客车调控网站-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…...

Vue 3中的 setup

Vue 3引入了Composition API,其中setup函数是这一新API的核心部分。setup函数为开发者提供了一种更灵活、更模块化的方式来组织组件逻辑。以下是关于Vue 3中setup函数的详细解释: 1. 基本概念 setup函数是组件内使用Composition API的入口点。它是一个…...

2025年实用新型专利审查周期要多久?

申请实用新型专利时,审查周期是申请人最关心的问题之一。尤其是近几年国家知识产权局不断优化流程,审查速度是否有变化?2025年申请需要等多久?本文结合最新政策和实际案例,为你全面解析! 一、实用新型专利…...

使用Python建立双缝干涉模型

引言 双缝干涉实验是物理学中经典的实验之一,它展示了光的波动性以及量子力学的奇异性。实验结果表明,当光或粒子通过两条狭缝时,它们会产生干涉现象,形成明暗相间的条纹图案。这种现象不仅说明了光的波动性,还揭示了量子力学的核心思想——粒子具有波动性。今天,我们将…...

路由交换网络专题 | 第二章 | RIP | OSPF | 路由聚合 | 路由过滤 | 静默接口

拓扑图 (1)作为企业网络边界设备,AR1 上配置什么命令,可以使 OSPF 域内所有路由都会有指向自己的默认路由。默认路由的优先级是多少。如果 OSPF 域内其他路由器同样有到达外网的路径,且优于通过 AR1 到达外网&#xff…...

python 语言 设计模式

python 语言 设计模式 设计模式是指在软件开发过程中,针对反复出现的问题所总结归纳出的通用解决方案。以下是一些常见的Python语言设计模式: 目录 python 语言 设计模式创建型模式结构型模式行为型模式创建型模式 单例模式 定义:保证一个类只有一个实例,并提供一个全局访…...

银行业务发展历史

银行业务发展历史 银行业务的发展可以追溯到古代,但其现代形式的发展可以追溯到中世纪。以下是银行业务发展的主要历史阶段: 1. 古代和中世纪时期 特点:商人提供贷款和存款服务,充当中间人转移资金,发行纸币作为支付…...

JAVA中多线程的基本用法

文章目录 一、基本概念(一)进程控制块PCB(二)并行和并发(三)进程调度1.进程的状态2.优先级3.记账信息4.上下文 (四)进程和线程1.概述2.线程为什么比进程更轻量3.进程和线程的区别和联…...

健康与好身体笔记

文章目录 保证睡眠饭后百步走,活到九十九补充钙质一副好肠胃肚子咕咕叫 健康和工作的取舍 以前对健康没概念,但是随着年龄增长,健康问题凸显出来。 持续维护该文档,健康是个永恒的话题。 保证睡眠 一是心态要好,沾枕…...

如何下载谷歌浏览器增强版(扩展支持版)

在日常浏览和工作中,Chrome 浏览器因其强大的性能和丰富的扩展插件,成为全球范围内使用最广泛的浏览器之一。然而,对于需要进行深度扩展管理或需要稳定扩展环境的用户来说,标准版的 Google Chrome 可能在某些方面仍显不足。这时候…...

TDDMS分布式存储管理系列文章--分片/分区/分桶详解

友情链接: 星环分布式存储TDDMS大揭秘(一)分布式存储技术推出背景以及当前存在的挑战TDDMS是什么 前情提要 通过上个系列的文章我们了解到了各节点数据副本间通过一致性算法确保每次写入在响应客户端请求之前至少被多数节点(N/2…...

Spring Boot(九十):集成SSE (Server-Sent Events) 服务器实时推送

1 SSE简介 Server-sent Events(SSE) 是一种基于 HTTP 协议的服务器推送技术,它允许服务器主动向客户端发送数据。与 WebSocket 不同,SSE 是单向通信,即服务器可以主动向客户端推送数据,而客户端只能接收数据。 2 SSE特点 单向通信:SSE 是服务器向客户端的单向推送,客户…...

ubuntu22.04安装ROS2 humble

参考: https://zhuanlan.zhihu.com/p/702727186 前言: 笔记本安装了ubuntu20.04安装ros一直失败,于是将系统升级为ununut22.04,然后安装ros,根据上面的教程,目前看来是有可能成功的。 系统升级为ununut…...

力扣第206场周赛

周赛链接:竞赛 - 力扣(LeetCode)全球极客挚爱的技术成长平台​​​​​​ 1. 二进制矩阵中的特殊位置 给定一个 m x n 的二进制矩阵 mat,返回矩阵 mat 中特殊位置的数量。 如果位置 (i, j) 满足 mat[i][j] 1 并且行 i 与列 j 中…...

C++17 主要更新

C17 主要更新 C17 是继 C14 之后的重要标准更新,引入了许多提升开发效率、简化代码和增强性能的特性。以下是 C17 的主要更新,按类别分类: 1. 语言核心特性 结构化绑定(Structured Bindings) 解构元组、结构体或数组…...

k8s master节点部署

一、环境准备 1.主机准备 192.168.10.100 master.com master 192.168.10.101 node1.com node1 192.168.10.102 node2.com node2 互信 时间同步 关闭防火墙 关闭selinux 2.创建/etc/sysctl.d/k8s.conf,添加如下内容 cat > /etc/sysctl.d/k8s.conf <<EOF net.br…...

YOLO学习笔记 | YOLOv8 全流程训练步骤详解(2025年4月更新)

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 这里写自定义目录标题 一、数据准备1. 数据标注与格式转换2. 配置文件生…...

centos7.9 升级 gcc

本片文章介绍如何升级gcc&#xff0c;centos7.9 仓库默认的gcc版本为&#xff1a;4.8.5 4.8.5-44) Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY…...

Linux基本指令

Linux目录结构 Linux的目录结构是一个树形结构。Windows系统可以拥有多个盘符&#xff0c;如C盘、D盘、E盘。而Linux没有盘符这个概念&#xff0c;只有一个根目录/,所有文件都在它下面。如下图所示&#xff1a; Linux路径的描述方式 在Linux系统中&#xff0c;路径之间的层级…...

Google A2A协议,是为了战略性占领标准?

一、导读 2025 年 4 月 9 日&#xff0c;Google 正式发布了 Agent2Agent&#xff08;A2A&#xff09;协议。 A2A 协议致力于打破智能体之间的隔阂&#xff0c;让它们能够跨越框架和供应商的限制&#xff0c;以一种标准化、开放的方式进行沟通与协作 截止到现在&#xff0c;代…...

每日一题(小白)暴力娱乐篇29

题目比较简单&#xff0c;主要是判断条件这块&#xff0c;一定要注意在奇数的位置和偶数的位置标记&#xff0c;若奇数位为奇数偶数位为偶数才能计数加一&#xff0c;否则都是跳过。 ①接收数据n ②循环n次&#xff0c;拆解n&#xff0c;每次拆解记录ans ③拆解n为若干次x&a…...

瀚天天成闯港交所上市:业绩波动明显,十分依赖少数客户和供应商

撰稿|张君 来源|贝多财经 近日&#xff0c;瀚天天成电子科技&#xff08;厦门&#xff09;股份有限公司&#xff08;下称“瀚天天成”&#xff09;递交招股书&#xff0c;报考港交所主板上市。据贝多财经了解&#xff0c;瀚天天成曾计划在上海证券交易所科创板上市&#xff0…...

全国产压力传感器常见的故障有哪些?

全国产压力传感器常见的故障如哪些呢&#xff1f;来和武汉利又德的小编一起了解一下&#xff0c;主要包括以下几类&#xff1a; 零点漂移 表现&#xff1a;在没有施加压力或处于初始状态时&#xff0c;传感器的输出值偏离了设定的零点。例如&#xff0c;压力为零时&#xff0c…...

计算机视觉卷积神经网络(CNN)基础:从LeNet到ResNet

计算机视觉卷积神经网络&#xff08;CNN&#xff09;基础&#xff1a;从LeNet到ResNet 一、前言二、卷积神经网络基础概念​2.1 卷积层​2.1.1 卷积运算原理​2.1.2 卷积核的作用与参数​ 2.2 池化层​2.2.1 最大池化与平均池化​2.2.2 池化层的优势与应用​ 2.3 全连接层​2.3…...

在封装DLL时,避免第三方命名空间的依赖方法[PIMPL模式技术指南]

1. 概述 PIMPL(Pointer to IMPLementation)模式是C++中实现信息隐藏和二进制兼容性的重要设计范式,通过创建实现细节的私有封装层,有效隔离接口与实现。本文档详细阐述其核心原理、现代实现方式和典型应用场景。 2. 核心架构 2.1 经典结构 // 头文件(widget.h) class Wid…...

镜舟科技亮相 2025 中国移动云智算大会,展示数据湖仓一体创新方案

4月10-11日&#xff0c;2025 中国移动云智算大会在苏州金鸡湖国际会议中心成功举办。大会以“由云向智&#xff0c;共绘算网新生态”为主题&#xff0c;汇聚了众多行业领袖与技术专家&#xff0c;共同探讨了算力网络与人工智能的深度融合与未来发展趋势。 作为中国领先的企业级…...

通过Python实现定时重启H3C AP设备

一、背景 因为H3C的AP设备老化&#xff0c;网络出现高延迟、高丢包率&#xff0c;需要隔一段时间去重启AP后恢复。但是由于白天在使用无法进行重启&#xff0c;并且容易遗忘等用户反馈又太晚了&#xff0c;但是AC版本太老没有定时重启功能&#xff0c;于是通过Python做了自动重…...

火山RTC 4 音视频引擎 IRTCVideo,及 音视频引擎事件回调接口 IRTCVideoEventHandler

一、IRTCVideo、IRTCVideoEventHandler 音视频引擎 IRTCVideo&#xff0c;及 音视频引擎事件回调接口 IRTCVideoEventHandler 负责音视频管理、创建房间/获得房间实例 1、创建引擎、及事件回调示例 如&#xff1a; void VideoConfigWidget::initRTCVideo() {m_handler.res…...

Matlab 考虑电机激励力的整车垂向七自由度模型参数研究

1、内容简介 Matlab 201-考虑电机激励力的整车垂向七自由度模型参数研究 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...

Matlab 三容水箱系统故障诊断算法研究

1、内容简介 Matlab 190-三容水箱系统故障诊断算法研究 可以交流、咨询、答疑 2、内容说明 略 其次&#xff0c;对 DTS200 三容水箱系统进行机理建模&#xff0c;可分为对象建模和故障 建模&#xff0c;搭建了水箱系统的 SIMULINK 模型并建立了基于 Taylor 展开及 T-…...