我在 OpenCV 中使用 cornerHarris 函数。我无法理解 ksize
和 k
在函数中的含义。文档提到 ksize
是 Aperture parameter of Sobel derivative used
和 k
是 Harris detector free parameter in the equation
但我不确定它到底是什么意思?
有人可以帮我理解吗?
我试图检测立方体中的角,结果如下:
使用我从文档中使用的简单代码:
import cv2
import numpy as np
filename = "cube.jpg"
img = cv2.imread("./images/{}".format(filename))
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gray = np.float32(gray)
dst = cv2.cornerHarris(gray,12,3,0.04)
dst = cv2.dilate(dst,None)
# Threshold for an optimal value, it may vary depending on the image.
img[dst>0.01*dst.max()]=[0,0,255]
cv2.imshow('dst',img)
if cv2.waitKey(0) & 0xff == 27:
cv2.destroyAllWindows()
我尝试调整
K
但无法理解它的作用,尽管我意识到将其增加到超出限制会导致检测到零角。 最佳答案
Harris 角点检测器用于从灰度图像中提取角点。
Harris 检测器首先计算图像梯度,然后计算梯度的协方差,它是局部 Hessian 的近似值。
它有4个主要步骤:
在这里我们可以看到 Harris 检测器的自由参数 - k 。它是一个在 [0.04,0.06] 范围内的经验确定的常数:
k 参数 可让您在此步骤中施加影响,权衡精度和召回率。因此,使用 较大的 k,您将获得更少的假角 但您也会错过更多真实的角落(高精度),使用 较小的 k 您将获得更多的角落 ,因此您将错过更少的真实角落,但是得到很多错误的(高召回率)。
关于python - 角哈里斯中的 ksize 和 k 是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54720646/