角点:最直观的印象就是在水平、竖直两个方向上变化均较大的点,即Ix、Iy都较大
边缘:仅在水平、或者仅在竖直方向有较大的变化量,即Ix和Iy只有其一较大
平坦地区:在水平、竖直方向的变化量均较小,即Ix、Iy都较小
2 strong eigenvalues======interest point
1 strong eigenvalues======contour/edge
0 eigenvalues ======uniform region
角点响应
R=det(M)-k*(trace(M)^2) (k=0.04~0.06)
det(M)=λ1*λ2 trace(M)=λ1+λ2
R取决于M的特征值,对于角点|R|很大,平坦的区域|R|很小。
编程步骤:
使用opencv进行测试:
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
void drawcross(CvArr* img,CvPoint2D32f pt)
{
const int radius=3;
int ptx=cvRound(pt.x);
int pty=cvRound(pt.y);
int ls=ptx-radius;
int re=ptx+radius;
int us=pty-radius;
int de=pty+radius;
cvLine(img,cvPoint(ls,pty),cvPoint(re,pty),CV_RGB(0,0,255),1,0);
cvLine(img,cvPoint(ptx,us),cv