Harris角点检测原理及实现

一、原理

二、实现

close all;
clear all;
I=imread(‘test.tif‘);
[posX,posY]=harris(I);
figure;imshow(I);
hold on; plot(posX, posY, ‘g*‘);
function [posX,posY]=harris(I)
%Harris角点检测
%I:输入图像
%posX:角点X坐标
%posY:角点Y坐标
I=double(I);
[m,n]=size(I);
hx=[-1,0,1;-1,0,1;-1,0,1];
Ix=imfilter(I,hx,‘replicate‘,‘same‘);%X方向差分图像
Iy=imfilter(I,hx‘,‘replicate‘,‘same‘);%Y方向差分图像
Ix2=Ix.^2;
Iy2=Iy.^2;
Ixy=Ix.*Iy;
h=fspecial(‘gaussian‘,3,2);
Ix2=imfilter(Ix2,h,‘replicate‘,‘same‘);%高斯滤波
Iy2=imfilter(Iy2,h,‘replicate‘,‘same‘);
Ixy=imfilter(Ixy,h,‘replicate‘,‘same‘);
R=zeros(m,n);
k=0.04;%建议值(0.04--0.06)
for i=1:m
    for j=1:n
       R(i,j)=(Ix2(i,j)*Iy2(i,j)-Ixy(i,j)*Ixy(i,j))-k*((Ix2(i,j)+Iy2(i,j))^2);%角点响应值
    end
end
T=0.1*max(R(:));% 阈值,可控制返回的角点个数
result=zeros(m,n);
%非极大值抑制(3*3窗口中大于阈值T的局部极大值点被认为是角点)
for i=2:m-1
    for j=2:n-1
        tmp=R(i-1:i+1,j-1:j+1);
        tmp(2,2)=0;
        if(R(i,j)>T&&R(i,j)>max(tmp(:)))
            result(i,j)=1;
        end
    end
end
[posY,posX]=find(result);

结果:

时间: 2025-01-04 05:56:37

Harris角点检测原理及实现的相关文章

第十一节、Harris角点检测原理

OpenCV可以检测图像的主要特征,然后提取这些特征.使其成为图像描述符,这类似于人的眼睛和大脑.这些图像特征可作为图像搜索的数据库.此外,人们可以利用这些关键点将图像拼接起来,组成一个更大的图像,比如将许多图像放在一块,然后形成一个360度全景图像. 这里我们将学习使用OpenCV来检测图像特征,并利用这些特征进行图像匹配和搜索.我们会选取一些图像,并通过单应性,检测这些图像是否在另一张图像中. 一 特征检测算法 有许多用于特征检测和提取的算法,我们将会对其中大部分进行介绍.OpenCV最常使

Harris角点检测中的数学推导

简介 本文主要是对Harris角点检测的数学公式进行推导,更加深入的理解理论知识. 预备知识 椭圆的矩阵方程表示 在高中课本中,我们学习到标准椭圆及其方程(如下图所示): 其实,矩阵在运算中使用非常广泛,现将上述标准方程写成矩阵形式(方便接下来的处理): 椭圆半轴与系数矩阵的关系 一个nxn的矩阵,可以求解其特征值,我们对上述系数矩阵(含a.b)进行求解,则可得到特征值与椭圆半轴(a.b)的关系,过程如下: Harris角点检测原理 Harris算法是利用的窗口内图像灰度的自相关性进行的,设定一

Opencv学习笔记--Harris角点检测

image算法测试iteratoralgorithmfeatures 原创文章,转载请注明出处:http://blog.csdn.net/crzy_sparrow/article/details/7391511 文章目录: 一.Harris角点检测基本理论 二.opencv代码实现 三.改进的Harris角点检测 四.FAST角点检测 五.参考文献 六.附录(资料和源码) 一.Harris角点检测基本理论(要讲清楚东西太多,附录提供文档详细说明) 1.1 简略表达: 角点:最直观的印象就是在水平

Harris角点检测学习

1.角点的定义与性质 角点是一种局部特征,具有旋转不变性和不随光照条件变化而变化的特点,一般将图像中曲率足够高或者曲率变化明显的点作为角点.检测得到的角点特征通常用于图像匹配.目标跟踪.运动估计等方面. 2.Harris角点 1)定性描述 该算法中,将图像分为平坦区域.边缘.角点三部分.平坦区域中像素灰度在各个方向上变换都很小,边缘上的像素灰度在某个方向变化很大,但是在另一些方向变化很小:位于角点上的像素灰度则在各个方向上的变化都比较大.这是通过人眼观察得到的直观感受. 2)量化的数学表达 不同

Emgucv使用Harris角点检测和Fast角点检测

角点是两个边缘的连接点,代表了两个边缘变化的方向上的点,在这点上图像梯度有很高的变化.是图像中的重要特征点.在opencv中还有改进版的Harris角点检测:Shi-Tomasi 角点检测算法,但在Emgucv里并没有封装,所以目前无法直接使用. 一.Harris角点检测 Harris角点检测通过判断点在水平和竖直方向上的变化程度来判断是否为角点,使用CornerHarris函数,处理后再用阈值来判断是否为角点. public partial class Form1 : Form { publi

openCV2马拉松第19圈——Harris角点检测(自己实现)

计算机视觉讨论群162501053 转载请注明:http://blog.csdn.net/abcd1992719g/article/details/26824529 收入囊中 使用OpenCV的connerHarris实现角点检测 自己实现Harris算法 下面是自己实现的一个效果图 因为阀值设置比较高,所以房屋周围没有找出来 葵花宝典 在此之前,我们讲过边缘的检测,边缘检测的基本原理就是x方向或者y方向梯度变化很大,角点,顾名思义,就是两个方向的梯度变化都很大. 左1,平滑区域,没有边缘和角点

Harris角点检测

代码示例一: #include<opencv2/opencv.hpp> using namespace cv; int main(){ Mat src = imread("church.jpg", 0); imshow("原始图", src); //进行Harris角点检测找出角点 Mat cornerStrength; cornerHarris(src, cornerStrength, 2, 3, 0.01); //对灰度图进行阈值操作,得到二值图并显

15、角点检测之Harris角点检测

一.引言:关于兴趣点(interest points) 在图像处理和与计算机视觉领域,兴趣点(interest points),或称作关键点(keypoints).特征点(feature points) 被大量用于解决物体识别,图像识别.图像匹配.视觉跟踪.三维重建等一系列的问题.我们不再观察整幅图,而是选择某些特殊的点,然后对他们进行局部有的放矢的分析.如果能检测到足够多的这种点,同时他们的区分度很高,并且可以精确定位稳定的特征,那么这个方法就有使用价值. 图像特征类型可以被分为如下三种: <

【opencv入门】角点检测之Harris角点检测

一.引言:关于兴趣点(interest points) 在图像处理和与计算机视觉领域,兴趣点(interest points),或称作关键点(keypoints).特征点(feature points) 被大量用于解决物体识别,图像识别.图像匹配.视觉跟踪.三维重建等一系列的问题.我们不再观察整幅图,而是选择某些特殊的点,然后对他们进行局部有的放矢的分析.如果能检测到足够多的这种点,同时他们的区分度很高,并且可以精确定位稳定的特征,那么这个方法就有使用价值. 图像特征类型可以被分为如下三种: <