作为我的学士论文的一部分,我正在尝试使用 Harris 和 Stephens 算法实现角检测器: A combined Corner and Edge Detector
我计算:
- 使用 sobel 滤波器 (3x3) 的 x 和 y 偏差
计算系统矩阵 M
M = [交流; CB]
这意味着,如果我没问题:
- A = sobel_x 平方的响应:Ix * Ix(在特定像素处)
- B = sobel_y 平方的响应:Iy * Iy(在特定像素处)
- C = sobel_x 的响应乘以 sobel_y 的响应:Ix * Iy(在某个像素处)
现在我确实计算了 trace(M) 以及我特别关心的:行列式(M)
在那篇论文中,他们提出了行列式的以下近似值,因为它避免了对特征值进行昂贵的计算:
det(M) = A * B - C^2
这必须始终以零结尾!
表达式 det(M) = A * B - C^2 可以重写为:(利用第 2 点的知识)
det(M) = A * B - C * C
det(M) = Ix*Ix * Iy*Iy - Ix*Iy * Ix*Iy
det(M) = Ix*Ix * Iy*Iy - Ix*Ix * Iy*Iy
det(M) = 0
那么我为什么还要费心计算行列式呢?据我所知,计算trace就足够了!(或者我在某个地方犯了一个重大错误?)