OpenCV与图像处理学习十三——Harris角点检测(含代码)

OpenCV与图像处理学习十三——Harris角点检测(含代码)

  • 一、角点的概念
  • 二、Harris角点检测的实现过程
  • 三、Harris代码应用

一、角点的概念

角点: 在现实世界中, 角点对应于物体的拐角, 道路的十字路口、 丁字路口等。

从图像分析的角度来定义角点可以有以下两种定义:

  1. 角点可以是两个边缘的交点;
  2. 角点是邻域内具有两个主方向的特征点;

角点计算方法

  1. 前者通过图像边缘计算, 计算量大, 图像局部变化会对结果产生较大的影响;
  2. 后者基于图像灰度的方法通过计算点的曲率及梯度来检测角点;

角点所具有的特征

  1. 轮廓之间的交点;
  2. 对于同一场景, 即使视角发生变化, 通常具备稳定性质的特征;
  3. 该点附近区域的像素点无论在梯度方向上还是其梯度幅值上有着较大变化

性能较好的角点

  1. 检测出图像中“真实” 的角点
  2. 准确的定位性能
  3. 很高的重复检测率
  4. 噪声的鲁棒性
  5. 较高的计算效率

下图展示了一些角点的例子:
在这里插入图片描述

二、Harris角点检测的实现过程

  1. 计算图像在X和Y方向的梯度:
    在这里插入图片描述
  2. 计算图像两个方向梯度的乘积:
    在这里插入图片描述
  3. 使用高斯函数对三者进行高斯加权, 生成矩阵M的A,B,C:
    在这里插入图片描述
  4. 计算每个像素的Harris响应值R, 并对小于某一阈值 t 的R置为零;
  5. 在3× 3或5× 5的邻域内进行非最大值抑制, 局部最大值点即为图像中的角点;

三、Harris代码应用

函数:

dst	= cv2.cornerHarris(	src, blockSize, ksize, k[, dst[, borderType]] )

参数如下所示:

  1. src:数据类型为 float32 的输入图像;
  2. blockSize:角点检测中要考虑的领域大小;
  3. ksize:Sobel 求导中使用的窗口大小;
  4. k:Harris 角点检测方程中的自由参数,取值参数为 [0,04,0.06]。

看个例子:

import cv2
import numpy as np
from matplotlib import pyplot as pltimg = cv2.imread('image/harris2.png')
print(img.shape)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = np.float32(gray)
dst_block9_ksize19 = cv2.cornerHarris(gray, 9, 19, 0.04)
img1 = np.copy(img)
img1[dst_block9_ksize19 > 0.01 * dst_block9_ksize19.max()] = [0, 0, 255]dst_block5_ksize19 = cv2.cornerHarris(gray, 5, 19, 0.04)
img2 = np.copy(img)
img2[dst_block5_ksize19 > 0.01 * dst_block5_ksize19.max()] = [0, 0, 255]dst_block9_ksize5 = cv2.cornerHarris(gray, 9, 5, 0.04)
img3 = np.copy(img)
img3[dst_block9_ksize5 > 0.01 * dst_block9_ksize5.max()] = [0, 0, 255]dst_block9_ksize31 = cv2.cornerHarris(gray, 9, 31, 0.04)
img4 = np.copy(img)
img4[dst_block9_ksize31 > 0.01 * dst_block9_ksize31.max()] = [0, 0, 255]dst_block9_ksize19_k6 = cv2.cornerHarris(gray, 9, 19, 0.06)
img5 = np.copy(img)
img5[dst_block9_ksize19_k6 > 0.01 * dst_block9_ksize19_k6.max()] = [0, 0, 255]dst_block9_ksize19_k6_1e_5 = cv2.cornerHarris(gray, 9, 19, 0.06)
img6 = np.copy(img)
img6[dst_block9_ksize19_k6_1e_5 > 0.00001 * dst_block9_ksize19_k6_1e_5.max()] = [0, 0, 255]titles = ["Original", "block9_ksize19", "dst_block5_ksize19", "dst_block9_ksize5", "dst_block9_ksize31","dst_block9_ksize19_k6", "dst_block9_ksize19_k6_1e_5"]
imgs = [img, img1, img2, img3, img4, img5, img6]for i in range(len(titles)):plt.subplot(3, 3, i + 1), plt.imshow(imgs[i]), plt.title(titles[i])plt.xticks([]), plt.yticks([])
plt.show()
# cv2.imshow('src',img)
# cv2.imshow('dst',img5)
# cv2.waitKey(0)
# cv2.destroyAllWindows()

结果如下所示:
在这里插入图片描述
在判断出的角点处标记为蓝色,上图为不同参数设置下的结果,效果也是不一样的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/491603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

德勤发布《中国智能制造分析报告》

来源:CIO俱乐部亚洲正受到自动化、智能化大潮冲击。国际劳工组织调研发现,越南、柬埔寨、菲律宾和印度尼西亚的工人的失业风险最高,据估计这几个区域约50%的工人工作可能在未来20年被自动化取代。亚洲尤其是中国作为制造业的重要区域&#xf…

OpenCV与图像处理学习十四——SIFT特征(含代码)

OpenCV与图像处理学习十四——SIFT特征(含代码)一、SIFT算法二、SIFT实现过程三、代码实现一、SIFT算法 SIFT, 即尺度不变特征变换算法(Scale-invariant feature transform,SIFT) , 是用于图像…

液态大脑与固态大脑——圣塔菲最新群体智能文集

来源:The Royal society撰文 | Ricard Sol, Melanie Moses, and Stephanie Forrest大脑,神经元构成的器官根植于许多生物体内。这是一种固态的大脑,且组成它们的元素在空间中相对固定。但是相对的,大脑是否可以拥有流动不定的存在…

OpenCV与图像处理学习十五——LBP纹理特征(含代码)

OpenCV与图像处理学习十五——LBP纹理特征(含代码)一、LBP介绍二、LBP原理三、代码应用一、LBP介绍 LBP(Local Binary Pattern, 局部二值模式) , 是一种用来描述图像局部纹理特征的算子; 它具有…

pycharm运行程序时看不到任何结果显示

原因是用程序选择了console来运行,取消console方法如下: Run->Edit Configurations 取消run with python console的勾

iOS 的 XMPPFramework 简介

XMPPFramework是一个OS X/iOS平台的开源项目,使用Objective-C实现了XMPP协议(RFC-3920),同时还提供了用于读写XML的工具,大大简化了基于XMPP的通信应用的开发。 1. 登录和好友上下线 1.1XMPP中常用对象们 XMPPStream&a…

OpenCV与图像处理学习十六——模板匹配

OpenCV与图像处理学习十六——模板匹配一、模板匹配介绍二、代码应用一、模板匹配介绍 模板匹配是一种最原始、最基本的模式识别方法,研究某一特定目标的图像位于图像的什么地方,进而对图像进行定位。 在待检测的图像上,从左到右&#xff0…

李剑锋:意识科学就在身边

来源: 科技日报-中国科技网近些年,生命科学家开始关注神奇的大脑,因此各国纷纷提出各自的脑计划;当前有一个更基础的、但极富争议性的领域却被大家忽视了,就是意识科学。事实脑计划的终点应该就是意识科学,但由于目前大…

OpenCV与图像处理学习十七——OpenCV人脸检测(含代码)

OpenCV与图像处理学习十七——OpenCV人脸检测(含代码)一、人脸识别概要1.1 人脸检测1.2 人脸对齐(Face Alignment)1.3 人脸特征提取(Face Feature Extraction)1.4 人脸识别(Face Recognition&am…

清华大学:人工智能之知识图谱(附PPT)

来源:笑看国际风云【导读】知识图谱(Knowledge Graph)是人工智能重要分支知识工程在大数据环境中的成功应用,知识图谱与大数据和深度学习一起,成为推动互联网和人工智能发展的核心驱动力之一。基于此背景,《人工智能之…

有关EUV光刻机,你需要知道这些

来源:technews晶圆制造产业进入7 纳米制程之后,目前全世界仅剩台积电与三星,再加上号称自家10 纳米制程优于竞争对手7 纳米制程的英特尔等,有继续开发能力之外,其他竞争者因须耗费大量金钱与人力物力的情况下&#xff…

多家巨头实测鸿蒙系统:比安卓快60%

来源:腾讯新闻,数码科技大爆炸众所周知,近期,华为被打压和打击的事件一直没有停止,但华为并没有坐以待毙,很快就启动了“备胎计划”给予积极的回击和反击,像保险柜里的海思“备胎芯片”、华为自…

混淆矩阵及分类性能评估方法

混淆矩阵: 公式:其中TPR又叫召回率Recall

《细胞》:打破百年生物学法则,记忆可以遗传给下一代,甚至可能跨越多代...

来源:转载自iNature许多人推测大脑活动可能以某种方式产生可遗传的变化,这将影响下一代的命运。然而,这一想法虽然具有吸引力,却挑战了生物学的基本法则之一,也被称为“生物学的第二定律”, “Weismann障碍…

欢迎参加城市大脑与智慧城市前沿趋势 主题论坛 |未来科技大讲堂 第12期

近年来,智慧城市建设出现新的动向,包括城市大脑、城市云脑、城市超级大脑、城市超脑、城市神经网络等“泛城市大脑”概念也大量涌现。杭州、上海、北京、广州等城市各自提出和开展了不同城市大脑建设方案,其中上海市开展了以建设城市神经元系…

JavaSE——Java介绍与环境变量简述

第1节 Java介绍 1、Java的起源与演变 略 2、Java体系与特点 Java体系 : Java SE:标准版:各应用平台的基础,桌面开发和低端商务应用的解决方案。 Java EE:企业版,以企业为环境而开发应用程序的解决方案…

深度:中国智能制造分析报告

来源:精智工厂亚洲正受到自动化、智能化大潮冲击。国际劳工组织调研发现,越南、柬埔寨、菲律宾和印度尼西亚的工人的失业风险最高,据估计这几个区域约50%的工人工作可能在未来20年被自动化取代。亚洲尤其是中国作为制造业的重要区域&#xff…

JavaSE——Java基础语法(二进制、变量、方法(函数)、运算符、转义字符)

第2节 基础语法 一、二进制 1.1 二进制介绍 计算机中的数据都以二进制数字保存。 二进制 :逢二进一,即只有0、1两个值。如十进制的10在计算机内保存为二进制的1010。 计算机中信息的存储单位: 位(Bit)&#xff1a…

我们离爱因斯坦想了解的“上帝的思想”,还有多远?

来源:原理1925年,爱因斯坦在与一位名为Esther Salaman的年轻学生一同散步的途中,分享了他的一个核心指导思想:“我想知道上帝是如何创造这个世界的。我对这个或那个现象,这个或那个元素的能谱不感兴趣。我要知道的是他…

城市大脑与智慧城市前沿趋势 主题论坛 |未来科技大讲堂 第12期

近年来,智慧城市建设出现新的动向,包括城市大脑、城市云脑、城市超级大脑、城市超脑、城市神经网络等“泛城市大脑”概念也大量涌现。杭州、上海、北京、广州等城市各自提出和开展了不同城市大脑建设方案,其中上海市开展了以建设城市神经元系…