harry 角点检测 c++源代码
作者:dylan 日期:2009-01-23
字体大小: 小 中 大
void Harry(BYTE*BBuf,BYTE*GBuf,BYTE*RBuf)
{
//gausswidth:二维高斯窗口宽度
//sigma:高斯函数的方差
//size:非极大值抑制的邻域宽度
//thresh:最终确定角点所需的阈值
int i,j,m,n,size,thresh,gausswidth;
double sigma;
//输入四个参数
//CInput2 input;
//input.m_gausswidth =5;
//input.m_sigma =0.8;
//input.m_size =5;
//input.m_thresh =5000;
//input.DoModal ();
gausswidth=5;//input.m_gausswidth ;
sigma=0.8;//input.m_sigma ;
size=5;//input.m_size ;
thresh=5000;//input.m_thresh ;
unsigned char *lpSrc;//一个指向源、目的像素的移动指针
//LPSTR lpDIB = (LPSTR) ::GlobalLock((HGLOBAL)m_hDIB);
int cxDIB = 320;//(int) ::DIBWidth(lpDIB); // 图像宽度
int cyDIB = 240;//(int) ::DIBHeight(lpDIB); // 图像高度
//LPSTR lpDIBBits=::FindDIBBits (lpDIB);
long lLineBytes = 320;//WIDTHBYTES(cxDIB * 8); // 计算灰度图像每行的字节
数
//创建 I、Ix、Ix2、Iy、Iy2、Ixy、cim、mx、corner 数组
double *I=new double[cxDIB*cyDIB];
double *Ix=new double[cxDIB*cyDIB];
double *Ix2=new double[cxDIB*cyDIB];
double *Iy=new double[cxDIB*cyDIB];
double *Iy2=new double[cxDIB*cyDIB];
double *Ixy=new double[cxDIB*cyDIB];
double *cim=new double[cxDIB*cyDIB];
double *mx=new double[cxDIB*cyDIB];
bool*corner=new bool[cxDIB*cyDIB];
memset(corner, 0, cxDIB*cyDIB*sizeof(bool));
//定义宏以方便访问元素
#define I(ROW,COL) I[cxDIB*(ROW)+(COL)]
#define Ix(ROW,COL) Ix[cxDIB*(ROW)+(COL)]
评论0