计算机视觉 | 您所在的位置:网站首页 › opencv阈值设定为负数 › 计算机视觉 |
文章目录
一、harris角点检测原理1.1基本思想1.2 数学模型3、关于harris角点响应函数R
二、harris角点检测源代码2.1 计算harris角点响应函数R2.2harris角点检测
三、harris角点响应函数R的分析3.1不同k值3.2对R不同的计算方法3.2.1 函数计算3.2.2 商计算
3.3不同图像中的R值3.3.1角点丰富的图像3.3.2平坦的图像3.3.3边缘多的图像3.3.4分析
3.4小结
一、harris角点检测原理
1.1基本思想
使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与滑动后两种情况,窗口中的像素灰度变化程度,如果存在任意方向上的滑动,都有着较大灰度变化,那么我们可以认为该窗口中存在角点。 图像窗口平移[u,v]产生灰度变化E(u,v)为: 由于是通过M的两个特征值的大小对图像进行分类,所以,定义角点相应函数R: 在判断角点的时候,对角点响应函数R进行阈值处理:R > threshold,提取R的局部极大值。 二、harris角点检测源代码 2.1 计算harris角点响应函数R算法: 使用高斯倒数滤波器计算图像x,y两个方向的梯度值im_x,im_y(使用高斯倒数滤波器计算可在角点检测过程中抑制噪声强度)计算图像两个方向梯度的乘积分别为x方向的平方,y方向的平方,x和y的乘积,同样使用高斯倒数滤波器计算计算局部特征结果矩阵M的特征值计算响应函数的值 def compute_harris_response(im, sigma=3): ''' 对每个像素值计算Harris角点检测器响应函数 :param im: :param sigma: :return: ''' # 计算导数 im_x = np.zeros(im.shape) im_y = np.zeros(im.shape) filters.gaussian_filter(im, (sigma, sigma), (0, 1), im_x) filters.gaussian_filter(im, (sigma, sigma), (1, 0), im_y) # 计算Harris矩阵分量 Ixx = filters.gaussian_filter(im_x * im_x, sigma) Ixy = filters.gaussian_filter(im_x * im_y, sigma) Iyy = filters.gaussian_filter(im_y * im_y, sigma) # 计算特征值和迹 Idet = Ixx * Iyy - Ixy ** 2 Itrace = Ixx + Iyy #return Idet / Itrace print Idet - 0.04 * (Itrace ** 2) return Idet-0.04*Itrace**2 2.2harris角点检测伪代码: 输入图像,并将图像转换为灰度图对图像检测harris角点画出Harris响应图选取像素值高于设定阈值的点,并进行局部极大值抑制输出图像的角点 # 读入图像 im0 = array(Image.open('data/7/IMG_20200106_175418.jpg')) im = array(Image.open('data/7/IMG_20200106_175418.jpg').convert('L')) # 检测harris角点 harrisim = compute_harris_response(im) # Harris响应函数 harrisim1 = 255 - harrisim figure() gray() #画出Harris响应图 subplot(151) title("原图",fontproperties=font) axis('off') imshow(im0) subplot(152) imshow(harrisim1) print harrisim1.shape axis('off') axis('equal') #设定阈值以及限制并输出 threshold = [0.01, 0.05, 0.1] for i, thres in enumerate(threshold): filtered_coords = harris.get_harris_points(harrisim, 6, thres) subplot(1, 5, i+3) imshow(im) print im.shape plot([p[1] for p in filtered_coords], [p[0] for p in filtered_coords], '*') axis('off') show()局部极大值限制原理为,角点之间的距离必须大于设定的最小距离,这样若有过近或重叠的角点,会被滤除。 三、harris角点响应函数R的分析 3.1不同k值 k=0.01图像角点结果: 图像角点结果: 图像角点结果: 图像角点结果:
图像角点结果: 图像角点结果: 图像角点结果: R值结果: 由结果可知,在角点丰富的图中,R值为正值,因为角点丰富的图λ1λ2值都较大即detM值大,则R值大。在平坦的图中,R值为小数值,且平坦的图中含有边缘,因此R值也有负数值;因为在平坦的图中,λ1λ2值都很小,所以R值小。在边缘丰富的图中,λ1和λ2的值一方大一方小,所以R值为大值负数。 3.4小结 harris角点响应函数R值易受加权常数k值影响,为得到较准确的角点检测结果通常返回商数计算值。在角点丰富的图中,R为大数值正数;在边缘多的图中R为大数值负数 |
CopyRight 2018-2019 实验室设备网 版权所有 |