【进阶OpenCV】 (2)--Harris角点检测

文章目录

harris角点检测

Harris角点检测 算法是一种常用的计算机视觉算法,用于检测图像中的角点。该算法通过计算图像中每个像素的局部自相关矩阵,来判断该像素是否为角点

角点指图像中局部区域与周围区域有较大灰度变化的点或像素。

一、基本思想

使用一个固定的小窗口在图像上进行任意方向的滑动,比较滑动前与滑动后两种情况,窗口中的像素灰度变化程度,如果存在任意方向上的滑动都有 着较大灰度变化(sobel算子),那么我们可以认为该窗口中存在角点

二、算法实现

原图:

1. 函数方法

python 复制代码
cornerHarris(img,blockSize,ksize,k[,dst[,borderType]]) --> dst

该方法通过分析图像中每个像素点周围的局部特征来判断该点是否为角点。

参数:

python 复制代码
-- img:输入图像
-- blockSize:角点检测中要考虑的领域大小
-- ksize:Sobel求导中使用的窗口大小
-- k:Harris角点检测方程中的自由参数,取值参数为[0.04,0.06]
-- dst:返回numpy.ndarray对象,大小和src相同,值越大,对应像素点是角的概率越高

2. 检测角点

将图片转化为灰度图,简化图像信息,去除了颜色变化对特征检测的影响,使得算法能够更专注于像素值(即亮度)的变化。检测亮度变化。

python 复制代码
img = cv2.imread("tu.jpg")
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
dst = cv2.cornerHarris(img_gray,4,3,0.04)

3. 标记角点

cornerHarris()函数方法会返回一串数值数据,cornerHarris()函数方法返回的dst中数值并不是每个点的亮度大小,而是每个像素点作为角点的响应值(R值) 。这些R值构成了一个灰度图像,其中灰度图像的坐标会与原图像对应,而R值则反映了该像素点是角点的可能性大小。具体来说,当R值很大时,可以认为这个点是一个角点

其中,min与max参数表示dst中的最大值与最小值。

基于此,我们可以对dst设定一个大小范围,大于某个值怎将它标记为角点:

python 复制代码
# 标记检测到的角点
img[dst > 0.01 * dst.max()] = [0,0,255]
# 这里通过对焦点响应进行阈值处理,标记出检测到的角点
# 0.05 * dst.max()是一个阈值,大于这个值的像素点会被标记为红色
cv2.imshow('img',img)
cv2.waitKey(0)

总结

本篇介绍了:

如何使用Harris角点检测 算法来检测图片的角点。使用一个固定的小窗口在图像上进行滑动,如果存在任意方向上的滑动都有 着较大灰度变化(sobel算子),那么我们可以认为该窗口中存在角点

算法上,通过比较cornerHarris()函数方法中返回值的大小,来确定角点。

相关推荐
驴友花雕3 小时前
【花雕动手做】行空板 K10 系列实验之人工智能语音识别小车的10个参考案例
人工智能·单片机·嵌入式硬件·语音识别·行空板 k10 系列实验·花雕动手做·小车的10个参考案例
火山引擎开发者社区5 小时前
DeepSeek-V4 Pro 发布,veStack Day 0 完成模型适配
人工智能
2501_926978335 小时前
AGI 的四种瓶颈:资源型还是发现型--以及DSH的位置
人工智能·经验分享·笔记·ai写作
Q463913495 小时前
线下销售复盘难落地,AI 会话设备能帮上啥忙
人工智能·自然语言处理
ebok.5 小时前
国产大模型落地业务系统的优选载体:京微智枢信创 AI 业务支撑平台
大数据·人工智能·低代码·ai
wujian83115 小时前
怎么用文心生成word文档?从格式错乱到智能导出,AI导出鸭让创作再无后顾之忧
人工智能·ai·word·豆包·deepseek·ai导出鸭
动物园猫6 小时前
猪危险行为目标检测数据集:3类别、5,000+张图像 | 目标检测
人工智能·目标检测·计算机视觉
ai产品老杨6 小时前
AI视频分析并发优化完整流程:解决多路视频并发不足与高延迟排查指南
人工智能·音视频
why技术6 小时前
AI 写的文章,可能都带着手敲一遍都去不掉的“隐形水印”。
前端·人工智能·后端
罗西的思考6 小时前
【Agent OS / AIOS】AOHP 深度解读:当 OS 开始为 Agent 而设计
人工智能·算法·机器学习