Harris角点检测
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用到 定义兴趣值CvMat *R R中的最大值double maxR 输出:以CvMat *数据结构存储的兴趣值R
⑧求局部极大值(输入:R) 定义 CvMat *mat_locmax 求局部极大值的函数CvMat *mblocmax(CvMat *mat1,int xwidth,int ywidth,int size) 输出:以CvMat *数据结构存储的局部极大值mat_locmax
⑥求M中的4项(输入:mat_Ix2,mat_Iy2,mat_Ixy) 定义 高斯滤波器;double *g=new double[gausswidth*gausswidth];
输出:进行高斯滤波后的mat_Ix2,mat_Iy2,mat_Ixy
3、需求分析
⑦求R(输入:M中的4项mat_Ix2,mat_Iy2,mat_Ixy)
1、介绍
基本思想 ①窗口向任意方向的移动都导致图像灰度的明显变化
平坦区域: 任意方向移动, 无灰度变化
边缘区域: 沿着边缘方向移动, 无灰度变化
角点: 沿任意方向移动, 灰度明显变化
1、介绍
兴趣值
角点:R为大数值正数ห้องสมุดไป่ตู้边缘:R为大数值负数 平坦区:R为小数值
2、流程图
3、需求分析
①导入图片(输入:图片)
定义IplImage *src 用到cvLoadImage 输出:以IplImage 数据结构存储的源图像src ②图像灰度化(输入:src) 定义IplImage *pImgGray 用到cvCreateImage //用于创建图像头并分别数据空间 cvCvtColor //颜色空间转换函数,参数CV_RGB2GRAY是RGB到gray。 输出:以IplImage 数据结构存储的灰度图像pImgGray IplImage是OpenCV中C语言的图像类型; cv::Mat是OpenCV中C++语言的图像类型;
3、需求分析
⑤灰度化的图像转化为矩阵(输入:mat_Ix,mat_Iy)
定义CvMat *mat_Ix2,mat_Iy2,mat_Ixy 矩阵乘积CvMat *mbxy(CvMat *mat1,CvMat *mat2,int xwidth,int ywidth)
输出:以CvMat *数据结构存储的灰度图一阶导数mat_Ix2,mat_Iy2,mat_Ixy
3、需求分析
⑨筛选每个点是否是局部极大值点且大于阈值(输入:R,mat_locmax) 定义兴趣值double threshHold CvMat *mat_corner CvMat *mbcorner(CvMat *mat1,CvMat *mat2,int xwidth,int ywidth,int size,double thresh)
④求灰度图的一阶导数(输入:mat_I) 定义 求一阶倒数的算子double dx[9]={-1,0,1,-1,0,1,-1,0,1} double dy[9]={-1,-1,-1,0,0,0,1,1,1}; 卷积CvMat *mbys(CvMat *mat,int xwidth,int ywidth,double *a,int size1,int size2) 输出:以CvMat *数据结构存储的灰度图一阶导数CvMat *mat_Ix,CvMat *mat_Iy
输出:以CvMat *数据结构存储的角点mat_corner
3、需求分析
③灰度化的图像转化为矩阵(输入:pImgGray)
定义double *I=new double[cxDIB*cyDIB]; CvMat *mat_I 图像宽度int cxDIB 图像高度int cyDIB
用到cvCreateMat cvInitMatHeader
输出:以CvMat*数据结构存储的灰度图像mat_I
Harris角点检测
Harris角点检测
介绍
流程图
需求分析
LOREM
LOREM
LOREM
1、介绍
角点:-局部窗口沿各方向移动,均产生明显变化的点。 -图像局部曲率突变的点
1、介绍
数学表达 ①将图像窗口平移[u,v]产生灰度变化 ②左式的泰勒展开式为
③其中,w(x,y)为高斯滤波器
④求解M的特征值比较困难,故引入角点响应函数简化特征值的求解。
⑧求局部极大值(输入:R) 定义 CvMat *mat_locmax 求局部极大值的函数CvMat *mblocmax(CvMat *mat1,int xwidth,int ywidth,int size) 输出:以CvMat *数据结构存储的局部极大值mat_locmax
⑥求M中的4项(输入:mat_Ix2,mat_Iy2,mat_Ixy) 定义 高斯滤波器;double *g=new double[gausswidth*gausswidth];
输出:进行高斯滤波后的mat_Ix2,mat_Iy2,mat_Ixy
3、需求分析
⑦求R(输入:M中的4项mat_Ix2,mat_Iy2,mat_Ixy)
1、介绍
基本思想 ①窗口向任意方向的移动都导致图像灰度的明显变化
平坦区域: 任意方向移动, 无灰度变化
边缘区域: 沿着边缘方向移动, 无灰度变化
角点: 沿任意方向移动, 灰度明显变化
1、介绍
兴趣值
角点:R为大数值正数ห้องสมุดไป่ตู้边缘:R为大数值负数 平坦区:R为小数值
2、流程图
3、需求分析
①导入图片(输入:图片)
定义IplImage *src 用到cvLoadImage 输出:以IplImage 数据结构存储的源图像src ②图像灰度化(输入:src) 定义IplImage *pImgGray 用到cvCreateImage //用于创建图像头并分别数据空间 cvCvtColor //颜色空间转换函数,参数CV_RGB2GRAY是RGB到gray。 输出:以IplImage 数据结构存储的灰度图像pImgGray IplImage是OpenCV中C语言的图像类型; cv::Mat是OpenCV中C++语言的图像类型;
3、需求分析
⑤灰度化的图像转化为矩阵(输入:mat_Ix,mat_Iy)
定义CvMat *mat_Ix2,mat_Iy2,mat_Ixy 矩阵乘积CvMat *mbxy(CvMat *mat1,CvMat *mat2,int xwidth,int ywidth)
输出:以CvMat *数据结构存储的灰度图一阶导数mat_Ix2,mat_Iy2,mat_Ixy
3、需求分析
⑨筛选每个点是否是局部极大值点且大于阈值(输入:R,mat_locmax) 定义兴趣值double threshHold CvMat *mat_corner CvMat *mbcorner(CvMat *mat1,CvMat *mat2,int xwidth,int ywidth,int size,double thresh)
④求灰度图的一阶导数(输入:mat_I) 定义 求一阶倒数的算子double dx[9]={-1,0,1,-1,0,1,-1,0,1} double dy[9]={-1,-1,-1,0,0,0,1,1,1}; 卷积CvMat *mbys(CvMat *mat,int xwidth,int ywidth,double *a,int size1,int size2) 输出:以CvMat *数据结构存储的灰度图一阶导数CvMat *mat_Ix,CvMat *mat_Iy
输出:以CvMat *数据结构存储的角点mat_corner
3、需求分析
③灰度化的图像转化为矩阵(输入:pImgGray)
定义double *I=new double[cxDIB*cyDIB]; CvMat *mat_I 图像宽度int cxDIB 图像高度int cyDIB
用到cvCreateMat cvInitMatHeader
输出:以CvMat*数据结构存储的灰度图像mat_I
Harris角点检测
Harris角点检测
介绍
流程图
需求分析
LOREM
LOREM
LOREM
1、介绍
角点:-局部窗口沿各方向移动,均产生明显变化的点。 -图像局部曲率突变的点
1、介绍
数学表达 ①将图像窗口平移[u,v]产生灰度变化 ②左式的泰勒展开式为
③其中,w(x,y)为高斯滤波器
④求解M的特征值比较困难,故引入角点响应函数简化特征值的求解。