精华内容
参与话题
问答
  • 角点检测

    2020-09-23 19:02:14
    角点检测应用于运动检测,图像匹配,视频跟踪,三维建模和目标识别。 图像的特征类型: 边缘 感兴趣关键点(角点) 感兴趣区域(斑点) 阻挠:光照变换和图像旋转的变化会使已有角点的特征变化。 角点检测算法 ...

    角点/兴趣点/特征点:特征明显的点。

    具体描述:

    1. 灰度的梯度的局部最大所对应的像素点
    2. 两条及两条以上边缘的交点
    3. 图像中梯度值和梯度方向的变换速率都很高的点

    角点检测应用于运动检测,图像匹配,视频跟踪,三维建模和目标识别。

    图像的特征类型:

    1. 边缘
    2. 感兴趣关键点(角点)
    3. 感兴趣区域(斑点)

    阻挠:光照变换和图像旋转的变化会使已有角点的特征变化。

    角点检测算法

    (1)基于灰度图像的角点检测

    ① 基于梯度

    ② 基于模板

    主要考虑像素邻域点的灰度变化,将与邻域内亮度对比足够大的点定义未角点。
    Kitchen-Rosenfeld算法

    1. Harris算法
    void cornerHarris(InputArray src, 
    				  OutputArray dst, 
    				  int blockSize, 
    				  int ksize,
    				  double k, 
    				  int borderType=BORDER_DEFAULT);
    

    参数详解:

    • 第一个参数:输入图像。须为单通道8位或者浮点型图像。
    • 第二个参数:存放Harris角点检测的输出结果,和输入图像有一样的尺寸和类型。
    • 第三个参数:邻域的大小
    • 第四个参数:Sobel算子的孔径大小。
    • 第五个参数:Harris参数。
    • 第六个参数:图像像素的边界模式。默认值BORDER_DEFAULT。

    程序实例

    #include<opencv2/opencv.hpp>
    #include<iostream>
    
    using namespace std;
    using namespace cv;
    
    #define WINDOW_NAME1 "【程序窗口1】"
    #define WINDOW_NAME2 "【程序窗口2】"
    
    Mat g_srcImage, g_srcImage1, g_grayImage;
    int thresh = 40;
    int max_thresh = 175;
    
    void on_CornerHarris(int, void*);
    
    int main()
    {
    	g_srcImage = imread("E://Study//RoboMaster//resource//3.jpg");
    
    	if (!g_srcImage.data)
    	{
    		printf("error!\n");
    		return false;
    	}
    
    	imshow("原始图", g_srcImage);
    	g_srcImage1 = g_srcImage.clone();
    
    	cvtColor(g_srcImage, g_grayImage, COLOR_BGR2GRAY);
    
    	namedWindow(WINDOW_NAME1, WINDOW_AUTOSIZE);
    	createTrackbar("阈值:", WINDOW_NAME1, &thresh, max_thresh, on_CornerHarris);
    
    	on_CornerHarris(0, 0);
    
    	waitKey(0);
    	return(0);
    }
    
    void on_CornerHarris(int, void*)
    {
    	Mat dstImage;
    	Mat normImage;
    	Mat scaledImage;
    
    	dstImage = Mat::zeros(g_srcImage.size(), CV_32FC1);
    	g_srcImage1 = g_srcImage.clone();
    
    	cornerHarris(g_grayImage, dstImage, 2, 3, 0.04, BORDER_DEFAULT);
    
    	normalize(dstImage, normImage, 0, 255, NORM_MINMAX, CV_32FC1, Mat());
    	
    	convertScaleAbs(normImage, scaledImage);
    
    	for (int j = 0; j < normImage.rows; j++)
    	{
    		for (int i = 0; i < normImage.cols; i++)
    		{
    			if ((int)normImage.at<float>(j, i) > thresh + 80)
    			{
    				circle(g_srcImage1, Point(i, j), 5, Scalar(10, 10, 255), 2, 8, 0);
    				circle(scaledImage, Point(i, j), 5, Scalar(0, 10, 255), 2, 8, 0);
    			}
    		}
    	}
    	imshow(WINDOW_NAME1, g_srcImage1);
    	imshow(WINDOW_NAME2, scaledImage);
    }
    
    1. Shi-Tomasi
    void goodFeaturesToTrack(InputArray image,
    						 OutputArray corners,
    						 int maxCorners,
    						 double qualityLevel,
    						 double minDistance,
    						 InputArray mask = noArray(),
    						 int blockSize = 3,
    						 bool useHarrisDetector = false,
    						 double k = 0.04);
    

    参数详解:

    • 第一个参数:输入图像。须为8位或浮点型32位单通道图像。
    • 第二个参数:检测到的角点的输出向量。
    • 第三个参数:角点的最大数量。
    • 第四个参数:角点检测可接受的最小特征值。
    • 第五个参数:角点间的最小距离。
    • 第六个参数:感兴趣区域。默认值noArray()。
    • 第七个参数:计算导数自相关矩阵时指定的邻域范围。默认值3。
    • 第八个参数:指示是否使用Harris角点检测。默认false。
    • 第九个参数:设置Hessian自相关矩阵行列式的相对权重的权重系数。默认值0.04。
    1. KLT算法

    2. SUSAN算法

    ③ 基于模板梯度组合

    (2)基于二值图像的角点检测

    (3)基于轮廓曲线的角点检测

    亚像素级角点检测

    void cornerSubPix(InputArray image,
    				  InputOutputArray corners,
    				  Size winSize,
    				  Size zeroZone,
    				  TermCriteria criteria)
    

    参数详解:

    • 第一个参数:输入图像。
    • 第二个参数:提供输入角点的初始坐标和精确的输出坐标。
    • 第三个参数:搜索窗口的一半尺寸。
    • 第四个参数:死区的一般尺寸。
    • 第五个参数:求角点的迭代过程的终止条件。
    展开全文
  • 传统Harris角点检测方法具有计算简单、易于实现的优点,但该算法效率低下、检测精度较低、抗噪性差、存在角点簇。提出一种基于Sobel边缘检测的圆周Harris角点检测算法:首先采用Sobel边缘检测进行角点预筛选,本质上...
  • HARRIS角点检测

    2019-05-08 17:26:17
    现在开始讲解常用的特征点检测,其中Harris角点检测是特征点检测的基础,提出了应用邻近像素点灰度差值概念,从而进行判断是否为角点、边缘、平滑区域。Harris角点检测原理是利用移动的窗口在图像中计算灰度变化值,...
  • 基于FPGA实现了一种自适应阈值Harris角点检测,用于解决低成本ARM处理器无法实时检测到目标角点的问题。该算法首先对整帧像素点进行预筛选,将筛选通过的点进行Harris角点检测,通过设置容忍距离剔除伪角点,得到...
  • 针对传统粒子滤波目标跟踪算法在目标被遮挡或背景色与目标相似情况下出现目标跟踪定位偏差大甚至丢失目标的缺陷,本文提出一种改进的Harris角点检测的目标跟踪方法.该方法首先提出一种改进Harris角点检测算法,利用双...
  • 经典的Harris算法在提取图像的角点上具有计算简单、适应性强等优势,但该方法由于人为设定单一阈值,容易出现伪角点、漏检点及运行...通过实验对比,该算法具有更好的角点检测性,为后期的图像配准奠定了良好的基础。
  • 针对Harris角点检测算法计算量大导致实时性差的难题,提出了一种基于FPGA的快速Harris角点检测技术。利用FPGA并行处理的特点,将整幅图像分为两块后并行处理,对其中分解得到的每一块图像采用流水线处理,并将流水线...
  • 针对传统Harris角点检测算法和目前一些改进算法应用在图像拼接时,仍然可能存在只可在单一尺度上检测、角点位置不准确、伪检和对噪声敏感致使检测率不高等缺点,提出一种基于AP聚类角点提取优化的双边滤波(BF)角点...
  • 针对标定时需要手动确认角点比较耗时且可能存在误差的问题,本文提出一种基于双旋转模板的黑白棋盘角点检测算法。该算法首先通过Harris算法获得初始角点,然后通过构造旋转模板对获得的角点进行迭代筛选,最终求解...
  • Harris角点检测

    2018-10-14 15:47:26
    Harris良好的视觉角点检测,效果算子进行正常,关于角点的应用在图像处理上比较广泛,如图像匹配(FPM特征点匹配)、相机标定等。网上也有很多博客对Harris角点检测原理进行描述,但基本上只是描述了算法流程,相应的...
  • 基于曲率尺度空间的角点检测图技术,优化设计图像匹配算法,基于曲率尺度空间的角点检测算法进行图像特征点的提取,归一化处理特征点,有助于提高图像匹配精度。利用该算法最终实现图像匹配需求,验证了算法的有效性...

空空如也

1 2 3 4 5 ... 20
收藏数 3,903
精华内容 1,561
关键字:

角点检测