作为本科论文的一部分,我正在尝试使用Harris和Stephens算法实现拐角检测器:
A combined Corner and Edge Detector
我进行了以下计算:
1. 使用Sobel滤波器(3x3)计算x和y偏差 2. 计算系统矩阵M
M = [A C; C B]
如果我对以下内容都正确:
- A = Sobel_x平方响应:Ix * Ix(在某个像素处) - B = Sobel_y平方响应:Iy * Iy(在某个像素处) - C = Sobel_x响应乘以Sobel_y响应:Ix * Iy(在某个像素处) 3. 现在我计算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
那么我干嘛要费力计算行列式呢? 就我所见,仅计算迹已足够! (或者我在哪里犯了严重错误?)
1. 使用Sobel滤波器(3x3)计算x和y偏差 2. 计算系统矩阵M
M = [A C; C B]
如果我对以下内容都正确:
- A = Sobel_x平方响应:Ix * Ix(在某个像素处) - B = Sobel_y平方响应:Iy * Iy(在某个像素处) - C = Sobel_x响应乘以Sobel_y响应:Ix * Iy(在某个像素处) 3. 现在我计算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
那么我干嘛要费力计算行列式呢? 就我所见,仅计算迹已足够! (或者我在哪里犯了严重错误?)