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

embedded/2024/12/22 7:07:37/

文章目录

  • harris角点检测
    • 一、基本思想
    • 二、算法实现
      • 1. 函数方法
      • 2. 检测角点
      • 3. 标记角点
  • 总结

harris角点检测

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

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

一、基本思想

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

二、算法实现

原图:

在这里插入图片描述

1. 函数方法

cornerHarris(img,blockSize,ksize,k[,dst[,borderType]]) --> dst

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

参数:

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

2. 检测角点

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

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设定一个大小范围,大于某个值怎将它标记为角点:

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

在这里插入图片描述

总结

本篇介绍了:

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


http://www.ppmy.cn/embedded/120248.html

相关文章

Linux常用命令(工作)

查磁盘有时候使用df - h查不到完整的磁盘这个时候建议使用lsblk lsblk (查看磁盘信息 - 列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息) df -h free -h 内存 查CPU建议使用lscpu op&…

【10000字pandas数据可视化超全笔记整理】Numpy Pandas | 常用API介绍 | 缺失值处理 matplotlib数据可视化介绍

文章目录 Numpy 部分NumPy的数组类被称作ndarray,通常被称作数组。属性创建方法内置函数运算基本运算矩阵运算 Pandas部分总述Serise 对象创建属性方法运算 DataFrame属性索引操作添加删除插入列 保存读取文件保存读取 数据加载分组聚合语法格式: 基本绘图 数据组合…

数学建模研赛总结

目录 前言进度问题四分析问题五分析数模论文经验分享总结 前言 本文为博主数学建模比赛第五天的内容记录,希望所写的一些内容能够对大家有所帮助,不足之处欢迎大家批评指正🤝🤝🤝 进度 今天已经是最后一天了&#xf…

解决json格式转换被特殊字符截断问题

SyntaxError:Unexpected end of JSON input 当我们使用navigateTo跳转传参的时候,在小程序中需要先转换为json字符串的格式化,但是如果我们传递的参数中有特殊字符的?/&amp的话,可能导致字符串被截断,此…

大数据埋点方案Openresty+Nginx+Lua踩坑日志

在做埋点采集方案的时候,直接采用Openresty进行数据采集 手撸Java代码性能较差,直接使用第三方框架进行数据采集处理。 其中需要应用到lua-zlib模块进行gz的压缩文件解压; lua-zlib的安装过程如下: wget https://github.com/br…

Storm-0501黑客组织针对美国政府混合云环境发起攻击

近日,有一名为 Storm-0501 的威胁行为者以美国的政府、制造、运输和执法部门为目标,发动勒索软件攻击。 微软表示,这种多阶段攻击活动旨在破坏混合云环境,并从内部部署横向移动到云环境,最终导致数据外渗、凭证盗窃、篡…

vue 流式加载mp4文件

video组件 传入assetURL视频地址即可&#xff0c;组件内配置了代理&#xff0c;注意配置/video-api 代理 <template><video ended"emits(ended)" autoplay muted ref"video"><source type"video/mp4" />Your browser does no…

VMware搭建DVWA靶场

目录 1.安装phpstudy 2.搭建DVWA 本次搭建基于VMware16的win7系统 1.安装phpstudy 下载windows版本&#xff1a;小皮面板-好用、安全、稳定的Linux服务器面板&#xff01; 安装后先开启mysql再开启apache&#xff0c;遇到mysql启动不了的情况&#xff0c;最后重装了phpstud…