harris角点(课程) 2013-3-26

合集下载

Harris角点检测算法

Harris角点检测算法

Harris⾓点检测算法⼀,⾓点 ⾓点还没有明确的数学定义。

⼀般的⾓点检测都是对有具体定义的、或者是能够具体检测出来的兴趣点的检测。

这意味着兴趣点可以是⾓点,也可以是在某些属性上强度最⼤或者最⼩的孤⽴点、线段的终点,或者是曲线上局部曲率最⼤的点。

在实践中,通常⼤部分称为⾓点检测的⽅法检测的都是兴趣点,⽽不是独有的⾓点。

因此,如果只要检测⾓点的话,需要对检测出来的兴趣点进⾏局部检测,以确定出哪些是真正的⾓点。

⽬前的⾓点检测算法可归纳为3类:基于灰度图像的⾓点检测、基于⼆值图像的⾓点检测、基于轮廓曲线的⾓点检测。

⾓点是图像很重要的特征,对图像图形的理解和分析有很重要的作⽤。

对灰度图像、⼆值图像、边缘轮廓曲线的⾓点检测算法进⾏综述,分析了相关的算法,并对各种检测算法给出了评价。

⼆,Harris算法 Harris⾓点提取算法:Harris ⾓点提取算法是Chris Harris 和Mike Stephens 在H.Moravec 算法的基础上发展出的通过⾃相关矩阵的⾓点提取算法,⼜称Plessey算法。

Harris⾓点提取算法这种算⼦受信号处理中⾃相关⾯数的启发,给出与⾃相关函数相联系的矩阵M。

M 阵的特征值是⾃相关函数的⼀阶曲率,如果两个曲率值都⾼,那么就认为该点是⾓点特征。

算法流程1.利⽤⽔平,竖直差分算⼦对图像的每个像素进⾏滤波以求得Ix,Iy,进⽽求得M中的四个元素的值。

代码中如果窗⼝数组array为-1,0,1,-1,0,1,-1,0,1}则是求解X⽅向的,如果为{-1,-1,-1,0,0,0,1,1,1}为Y⽅向的,则Ix和Iy求解结束,求解IX2相对⽐较简单,像素相乘即可。

2.对M的四个元素进⾏⾼斯平滑滤波,为的是消除⼀些不必要的孤⽴点和凸起,得到新的矩阵M。

3.3.接下来利⽤M计算对应每个像素的⾓点响应函数R,即:4、局部极⼤值抑制,同时选取其极⼤值5.在矩阵R中,同时满⾜R(i,j)⼤于⼀定阈值threshold和R(i,j)是某领域内的局部极⼤值,则被认为是⾓点三,代码1from pylab import *2from PIL import Image3from PCV.localdescriptors import harris4"""5 Example of detecting Harris corner points (Figure 2-1in the book).6"""7 # 读⼊图像8 im = array(Image.open(r'b3.jpg').convert('L'))9 # 检测harris⾓点10 harrisim = pute_harris_response(im)11 # Harris响应函数12 harrisim1 = 255 - harrisim13 figure()14 gray()15 #画出Harris响应图16 subplot(141)17 imshow(harrisim1)18 print (harrisim1.shape)19 axis('off')20 axis('equal')21 threshold = [0.01, 0.05, 0.1]22for i, thres in enumerate(threshold):23 filtered_coords = harris.get_harris_points(harrisim, 6, thres)24 subplot(1, 4, i+2)25 imshow(im)26 print (im.shape)27 plot([p[1] for p in filtered_coords], [p[0] for p in filtered_coords], '*')28 axis('off')29 show()四,运⾏结果 4.1纹理平坦的图 4.1.1正⾯ 4.1.2侧⾯ 4.1.3旋转 4.1.4相对较远处 4.1.5较亮情况 4.2垂直或⽔平边缘多 4.2.1正⾯ 4.2.2侧⾯ 4.2.3旋转 4.2.4相对较远处 4.3纹理⾓点丰富 4.3.1正⾯ 4.3.2侧⾯ 4.3.3旋转 4.3.4相对较远处五,结论以及实验中遇到的问题 5.1实验结果分析1. Harris⾓点具有旋转不变性。

计算视觉——Harris角点检测

计算视觉——Harris角点检测

计算视觉——Harris⾓点检测⽬录⼀、Harris ⾓点检测1.1 Harris ⾓点检测原理1.2⾓点检测算法⼆、基于Harris⾓点检测对不同类型图像做出的对⽐实验2.1 平坦图像的Harris⾓点检测实验结果2.2 边缘丰富图像的Harris⾓点检测实验结果2.3⾓点丰富图像的Harris⾓点检测实验结果三、结论与总结⼀.、Harris ⾓点检测1.1 Harris ⾓点检测原理Harris⾓点检测算法是最简单的⾓点检测⽅法之⼀。

它的基本思想是使⽤⼀个固定窗⼝在图像上进⾏任意⽅向上的滑动,⽐较滑动前与滑动后两种情况,窗⼝中的像素灰度变化程度,如果存在任意⽅向上的滑动,都有着较⼤灰度变化,那么我们可以认为该窗⼝中存在⾓点。

⽤数学⽅法来刻画⾓点特征:公式解释:>[u,v]是窗⼝的偏移量>(x,y)是窗⼝内所对应的像素坐标位置,窗⼝有多⼤,就有多少个位置>w(x,y)是窗⼝函数,最简单情形就是窗⼝内的所有像素所对应的w权重系数均为1。

但有时候,我们会将w(x,y)函数设定为以窗⼝中⼼为原点的⼆元正态分布。

如果窗⼝中⼼点是⾓点时,移动前与移动后,该点的灰度变化应该最为剧烈,所以该点权重系数可以设定⼤些,表⽰窗⼝移动时,该点在灰度变化贡献较⼤;⽽离窗⼝中⼼(⾓点)较远的点,这些点的灰度变化⼏近平缓,这些点的权重系数,可以设定⼩点,以⽰该点对灰度变化贡献较⼩,那么我们⾃然想到使⽤⼆元⾼斯函数来表⽰窗⼝函数,这⾥仅是个⼈理解,⼤家可以参考下。

所以通常窗⼝函数有如下两种形式:根据上述表达式,当窗⼝处在平坦区域上滑动,可以想象的到,灰度不会发⽣变化,那么E(u,v) = 0;如果窗⼝处在⽐纹理⽐较丰富的区域上滑动,那么灰度变化会很⼤。

算法最终思想就是计算灰度发⽣较⼤变化时所对应的位置,当然这个较⼤是指针任意⽅向上的滑动,并⾮单指某个⽅向。

1.2⾓点检测算法⾓点检测算法可归纳为3类:基于灰度图像的⾓点检测、基于⼆值图像的⾓点检测、基于轮廓曲线的⾓点检测。

harris角点检测原理步骤说明

harris角点检测原理步骤说明

harris角点检测原理步骤说明一、Harris角点检测基本理论1.1 简略表达:角点:最直观的印象就是在水平、竖直两个方向上变化均较大的点,即Ix、Iy 都较大边缘:仅在水平、或者仅在竖直方向有较大的变化量,即Ix和Iy只有其一较大平坦地区:在水平、竖直方向的变化量均较小,即Ix、Iy都较小角点响应R=det(M)-k*(trace(M)^2) (附录资料给出k=0.04~0.06,opencv指出是0.05-0.5,浮动较大)det(M)=λ1*λ2 trace(M)=λ1+λ2R取决于M的特征值,对于角点|R|很大,平坦的区域|R|很小,边缘的R为负值。

1.2 详细描述:见附录里的ppt1.3 算法步骤其中,局部极大值可用先膨胀后与原图比较的方法求得,具体见二中源码。

二、opencv代码实现harris类[cpp] view plaincopyprint?1. #ifndef HARRIS_H2. #define HARRIS_H3. #include "opencv2/opencv.hpp"4.5. class harris6. {7. private:8. cv::Mat cornerStrength; //opencv harris函数检测结果,也就是每个像素的角点响应函数值9. cv::Mat cornerTh; //cornerStrength阈值化的结果10. cv::Mat localMax; //局部最大值结果11. int neighbourhood; //邻域窗口大小12. int aperture;//sobel边缘检测窗口大小(sobel获取各像素点x,y方向的灰度导数)13. double k;14. double maxStrength;//角点响应函数最大值15. double threshold;//阈值除去响应小的值16. int nonMaxSize;//这里采用默认的3,就是最大值抑制的邻域窗口大小17. cv::Mat kernel;//最大值抑制的核,这里也就是膨胀用到的核 18. public:19.harris():neighbourhood(3),aperture(3),k(0.01),maxStrength(0.0),threshold (0.01),nonMaxSize(3){20.21. };22.23. void setLocalMaxWindowsize(int nonMaxSize){ 24. this->nonMaxSize= nonMaxSize; 25. };26.27. //计算角点响应函数以及非最大值抑制28. void detect(const cv::Mat &image){ 29. //opencv自带的角点响应函数计算函数30. cv::cornerHarris (image,cornerStrength,neighbourhood,aperture,k);31. double minStrength;32. //计算最大最小响应值33. cv::minMaxLoc (cornerStrength,&minStrength,&maxStrength);34.35. cv::Mat dilated;36. //默认3*3核膨胀,膨胀之后,除了局部最大值点和原来相同,其它非局部最大值点被37. //3*3邻域内的最大值点取代38. cv::dilate (cornerStrength,dilated,cv::Mat()); 39. //与原图相比,只剩下和原图值相同的点,这些点都是局部最大值点,保存到localMax40. cv::compare(cornerStrength,dilated,localMax,cv::CMP_EQ);41. }42.43. //获取角点图44. cv::Mat getCornerMap(double qualityLevel) {45. cv::Mat cornerMap;46. // 根据角点响应最大值计算阈值47. threshold= qualityLevel*maxStrength; 48.cv::threshold(cornerStrength,cornerTh, 49.threshold,255,cv::THRESH_BINARY); 50. // 转为8-bit图51. cornerTh.convertTo(cornerMap,CV_8U); 52. // 和局部最大值图与,剩下角点局部最大值图,即:完成非最大值抑制53. cv::bitwise_and(cornerMap,localMax,cornerMap); 54. return cornerMap;55. }56.57. void getCorners(std::vector<cv::Point> &points, 58. double qualityLevel) {59. //获取角点图60. cv::Mat cornerMap= getCornerMap(qualityLevel); 61. // 获取角点62. getCorners(points, cornerMap); 63. }64.65. // 遍历全图,获得角点66. void getCorners(std::vector<cv::Point> &points, 67. const cv::Mat& cornerMap) {68.69. for( int y = 0; y < cornerMap.rows; y++ ) {70. const uchar* rowPtr = cornerMap.ptr<uchar>(y);71. for( int x = 0; x < cornerMap.cols; x++ ) { 72. // 非零点就是角点73. if (rowPtr[x]) { 74. points.push_back(cv::Point(x,y));75. }76. }77. }78. }79.80. //用圈圈标记角点81. void drawOnImage(cv::Mat &image,82. const std::vector<cv::Point> &points, 83. cv::Scalar color= cv::Scalar(255,255,255), 84. int radius=3, int thickness=2) {85. std::vector<cv::Point>::const_iterator it=points.begin();86. while (it!=points.end()) { 87. // 角点处画圈88. cv::circle(image,*it,radius,color,thickness);89. ++it;90. }91. }92.93. };94.95. #endif // HARRIS_H相关测试代码:[cpp] view plaincopyprint?1. cv::Mat image, image1 = cv::imread ("test.jpg");2. //灰度变换3. cv::cvtColor (image1,image,CV_BGR2GRAY);4.5.6. // 经典的harris角点方法7. harris Harris;8. // 计算角点9. Harris.detect(image);10. //获得角点11. std::vector<cv::Point> pts; 12. Harris.getCorners(pts,0.01); 13. // 标记角点14. Harris.drawOnImage(image,pts); 15.16. cv::namedWindow ("harris"); 17. cv::imshow ("harris",image); 18. cv::waitKey (0);19. return 0;相关测试结果:三、改进的Harris角点检测从经典的Harris角点检测方法不难看出,该算法的稳定性和k有关,而k是个经验值,不好把握,浮动也有可能较大。

harris角点检测算法的原理

harris角点检测算法的原理

harris角点检测算法的原理宝子!今天咱来唠唠这个超有趣的Harris角点检测算法的原理呀。

你看啊,在图像里呢,角点可是很特别的存在。

就像是人群里那个特别出众的帅哥或者美女,一眼就能被瞅见。

角点不是那种平平无奇的点哦。

比如说在一个方形的图像里,四个角就是很典型的角点。

那这个Harris角点检测算法呢,就像是一个超级侦探,专门去把这些角点给找出来。

想象一下,这个算法是怎么看待图像的呢?它把图像看成是一个充满变化的小世界。

对于图像中的每个小区域,算法会去研究这个区域周围的像素是怎么变化的。

就好比你站在一个小广场上,看看周围的人是怎么分布的,是均匀散开呢,还是有某个方向特别密集或者稀疏。

这个算法有个很关键的东西叫自相关函数。

这函数就像是一个小魔法棒,它会去计算每个小区域在不同方向上的像素变化情况。

如果在某个点的周围,不管你朝哪个方向去看,像素的变化都很明显,那这个点就很有可能是角点啦。

比如说,你在一个十字街头,不管你是看南北方向的街道,还是东西方向的街道,周围的景色(也就是像素)变化都很大,那这个十字路口就像是图像里的角点一样。

那这个算法具体是怎么操作的呢?它会先建立一个小的窗口,就像拿着一个小放大镜在图像上到处看。

这个窗口会在图像上滑动,每到一个地方,就开始计算这个地方的自相关函数。

这个计算过程呢,其实就是在看这个小窗口里的像素和周围像素的关系。

如果这个关系在各个方向上都很独特,那就有可能是角点啦。

你知道吗,这个算法还会用到矩阵呢。

不过别被矩阵吓到,它就像是一个小账本,记录着这个小区域像素变化的各种信息。

比如说,矩阵会告诉你这个区域在水平方向和垂直方向上像素变化的快慢呀之类的。

如果这个矩阵的特征值有某种特殊的情况,那就说明这个点很可能是角点。

就好像是这个小账本上的某些数字组合起来,就指向了这个特别的角点。

而且哦,这个Harris角点检测算法还有个很贴心的地方。

它不是那种很死板的算法,它会根据不同的图像特点去调整自己的判断标准。

特征匹配-Harris角点检测

特征匹配-Harris角点检测

特征匹配-Harris⾓点检测⼀、harris算法简介1.⾓点概述⾓点是图像很重要的特征,对图像图形的理解和分析有很重要的作⽤。

⾓点在保留图像图形重要特征的同时,可以有效地减少信息的数据量,使其信息的含量很⾼,有效地提⾼了计算的速度,有利于图像的可靠匹配,使得实时处理成为可能。

从图像分析的⾓度来定义⾓点可以有以下两种定义:⾓点可以是两个边缘的⾓点;⾓点是邻域内具有两个主⽅向的特征点;前者往往需要对图像边缘进⾏编码,这在很⼤程度上依赖于图像的分割与边缘提取,具有相当⼤的难度和计算量,且⼀旦待检测⽬标局部发⽣变化,很可能导致操作的失败。

基于图像灰度的⽅法通过计算点的曲率及梯度来检测⾓点,避免了第⼀类⽅法存在的缺陷,此类⽅法主要有Moravec算⼦、Forstner算⼦、Harris算⼦、SUSAN算⼦等。

本⽂主要介绍的Harris⾓点检测的算法原理。

2.Harris⾓点检测基本原理⼈眼对⾓点的识别通常是在⼀个局部的⼩区域或⼩窗⼝完成的。

如果在各个⽅向上移动这个特征的⼩窗⼝,窗⼝内区域的灰度发⽣了较⼤的变化,那么就认为在窗⼝内遇到了⾓点。

如果这个特定的窗⼝在图像各个⽅向上移动时,窗⼝内图像的灰度没有发⽣变化,那么窗⼝内就不存在⾓点;如果窗⼝在某⼀个⽅向移动时,窗⼝内图像的灰度发⽣了较⼤的变化,⽽在另⼀些⽅向上没有发⽣变化,那么,窗⼝内的图像可能就是⼀条直线的线段。

如下图:3、特征匹配流程3.1、根据准则,提取图像中的特征点3.2、提取特征点周围的图像块,构造特征描述符3.3、通过特征描述符对⽐,实现特征匹配⼆、Harris⾓点检测声明:为了更好地对 Harris⾓点检测算法进⾏分析,本次实验⼀共收集了纹理平坦、垂直边缘多、垂直边缘多的三个不同的场景,每个场景各收集了五幅的图⽚。

然后通过每个场景中正⾯、侧⾯、旋转、远近、光照五个不同的⽅⾯进⾏对⽐试验。

2.1、纹理平坦的场景(以书本为例)2.1.1、正⾯图及检测结果2.1.2、侧⾯图及检测结果2.1.3、旋转图及检测结果2.1.4 、远距离图及检测结果2.1.5 、光照图及检测结果实验结果分析与总结:Harris⾓点检测算⼦具有旋转不变性。

harris角点检测实验报告

harris角点检测实验报告

harris角点检测实验报告Harris 角点检测实验报告一、引言二、Harris 角点检测算法原理Harris 角点检测算法的核心思想是基于局部自相关函数。

对于图像中的每个像素点,通过计算其在一定邻域内的灰度变化情况来判断是否为角点。

具体来说,首先对图像进行灰度化处理,然后计算每个像素点的梯度。

接着,构建一个二阶矩矩阵(也称为结构张量),其元素是像素点邻域内梯度的乘积。

通过分析这个二阶矩矩阵的特征值,可以判断该像素点是否为角点。

如果两个特征值都很大,说明在两个方向上灰度变化都很显著,即为角点;如果一个特征值大一个特征值小,说明在一个方向上灰度变化明显,为边缘;如果两个特征值都很小,说明灰度变化不明显,不是角点或边缘。

三、实验环境与准备(一)实验环境本次实验使用的编程语言为Python,使用的图像处理库为OpenCV。

(二)准备工作1、安装所需的 Python 库,如 OpenCV。

2、准备实验所需的图像数据集,包括各种类型的图像,如自然风景、人物、建筑物等。

四、实验步骤(一)图像读取与灰度化使用 OpenCV 的`imread`函数读取图像,并使用`cvtColor`函数将其转换为灰度图像。

```pythonimport cv2image = cv2imread('imagejpg')gray_image = cv2cvtColor(image, cv2COLOR_BGR2GRAY)```(二)计算梯度使用 Sobel 算子计算灰度图像的水平和垂直梯度。

```pythonsobelx = cv2Sobel(gray_image, cv2CV_64F, 1, 0, ksize=3)sobely = cv2Sobel(gray_image, cv2CV_64F, 0, 1, ksize=3)```(三)构建二阶矩矩阵根据梯度计算二阶矩矩阵的元素。

```pythonIxx = sobelx 2Ixy = sobelx sobelyIyy = sobely 2```(四)应用高斯滤波对二阶矩矩阵进行高斯滤波,以减少噪声的影响。

特征检测之Harris角点检测简介

特征检测之Harris角点检测简介

特征点又叫兴趣点或者角点。

常被用于目标匹配,目标跟踪,三维重建等应用中。

点特征主要指图像中的明显点,如突出的角点、边缘端点、极值点等等。

特征点具有以下三种特性:▪旋转不变性;▪光照不变性;▪视角不变性。

用于点特征提取的算子称为兴趣点提取(检测)算子。

常用的有▪Harris角点检测;▪FAST特征检测;▪SIFT特征检测;▪SURF特征检测。

预备数学实对称矩阵如果有n阶矩阵A,其矩阵的元素都为实数,且矩阵A的转置等于其本身,则称A为实对称矩阵。

性质:▪实对称矩阵A的不同特征值对应的特征向量是正交的;▪n阶实对称矩阵A必可相似对角化,且相似对角阵上的元素即为矩阵本身特征值。

对角化:优点:满秩的对角方阵,可以直接看出特征值,特征向量等重要特征。

卷积算子—Sobel算子主要用于边缘检测,分别对水平和垂直方向上的边缘敏感。

对图像任意一点使用会产生对应的梯度矢量或者其法矢量。

对噪声具有平滑抑制作用,但是得到的边缘较粗,且可能出现伪边缘。

该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。

如果以A代表原始图像,Gx 及Gy分别代表经横向及纵向边缘检测的图像,其公式如下:梯度计算公式梯度方向计算公式如果等于零,代表图像该处拥有纵向边缘,左边比右边要暗。

基础知识1、角点使用一个滑动窗口在下面三幅图中滑动,可以得出以下结论:▪左图表示一个平坦区域,在各方向移动,窗口内像素值均没有太大变化;▪中图表示一个边缘特征(Edges),如果沿着水平方向移动(梯度方向),像素值会发生跳变;如果沿着边缘移动(平行于边缘) ,像素值不会发生变化;▪右图表示一个角(Corners),不管你把它朝哪个方向移动,像素值都会发生很大变化。

所以,右图是一个角点。

2、角点类型下图展示了不同角点的类型,可以发现:如果使用一个滑动窗口以角点为中心在图像上滑动,存在朝多个方向上的移动会引起该区域的像素值发生很大变化的现象。

harris角点检测的原理

harris角点检测的原理

harris角点检测的原理
Harris角点检测是一种计算机视觉算法,用于寻找图像中的角
点(即具有明显的边缘变化的局部区域)。

其原理如下:
1. 图像灰度化:将彩色图像转换为灰度图像,以便后续处理。

2. 梯度计算:根据图像灰度值计算每个像素的梯度,通常使用Sobel算子进行图像梯度计算。

3. 计算自相关矩阵:对于每个像素,计算其周围窗口内梯度的自相关矩阵。

自相关矩阵是一个2x2的矩阵,包含了图像的二阶梯度信息。

4. 计算Harris响应函数:根据自相关矩阵计算Harris响应函数,该函数用于评估每个像素周围区域是否为角点。

Harris响应函
数定义为:
R = det(M) - k(trace(M))^2
其中,M是自相关矩阵,det(M)和trace(M)分别表示矩阵的行
列式和迹,k是一个经验参数,用于调整角点检测的灵敏度。

5. 非最大抑制:对于Harris响应函数计算得到的角点,使用非最大抑制算法排除冗余的角点。

非最大抑制通常根据角点的Harris响应值大小和邻域内角点的距离来决定是否保留一个角点。

6. 阈值处理:根据Harris响应函数的阈值,将不满足要求的角点剔除。

通常会通过设定一个合适的阈值,以过滤掉噪声和不
显著的角点。

通过以上步骤,Harris角点检测算法可以在图像中准确地检测到具有明显边缘变化的角点,并过滤掉不相关的点和噪声。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
can analyze E’s shape by looking at the property of M
Harris corner detector
High-level idea: what shape of the error function will we prefer for features?
Applications
• • • • • Object or scene recognition Structure from motion Stereo Motion tracking …
Components
• Feature detection locates where they are • Feature description describes what they are • Feature matching decides whether two are the same one
w( x, y ) I x u I y v O(u , v )
2 2 x, y
2
x, y


2
E (u , v) Au 2 2Cuv Bv 2 A w( x, y ) I x2 ( x, y )
x, y 2 B w( x, y ) I y ( x, y ) x, y
T
Harris corner detector
Only minimum of E is taken into account A new corner measurement by investigating the shape of the error function
uT Mu represents a quadratic function; Thus, we
3.25 1.30 0.50 0.87 1 0 0.50 0.87 A 0 4 0.87 0.50 1 . 30 1 . 75 0 . 87 0 . 50
T
Visualize quadratic functions
Intensity change in shifting window: eigenvalue analysis
u E (u, v) u, v M v
Ellipse E(u,v) = const
使方程等于常数,用于绘制 一条等高线。
1, 2 – eigenvalues of M
Moravec corner detector
flat
Moravec corner detector
flat
Moravec corner detector
flat
edge
Moravec corner detector
flapoint
Moravec corner detector
in all directions
flat
edge 1 >> 2
1
Harris corner detector
a00 a11 (a00 a11 ) 2 4a10 a01 Only for reference, you do not need 2 them to compute R
T
朝各个方向函数的递增 速度均相同
Visualize quadratic functions
4 0 1 0 4 0 1 0 A 0 1 0 1 0 1 0 1
T
在垂直方向上函数的递 增速度大
Visualize quadratic functions
Harris corner detector
Noisy response due to a binary window function Use a Gaussian function
Harris corner detector
Only a set of shifts at every 45 degree is considered Consider all small shifts by Taylor’s expansion
direction of the fastest change
direction of the slowest change
(max)-1/2 (min)-1/2
椭圆的长、短半轴为什么取 这样的值?
Visualize quadratic functions
1 0 1 0 1 0 1 0 A 0 1 0 1 0 1 0 1
, where M is a 22 matrix computed from image derivatives:
2 Ix M w( x, y ) x, y I x I y
IxI y 2 Iy
Harris corner detector (matrix form)
7.75 3.90 0.50 0.87 1 0 0.50 0.87 A 0 10 0.87 0.50 3 . 90 3 . 25 0 . 87 0 . 50
T
Harris corner detector
E (u)
x 0 W ( p )
2 w ( x ) | I ( x u ) I ( x ) | 0 0 0
| I ( x 0 u ) I ( x 0 ) |2 I I0 I u 0 x
T 2
I u x
T
T
2
I I u u x x uT Mu
内容
• • • • • Features(点特征) Harris corner detector SIFT Extensions Applications
Harris corner detector
Moravec corner detector (1980)
• We should easily recognize the point by looking through a small window • Shifting a window in any direction should give a large change in intensity
Change of intensity for the shift [u,v]:
E(u, v) w( x, y)I ( x u, y v) I ( x, y)
x, y
2
window function
shifted intensity
intensity
Four shifts: (u,v) = (1,0), (1,1), (0,1), (-1, 1) Look for local maxima in min{E}
C w( x, y ) I x ( x, y ) I y ( x, y )
x, y
Harris corner detector
Equivalently, for small shifts [u,v] we have a bilinear approximation:
u E (u, v) u v M v
2 “Edge” R<0 “Corner”
R>0
• R只与M的特征值有关 • 角点:R为大数值正数 • 边缘:R为大数值负数 • 平坦区:R为小数值
“Flat” |R| small
“Edge” R<0 1
Another view
Another view
Another view
Summary of Harris detector
第5章 视觉图像特征信息提取
5.2 兴趣点检测
内容
• • • • • Features(点特征) Harris corner detector SIFT Extensions Applications
Features
Features
• Also known as interesting points, salient points or keypoints. Points that you can easily point out their correspondences in multiple images using only local information.
1. Compute x and y derivatives of image
I x G I
x
I y G I
y
2. Compute products of derivatives at every pixel
I x2 I x I x
I y2 I y I y
I xy I x I y
Problems of Moravec detector
• Noisy response due to a binary window function • Only a set of shifts at every 45 degree is considered • Only minimum of E is taken into account Harris corner detector (1988) solves these problems.
Harris corner detector
Only a set of shifts at every 45 degree is considered Consider all small shifts by Taylor’s expansion
E(u, v) w( x, y)I ( x u, y v) I ( x, y)
相关文档
最新文档