harris

Harris角点检测原理详解

 ̄綄美尐妖づ 提交于 2020-03-06 06:00:16
http://blog.csdn.net/lwzkiller/article/details/54633670 关于角点的应用在图像处理上比较广泛,如图像匹配(FPM特征点匹配)、相机标定等。网上也有很多博客对Harris角点检测原理进行描述,但基本上只是描述了算法流程,而其中相关细节并未作出解释,这里我想对有些地方做出补充说明,正所谓知其然知其所以然,如有不对,还望指正。 关于角点的应用在图像处理上比较广泛,如图像匹配(FPM特征点匹配)、相机标定等。网上也有很多博客对Harris角点检测原理进行描述,但基本上只是描述了算法流程,而其中相关细节并未作出解释,这里我想对有些地方做出补充说明,正所谓知其然知其所以然,如有不对,还望指正。 1. 何为角点? 下面有两幅不同视角的图像,通过找出对应的角点进行匹配。 再看下图所示,放大图像的两处角点区域: 我们可以直观的概括下角点所具有的特征: >轮廓之间的交点; >对于同一场景,即使视角发生变化,通常具备稳定性质的特征; >该点附近区域的像素点无论在梯度方向上还是其梯度幅值上有着较大变化; 2. 角点检测算法基本思想是什么? 算法基本思想是使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与滑动后两种情况,窗口中的像素灰度变化程度,如果存在任意方向上的滑动,都有着较大灰度变化,那么我们可以认为该窗口中存在角点。 3

opencv中Harris角点检测

谁说我不能喝 提交于 2020-03-02 00:19:01
cv2.cornerHarris()函数 cv2 . cornerHarris ( src , blockSize , ksize , k , dst = None , borderType = None ) src :数据类型为 float32 的输入图像 blockSize :角点检测中考虑的区域大小 ksize :Sobel求导中使用的窗口大小 k :Harris 角点检测方程中的自由参数,取值参数为 [0.04 0.06] dst :输出图像 borderType :边界的类型 import cv2 import numpy as np img = cv2 . imread ( 'test_1.jpg' ) print ( 'img.shape:' , img . shape ) #img.shape: (800, 1200, 3) gray = cv2 . cvtColor ( img , cv2 . COLOR_BGR2GRAY ) gray = np . float32 ( gray ) #cv2.cornerHarris()函数的返回值其实就是R值构成的灰度图像,灰度图像坐标会与原图像对应   #R值就是角点分数,当R值很大的时候就可以认为这个点是一个角点,所以可以通过选取值更大的点,来更精确的检测角点 dst = cv2 . cornerHarris ( gray

Harris算子

旧城冷巷雨未停 提交于 2020-02-25 18:19:44
文章目录 一.原理 二.实验 1.第一组:垂直或水平边缘多 1.1原图 1.2侧面 1.3旋转 1.4尺寸 1.5实验分析 2.第二组: 纹理角点丰富 2.1原图 2.2侧面 2.3旋转 2.4尺寸不同 2.5实验分析 3.第三组:纹理平坦 3.1原图 3.2侧面 3.3旋转 3.4尺寸 3.5实验分析 三.结论 一.原理 角点的类型: 角点原理来源于人对角点的感性判断,即图像在各个方向灰度有明显变化。算法的核心是利用局部窗口在图像上进行移动判断灰度发生较大的变化,所以此窗口用于计算图像的灰度变化为: [-1,0,1;-1,0,1;-1,0,1][-1,-1,-1;0,0,0;1,1,1]。 从各个方向上移动这个特征的小窗口,如图3中窗口内区域的灰度发生了较大的变化,那么就认为在窗口内遇到了角点。如图中,窗口内图像的灰度没有发生变化,那么窗口内就不存在角点;如果窗口在某一个方向移动时,窗口内图像的灰度发生了较大的变化,而在另一些方向上没有发生变化,那么,窗口内的图像可能就是一条直线的线段。 二.实验 1.第一组:垂直或水平边缘多 1.1原图 1.2侧面 1.3旋转 1.4尺寸 1.5实验分析 实验中对图片的旋转和不同角度的角点检测都差不多,都能够检测出来,但是在尺寸不同的时候,比较远的拍的照片的角点比较多,近处拍的照片的角点比较少。 2.第二组: 纹理角点丰富 2.1原图 2

特征检测算法————Harris角点检测

心已入冬 提交于 2020-02-25 14:45:45
目录 1 特征检测 1.1特征检测定义 1.2特征定义 2 Harris角点检测 2.1角点定义 2.2Harris角点检测基本原理 2.3Harris角度行政 2.4代码实现 2.5不同场景实验结果 2.6实验结果分析 1 特征检测 1.1特征检测定义 特征检测是计算机视觉和图像处理中的一个概念。它指的是使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征。特征检测的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点、连续的曲线或者连续的区域。 1.2特征定义 特征就是有意义的图像区域,该区域具有独特特征和易于识别性。因此角点及高密度区域都是很好的特征,而大量重复的模式或低密度区域(例如图像中的蓝色天空)则不是很好的特征。边缘可以将图像分为两个区域,因此也可以看做好的特征。斑点是与周围有很大差别的像素区域,也是有意义的特征。 2 Harris角点检测 2.1角点定义 角点是图像很重要的特征,对图像图形的理解和分析有很重要的作用。角点在保留图像图形重要特征的同时,可以有效地减少信息的数据量,使其信息的含量很高,有效地提高了计算的速度,有利于图像的可靠匹配,使得实时处理成为可能。角点在三维场景重建运动估计,目标跟踪、目标识别、图像配准与匹配等计算机视觉领域起着非常重要的作用。在现实世界中,角点对应于物体的拐角,道路的十字路口、丁字路口等

OpenCV--图像特征(harris角点检测)

陌路散爱 提交于 2020-02-12 18:18:38
图像特征--harris角点检测 基本原理 cv2.cornerHarris() - img: 数据类型为 float32 的入图像 - blockSize: 角点检测中指定区域的大小 - ksize: Sobel求导中使用的窗口大小 - k: 取值参数为 [0,04,0.06] import cv2 import numpy as np img = cv2.imread('test_1.jpg') print ('img.shape:',img.shape) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # gray = np.float32(gray) dst = cv2.cornerHarris(gray, 2, 3, 0.04) print ('dst.shape:',dst.shape) 效果: img.shape: (800, 1200, 3) dst.shape: (800, 1200) img[dst>0.01*dst.max()]=[0,0,255] cv2.imshow('dst',img) cv2.waitKey(0) cv2.destroyAllWindows() 效果: 来源: https://www.cnblogs.com/SCCQ/p/12299472.html

OpenCV中角点检测:Harris、Shi-Tomasi、亚像素级角点检测

∥☆過路亽.° 提交于 2020-01-26 01:51:54
1、角点的定义 角点通常被定义为两条边的交点,或者说,角点的局部邻域应该具有两个不同区域的不同方向的边界。比如,三角形有三个角,矩形有四个角,这些就是角点,也是他们叫做矩形、三角形的特征。 角点是个很特殊的存在。如果某一点在任意方向的一个微小的变动都会引起灰度很大的变化,那么我们就可以把该点看做是角点。 角点检测(Corner Detection)是计算机视觉系统中获取图像特征的一种方法,广泛应用于运动检测、图像匹配、视频跟踪、三维重建和目标识别等,也可称为特征点检测。 2、 角点检测算法的基本思想 使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与滑动后两种情况,窗口中的像素灰度变化程度,如果存在任意方向上的滑动,都有着较大灰度变化,那么我们可以认为该窗口中存在角点。 目前,角点检测算法还不是十分完善,许多算法需要依赖大量的训练集和冗余数据来防止和减少错误的特征的出现。对于角点检测算法的重要评价标准是:其对多幅图像中相同或者相似特征的检测能力,并且能够应对光照变化、或者图像旋转等影响。 关于角点的具体描述可以有几种: 一阶导数(即灰度的梯度)的局部最大所对应的像素点; 两条及两条以上边缘的交点; 图像中梯度值和梯度方向的变化速率都很高的点; 角点处的一阶导数最大,二阶导数为零,指示物体边缘变化不连续的方向。 三类角点检测算法: 基于二值图像的角点检测;

Harris角点检测

帅比萌擦擦* 提交于 2019-11-30 21:22:09
Harris角点检测 1.角点概述 角点是图像很重要的特征,对图像图形的理解和分析有很重要的作用。角点在保留图像图形重要特征的同时,可以有效地减少信息的数据量,使其信息的含量很高, 有效地提高了计算的速度,有利于图像的可靠匹配,使得实时处理成为可能。角点在三维场景重建运动估计,目标跟踪、目标识别、图像配准与匹配等计算机视觉领域起着非常重要的作用 。在现实世界中,角点对应于物体的拐角,道路的十字路口、丁字路口等。从图像分析的角度来定义角点可以有以下两种定义: a. 角点可以是两个边缘的角点; b. 角点是邻域内具有两个主方向的特征点; 前者往往需要对图像边缘进行编码,这在很大程度上依赖于图像的分割与边缘提取,具有相当大的难度和计算量,且一旦待检测目标局部发生变化,很可能导致操作的失败。 早期主要有Rosenfeld和Freeman等人的方法,后期有CSS等方法。基于图像灰度的方法通过计算点的曲率及梯度来检测角点, 避免了第一类方法存在的缺陷,此类方法主要有Moravec算子、Forstner算子、Harris算子、SUSAN算子等。本文主要介绍的Harris角点检测的算法原理。 2. Harris角点检测基本原理 人眼对角点的识别通常是在一个局部的小区域或小窗口完成的。 如果在各个方向上移动这个特征的小窗口,窗口内区域的灰度发生了较大的变化,那么就认为在窗口内遇到了角点。

opencv学习笔记6 角点检测

大城市里の小女人 提交于 2019-11-29 09:57:01
角点检测 1.harris焦点检测 void cornerHarris (InputArray src,OutputArray dst, int blockSize, int ksize, double k, intborderType=BORDER_DEFAULT ) 1 Mat src = imread("E:/house.png", 0); 2 Mat harris,harris_bin; 3 cornerHarris(src, harris, 2, 3, 0.01); 4 threshold(harris, harris_bin, 0.00001, 255, THRESH_BINARY); 5 imshow("src", src); 6 imshow("角点检测后的二值效果图", harris_bin); 7 waitKey(); 2.阈值(用于生成二值图) double threshold (InputArray src,OutputArray dst, double thresh, double maxval, int type) 1 #include<opencv.hpp> 2 #include<vector> 3 using namespace std; 4 using namespace cv; 5 int main() 6 { 7 Mat src =