harris角点检测原理步骤说明

harris角点检测原理步骤说明

ID:37724224

大小:1.38 MB

页数:12页

时间:2019-05-29

harris角点检测原理步骤说明_第1页
harris角点检测原理步骤说明_第2页
harris角点检测原理步骤说明_第3页
harris角点检测原理步骤说明_第4页
harris角点检测原理步骤说明_第5页
资源描述:

《harris角点检测原理步骤说明》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、一、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的特征值,对于角点

2、R

3、很大,平坦的

4、区域

5、R

6、很小,边缘的R为负值。1.2 详细描述:见附录里的ppt1.3 算法步骤其中,局部极大值可用先膨胀后与原图比较的方法求得,具体见二中源码。二、opencv代码实现harris类[cpp]viewplaincopyprint?1.#ifndef HARRIS_H  2.#define HARRIS_H  3.#include "opencv2/opencv.hpp"  4.  5.class harris  6.{  7.private:  8.    cv::Mat  cornerStrength;

7、  //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 maxS

8、trength;//角点响应函数最大值  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),nonMaxS

9、ize(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.     

10、       cv::cornerHarris (image,cornerStrength,neighbourhood,aperture,k);  31.            double minStrength;  1.            //计算最大最小响应值  2.            cv::minMaxLoc (cornerStrength,&minStrength,&maxStrength);  3.  4.            cv::Mat dilated;  5.         

11、   //默认3*3核膨胀,膨胀之后,除了局部最大值点和原来相同,其它非局部最大值点被  6.            //3*3邻域内的最大值点取代  7.            cv::dilate (cornerStrength,dilated,cv::Mat());  8.            //与原图相比,只剩下和原图值相同的点,这些点都是局部最大值点,保存到localMax  9.            cv::compare(cornerStrength,dilated,localMax,cv

12、::CMP_EQ);  10.    }  11.  12.    //获取角点图  13.    cv::Mat getCornerMap(double qualityLevel) {  14.            cv::Mat cornerMap;  15.            // 根据角点响应最大值计算阈值  16.            threshold= qualityLevel

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。