iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >OpenCV角点检测的实现示例
  • 453
分享到

OpenCV角点检测的实现示例

2024-04-02 19:04:59 453人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录Harris 角点检测算法1. 角点角点检测算法的基本思想: 2. 流程3. 实现Harris 角点检测算法 1. 角点 角点是水平方向、垂直方向变化都很大的像素。 角

Harris 角点检测算法

1. 角点

角点是水平方向、垂直方向变化都很大的像素。

角点检测算法的基本思想: 

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

        目前,角点检测算法还不是十分完善,许多算法需要依赖大量的训练集和冗余数据来防止和减少错误的特征的出现。对于角点检测算法的重要评价标准是:其对多幅图像中相同或者相似特征的检测能力,并且能够应对光照变化、或者图像旋转等影响。

关于角点的具体描述可以有几种:

  • 一阶导数(即灰度的梯度)的局部最大所对应的像素点;
  • 两条及两条以上边缘的交点;
  • 图像中梯度值和梯度方向的变化速率都很高的点; 
  • 角点处的一阶导数最大,二阶导数为零,指示物体边缘变化不连续的方向。                                                                                     

三类角点检测算法:

  • 基于二值图像的角点检测;
  • 基于轮廓曲线的角点检测;
  • 基于灰度图像的角点检测:基于梯度、基于模板和基于模板和梯度组合三类方法;常见的基于模板的角点检测算法有:Kitchen-Rosenfeld角点检测算法,Harris角点检测算法,KLT角点检测算法及SUSAN角点检测算法。基于模板的方法主要是考虑像素领域点灰度的变化,即亮度的变化。

2. 流程

(1)找出角点
用高斯算子求出像素水平方向和垂直方向的梯度dx, dy,–> 对梯度的平方dxdx ,dydy, dxdy滤波得到Wxx ,Wxy,Wyy --> 在求的(WxxWyy - Wxy**2)/(Wxx + Wyy)作为候选角点。

(2)筛选角点
根据阈值筛选角点–> 取得角点的坐标 -->根据角点坐标得到角点所在的行 --> 在角点周围,删除掉其他角点。–> result

(3)标记角点

3. 实现

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
from scipy.ndimage import filters

## 1.找出角点
### 1.1 步骤:img求导 --> imx ,imy 滤波-->Wxx ,Wxy,Wyy --> (Wxx*Wyy - Wxy**2)/(Wxx + Wyy)
def compute_harris_response(img,sigma=3):
    # 求梯度
    imgx,imgy  = np.zeros(img.shape),np.zeros(img.shape)
    filters.gaussian_filter(img,(sigma,sigma),(0,1),imgx)
    filters.gaussian_filter(img,(sigma,sigma),(1,0),imgy) # [260,263]
    # 对梯度进行高斯滤波
    wxx = filters.gaussian_filter(imgx**2,sigma)
    wyy = filters.gaussian_filter(imgy**2,sigma) # [260,263]
    wxy = filters.gaussian_filter(imgx*imgy,sigma)# [260,263]
    ## 求行列式和迹
    wdet = wxx*wyy -wxy**2
    wtr = wxx + wyy
    return  wdet/wtr

## 2 筛选角点
### 2.1 步骤:根据阈值筛选角点--> 取得角点的坐标 -->根据角点坐标得到角点所在的行  -->
# --> 在角点周围,删除掉其他角点
def get_harris_points(harri,min_dist=4,threshold=0.1):
    corner_thre = harri.max()*threshold  # 角点阈值
    mask = (harri > corner_thre)*1  # 取出大于阈值的点为候选角点
    cords = np.array(mask.nonzero()).T  # 取候选角点的坐标

    values = [harri[i[0],i[1]] for i in cords]  # 候选角点的值
    cls = np.argsort(values)     # 对角点排序得到排序后的序列号,序列号也是候选角点所在的行

    loc = np.zeros(harri.shape)   # 划出可行性区域
    loc[min_dist:-min_dist,min_dist:-min_dist] = 1

    re_cords = []
    for i in cls:  # 筛选角点。先取出角点,角点周围的点不再取出
        if loc[cords[i,0],cords[i,1]] == 1 :
            re_cords.append(cords[i])
            loc[cords[i,0]-min_dist:cords[i,0]+min_dist,cords[i,1]-min_dist:cords[i,1]+min_dist]=0
    return re_cords

def plot_harri(img,cords):
    plt.figure()
    plt.gray()
    plt.imshow(img)
    plt.plot([i[1] for i in cords],[i[0] for i in cords],'.')
    plt.axis('off')
    plt.show()

## 3 测试
if __name__ == '__main__':
    img = np.array(Image.open('luna.png').convert('L'))
    harri = compute_harris_response(img)
    re_cords = get_harris_points(harri)
    plot_harri(img,re_cords)

到此这篇关于OpenCV角点检测的文章就介绍到这了,更多相关OpenCV角点检测内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: OpenCV角点检测的实现示例

本文链接: https://www.lsjlt.com/news/144088.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • OpenCV角点检测的实现示例
    目录Harris 角点检测算法1. 角点角点检测算法的基本思想: 2. 流程3. 实现Harris 角点检测算法 1. 角点 角点是水平方向、垂直方向变化都很大的像素。 角...
    99+
    2022-11-13
  • opencv实现角点检测
    本文实例为大家分享了opencv实现角点检测的具体代码,供大家参考,具体内容如下 1、特征点的作用:使用特征点代表图像内容 运动目标跟踪物体识别图像配准全景图像拼接三维重建 2、Ha...
    99+
    2022-11-13
    opencv 角点检测
  • Python+OpenCV实现边缘检测与角点检测详解
    目录一、边缘检测1.1、读取图像1.2、图像转换成灰度图像1.3、Sobel算子1.4、Canny算子1.5、显示正常中文的标签1.6、边缘检测结果二、角点检测2.1、读取图像2.2...
    99+
    2023-02-03
    Python OpenCV边缘检测 Python OpenCV角点检测 Python OpenCV 检测
  • Android基于OpenCV实现Harris角点检测
    目录什么是角点? 为什么要检测角点? Harris角点检测 API操作效果 源码 什么是角点? 角点就是极值点,即在某方面属性特别突出的点。当然,你可以自己定义角点的属性(设置特定...
    99+
    2022-11-12
  • OpenCV基于ORB算法实现角点检测
    本文实例为大家分享了OpenCV基于ORB算法实现角点检测的具体代码,供大家参考,具体内容如下 ORB算法是FAST算法和BRIEF算法的结合,ORB可以用来对图像中的关键点快速创建...
    99+
    2022-11-11
  • OpenCV实现Sobel边缘检测的示例
    目录一、Sobel算法1、算法概述2、主要函数二、C++代码三、python代码四、结果展示五、相关链接一、Sobel算法 1、算法概述 Sobel边缘检测算法比较简单,实际应用中效...
    99+
    2022-11-13
    OpenCV Sobel边缘检测 OpenCV 边缘检测
  • Java OpenCV中SIFT角点检测的方法
    这篇文章主要介绍“Java OpenCV中SIFT角点检测的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java OpenCV中SIFT角点检测的方法”文章能帮助大家解决问...
    99+
    2023-06-29
  • python中Harris角点检测的示例分析
    这篇文章主要介绍了python中Harris角点检测的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、基本思想选择在图像上任意方向的固定窗口进行滑动,如果灰度变化较...
    99+
    2023-06-15
  • Python+OpenCV实现角度测量的示例代码
    本文介绍如何使用python语言实现角度测量,程序包括鼠标选点、直线斜率计算、角度计算三个子程序和一个主程序。最终实现效果:在图片上用鼠标确认三点,程序将会显示由此三点确定的角度,如...
    99+
    2022-11-13
  • Python OpenCV实现图形检测示例详解
    目录1. 轮廓识别与描绘1.1 cv2.findComtours()方法1.2 cv2.drawContours() 方法1.3 代码示例2. 轮廓拟合2.1 矩形包围框拟合 - c...
    99+
    2022-11-10
  • OpenCV形状检测的示例详解
    目录1.基于OpenCV的形状检测Python版本1.1.定义我们的形状检测器类ShapeDetector1.2.基于OpenCV的形状检测器2.基于OpenCV的形状检测C++版本...
    99+
    2022-11-11
  • OpenCV实现灰度、高斯模糊、边缘检测的示例
    一、彩色图像转灰度 Opencv提供了一个方法,可以使彩色图像变为灰度图像。 函数名:cvtColor(src,dest,way); src表示初始的mat对象; dest表示转换...
    99+
    2022-11-12
  • opencv+mediapipe实现人脸检测及摄像头实时示例
    目录单张人脸关键点检测单张图像人脸检测摄像头实时关键点检测单张人脸关键点检测 定义可视化图像函数 导入三维人脸关键点检测模型 导入可视化函数和可视化样式 读取图像 将图像模型输入,获...
    99+
    2022-11-12
  • C++OpenCV实战之标记点检测的实现
    在实际应用中,能够直接利用霍夫圆检测这些理想方法的应用场景是非常少的,更多的是利用拟合的办法去寻找圆形。 大致思路如下,首先先选择要处理的ROI部分,记录下该图的左上点在原图的坐标,...
    99+
    2022-11-13
  • C++ OpenCV标记点检测怎么实现
    这篇文章主要介绍“C++ OpenCV标记点检测怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++ OpenCV标记点检测怎么实现”文章能帮助大家解决问题。效果如下:导...
    99+
    2023-06-29
  • Python-OpenCV实现图像缺陷检测的实例
    目录1.实现代码2.运行结果在Jupyter Notebook上使用Python+opencv实现如下图像缺陷检测。关于opencv库的安装可以参考:Python下opencv库的安...
    99+
    2022-11-12
  • python目标检测基于opencv实现目标追踪示例
    目录主要代码信息封装类更新utilspython-opencv3.0新增了一些比较有用的追踪器算法,这里根据官网示例写了一个追踪器类 程序只能运行在安装有opencv3.0以上版本和...
    99+
    2022-11-11
  • C++ opencv图像处理实现图片边缘检测示例
    目录边缘检测简介一、边缘检测步骤二、Canny1.函数2.代码二、Sobel1.函数2.代码三、Scharr1.函数2.代码四、Laplacian1.函数2.代码总结边缘检测简介 边...
    99+
    2022-11-13
  • opencv+mediapipe如何实现人脸检测及摄像头实时示例
    这篇文章主要为大家展示了“opencv+mediapipe如何实现人脸检测及摄像头实时示例”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“opencv+mediapipe如何实现人脸检测及摄像头实...
    99+
    2023-06-22
  • Python+Opencv文本检测的实现
    目录EAST 深度学习文本检测器项目结构实施说明使用 OpenCV 实现我们的文本检测器OpenCV 文本检测结果视频文字检测结果在本教程中,您将学习如何使用 OpenCV 使用 E...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作