Harris corner detector & Fast corner detector

import cv2
import numpy as np

img = cv2.imread('d:/test1.png', cv2.IMREAD_COLOR)
corners = cv2.cornerHarris(cv2.cvtColor(img, cv2.COLOR_BGR2GRAY), 2, 3, 0.04)
corners = cv2.dilate(corners, None)

show_img = np.copy(img)
show_img[corners > 0.1*corners.max()] = [0, 0, 255]

corners = cv2.normalize(corners, None, 0, 255, cv2.NORM_MINMAX).astype(np.uint8)
show_img = np.hstack((show_img, cv2.cvtColor(corners, cv2.COLOR_GRAY2BGR)))

cv2.imshow('Harris corner detector', show_img)

if cv2.waitKey(0) == 27:
    cv2.destroyAllWindows()

fast = cv2.FastFeatureDetector_create(30, True, cv2.FAST_FEATURE_DETECTOR_TYPE_9_16)
kp = fast.detect(img)
show_img = np.copy(img)
for p in cv2.KeyPoint_convert(kp):
    cv2.circle(show_img, tuple(p), 2, (0, 255, 0), cv2.FILLED)

cv2.imshow('FAST corner detector', show_img)
if cv2.waitKey(0) == 27:
    cv2.destroyAllWindows()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Harris 角点检测器是一种计算机视觉算法,用于检测图像中的角点。它是由 Chris Harris 和 Mike Stephens 在 1988 年提出的。该算法通过计算图像中每个像素的灰度值的变化率来检测角点。如果一个像素的灰度值在不同方向上的变化率都很大,那么它就很可能是一个角点。Harris 角点检测器在计算机视觉中被广泛应用,例如在图像配准、目标跟踪和三维重建等领域。 ### 回答2: Harris角点检测器是一种在计算机视觉中常用的特征提取方法,由Chris Harris和Mike Stephens在1988年提出。其主要用于角点检测,即在图像中寻找具有局部最大变化的像素点,通常被视为图像中的特殊点。 Harris角点检测器的核心思想是通过对窗口内的像素灰度值进行变换(如Sobel算子),得到该窗口中像素点的梯度和方向。然后,利用这些梯度和方向信息来计算每个像素点的角点响应值,该值将显示角点的强度。 计算角点响应值时,Harris采用了二次方程模型,其公式为:R=det(M)-k*(tr(M))^2,其中M是一个2x2的矩阵,用来描述像素点附近的图像局部结构。det(M)表示M的行列式,tr(M)表示M的迹,k是一个常数,用于调整角点响应值的相对重要性。 若M的两个特征值都很大,则表示像素点临近区域内的灰度值变化很强,是角点。若一个特征值很大,而另一个特征值很小,则表示该像素点所在区域是边缘。若两个特征值都很小,则表示该像素点所在区域是灰度值均匀的区域,不是特殊点。 一旦计算出每个像素点的角点响应值,便可通过一个阈值来筛选出真正的角点。一般而言,角点响应值大于某个设定阈值的像素点才被认定为角点。 总的来说,Harris角点检测器是一种简单有效的特征提取方法,具有不受缩放旋转变换影响、对噪声具有一定鲁棒性等优点。因此,它在计算机视觉中得到广泛应用,如图像识别、目标跟踪等领域。 ### 回答3: Harris角点检测器是一种常见的计算机视觉算法,用于检测图像中的角点特征。角点是指在图像中发生了明显变化的像素位置,这些像素通常是物体边界的交点或者拐角位置。由于角点在不同图像中往往是唯一的,因此角点特征很适合用于计算机视觉领域的目标识别、跟踪、拼接等任务。 Harris角点检测器是由Chris Harris和Mike Stephens在1988年提出的。这种方法通过计算图像中每个像素周围一定范围内像素值的方差和协方差矩阵来判断每个像素是否为角点。基本思路是:如果某个像素周围的像素都是相似的,则该像素可能是平坦区域或者边缘,而不是角点;如果某个像素周围的像素在不同方向上都有差异,则该像素可能是角点。 Harris角点检测器的具体算法步骤如下: 1. 计算每个像素点周围一定范围内像素值的梯度和方向。 2. 计算每个像素点的协方差矩阵,即对于一个像素点(x, y),其协方差矩阵为: ![image.png](attachment:image.png) 其中,Ix和Iy分别是x和y方向的梯度值。 3. 对于每个像素点,计算其响应函数R,即: ![image-2.png](attachment:image-2.png) 其中,k是一个常数,一般取较小的值,如0.04。 4. 针对每个像素点的R值,通过阈值筛选出角点。 5. 对于可能产生误检测的情况,可以通过非极大值抑制和距离筛选等方法进行更进一步的优化。 总体来说,Harris角点检测器是一种简单但有效的特征提取方法,在计算机视觉、图像处理等领域得到了广泛应用。此外,针对不同的任务和应用场景,还有许多基于Harris角点检测器的改进算法,如SIFT、SURF和FAST等,都在一定程度上提高了角点特征的稳定性和鲁棒性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值