尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
【深度学习】OpenCV 角点检测与 SIFT 特征提取详解
OpenCV 角点检测与 SIFT 特征提取详解一、角点检测1. 什么是角点检测2. 检测流程3. 邻域Neighborhood4. Harris 角点检测案例关键函数说明完整代码二、SIFT 特征提取1. 什么是 SIFT2. 特征提取的一般步骤3. SIFT 案例实现完整代码代码解析关键点信息一、角点检测1. 什么是角点检测角点检测Corner Detection是计算机视觉中的一种基础特征提取方法用于识别图像中具有显著灰度变化的像素点即角点Corner。角点是图像中在不同方向上灰度值均发生剧烈变化的点例如物体的尖角两条边的交点T形或L形结构的端点角点具有以下优良特性旋转不变性图像旋转后角点仍然可被检测尺度不变性在不同缩放比例下角点依然存在光照不变性对光照变化具有一定的鲁棒性2. 检测流程角点检测通常遵循以下流程步骤描述1. 输入图像加载待检测的原始图像2. 图像预处理灰度化、降噪等为后续处理做准备3. 特征提取使用Harris、Shi-Tomasi等算法提取角点特征4. 角点响应计算计算每个像素点的角点响应值5. 角点定位与标记根据响应值定位角点并可视化标记6. 后处理可选非极大值抑制、阈值过滤等7. 输出结果返回角点坐标或标记后的图像3. 邻域Neighborhood在角点检测中邻域是指以某个中心像素为核心周围一定范围内的像素集合。邻域内的像素信息用于计算中心像素的角点响应值。邻域大小对检测结果有重要影响邻域大小特点较大邻域捕获更多细节信息但计算量增加较小邻域计算速度快但可能遗漏细微特征邻域的尺寸通常由blockSize参数控制需要根据具体的应用场景和图像特征进行调整。4. Harris 角点检测案例Harris 角点检测是一种经典的角点检测算法其核心思想是利用图像梯度计算角点响应值。关键函数说明cv2.cornerHarris(img,blockSize,ksize,k,dstNone)参数说明img输入图像需为灰度图blockSize角点检测中考虑的邻域大小ksizeSobel 算子窗口大小用于计算梯度kHarris 自由参数取值范围 [0.04, 0.06]dst输出响应矩阵与输入图像尺寸相同完整代码importcv2# 加载图像imgcv2.imread(huanghelou.png)cv2.imshow(原始图像,img)cv2.waitKey(0)# 灰度转换graycv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# Harris 角点检测# blockSize4ksize3k0.04dstcv2.cornerHarris(gray,4,3,0.04)# 标记角点响应值大于阈值的像素标记为绿色threshold0.05*dst.max()img[dstthreshold][0,255,0]# 显示结果cv2.imshow(角点检测结果,img)cv2.waitKey(0)cv2.destroyAllWindows()代码解析gray 输入图像必须为灰度图blockSize4 表示邻域尺寸为 4×4ksize3 表示 Sobel 算子的孔径大小为 3k0.04 为 Harris 自由参数值越小检测到的角点越多dst 矩阵中值越大的像素是角点的概率越高通过阈值 0.05 * dst.max() 筛选角点二、SIFT 特征提取1. 什么是 SIFTSIFTScale-Invariant Feature Transform尺度不变特征变换 是一种用于检测和描述图像局部特征的经典算法。SIFT 能够在尺度空间中寻找极值点并提取出具有以下特性的关键点尺度不变性对图像缩放具有鲁棒性旋转不变性对图像旋转具有鲁棒性光照不变性对光照变化具有一定的容忍度SIFT 提取的特征点可以用于图像匹配、目标识别、三维重建等多种任务。2. 特征提取的一般步骤步骤描述1. 数据预处理去噪、归一化、平滑等2. 特征选择选择合适的特征子集避免冗余和噪声3. 特征提取使用数学算法计算和提取特征4. 特征表示将特征表示为向量或其他便于计算的形式好的特征应具备辨别性能够区分不同类别或实例鲁棒性对变形和噪声有一定容忍度3. SIFT 案例实现完整代码importcv2importnumpyasnp# 加载图像mancv2.imread(man.png)cv2.imshow(原始图像,man)cv2.waitKey(0)# 灰度转换man_graycv2.cvtColor(man,cv2.COLOR_BGR2GRAY)# 创建 SIFT 对象siftcv2.SIFT_create()# 检测关键点kpsift.detect(man_gray)# 打印所有关键点坐标forpointinkp:print(f关键点坐标:{point.pt})# 绘制关键点显示尺度和方向man_siftcv2.drawKeypoints(man,kp,None,flagscv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)cv2.imshow(SIFT 关键点,man_sift)cv2.waitKey(0)# 计算关键点描述符用于后续匹配keypoints,descriptorssift.compute(man,kp)print(f关键点数量:{np.array(keypoints).shape[0]})print(f描述符矩阵形状:{descriptors.shape})print(描述符维度: 128 维)cv2.destroyAllWindows()代码解析方法说明cv2.SIFT_create()创建 SIFT 检测器对象sift.detect(gray)检测图像中的关键点返回关键点列表sift.compute(img, kp)计算关键点的描述符128维向量cv2.drawKeypoints()在图像上绘制关键点关键点信息每个关键点包含坐标 (x, y)、尺度、方向每个关键点的描述符为 128 维向量描述符可用于后续的特征匹配如 FLANN、BFMatcher
RELATED

相关推荐

3步搞定黑苹果:小白也能轻松上手的Hackintool配置工具

3步搞定黑苹果:小白也能轻松上手的Hackintool配置工具

3步搞定黑苹果:小白也能轻松上手的Hackintool配置工具 【免费下载链接】Hackintool The Swiss army knife of vanilla Hackintoshing 项目地址: https://gitcode.com/gh_mirrors/ha/Hackintool 还在为黑苹果配置头疼吗?显卡驱动不识别、USB端口失…

📅 2026/9/9 13:36:01
AI时代的核心竞争力:分辨什么该自动化,什么必须保留摩擦

AI时代的核心竞争力:分辨什么该自动化,什么必须保留摩擦

文章目录摩擦税最后1%把设备禁了2026年7月,芝加哥大学法学院干了件事:法学院一年级全部核心课程,禁用笔记本电脑、平板、手机。期末线下闭卷,断网,不许碰任何电子文件。 同一个法学院,2023年初就成立AI委员…

📅 2026/9/8 21:54:00
怎样高效配置虚拟游戏手柄驱动:专业级Windows仿真引擎实战指南

怎样高效配置虚拟游戏手柄驱动:专业级Windows仿真引擎实战指南

怎样高效配置虚拟游戏手柄驱动:专业级Windows仿真引擎实战指南 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 在Windows游戏开发和输入设备仿真…

📅 2026/9/10 6:10:46
MORE NEWS

更多资讯

📰

雷达MTD动目标检测:快时间慢时间与距离-多普勒图实现

简介:这是一份面向雷达信号处理初学者与研究人员的 MATLAB 源码包,围绕脉冲串回波模拟、快时间与慢时间维度分析、匹配滤波以及 MTD 多普勒处理展开,可帮助快速理解目标距离与速度信息提取的完整链路。资源共 7 个文件,均为 .m 脚…

📰

视频元数据管理工具与批量处理实战指南

1. 视频元数据管理的重要性与痛点在数字媒体爆炸式增长的今天,视频文件已成为我们日常工作和娱乐的重要组成部分。每个视频文件都携带了大量元数据(Metadata),这些隐藏在文件内部的信息记录了视频的标题、作者、创建日期、版权信息…

📰

OpenHarmony下Flutter生命周期检测:从信号错乱到稳定可用的实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

身份可见性与智能平台:如何收缩IAM攻击面

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

微信小游戏源码调试与改造:从猫咪游戏入门到Unity打包上架

简介:这套微信小游戏猫咪源码包,是一份面向微信小游戏开发初学者或对H5游戏感兴趣的读者的学习参考资源,主要用于了解小游戏页面搭建、猫咪形象展示与简单交互的实现方式,通过实际工程文件降低上手门槛。压缩包约49KB,…

📰

ArduPilot 硬件移植实战:PixPilot-C3 飞控板完整配置指南(STM32F427 双 IMU 架构)

ArduPilot 硬件移植实战:PixPilot-C3 飞控板完整配置指南(STM32F427 双 IMU 架构) 【免费下载链接】ardupilot ArduPlane, ArduCopter, ArduRover, ArduSub source 项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot 导读 …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬