【问题标题】:Kernel Mask on Harris corner detectionHarris角点检测的内核掩码
【发布时间】:2018-10-22 20:51:57
【问题描述】:
// Convolution with horizontal differentiation kernel mask
float h = ((src[-srcStride + 1] + src[+1] + src[srcStride + 1]) -
          (src[-srcStride - 1] + src[-1] + src[srcStride - 1])) * 0.166666667f;

// Convolution vertical differentiation kernel mask
float v = ((src[+srcStride - 1] + src[+srcStride] + src[+srcStride + 1]) -
          (src[-srcStride - 1] + src[-srcStride] + src[-srcStride + 1])) * 0.166666667f;

我需要这种在哈里斯角上实现的内核掩码的理论。那是什么样的内核掩码?那是prewitt还是任何不同的内核?我很难找到一篇可以解释内核掩码的论文

【问题讨论】:

  • 好的,谢谢你的建议@CrisLuengo

标签: image-processing kernel convolution corner-detection point-of-interest


【解决方案1】:

确实是Prewitt operator

在索引到src(输入图像)之后,srcStride 是要跳过以寻址 y 方向中的下一个邻居的数组元素的数量,可以看到 h 从 @987654327 获取元素@ 按以下顺序并具有以下权重:

-1/6   0   1/6
-1/6   0   1/6
-1/6   0   1/6

这对应于具有以下内核的卷积(请记住,卷积反映内核):

| 1  0  -1 |
| 1  0  -1 | / 6
| 1  0  -1 |

这又对应了两个卷积

h = src * ( [1 0 -1] / 2 ) * ( [1 1 1]^T / 3 )

也就是说,它在水平方向应用微分滤波器(中心差),在垂直方向应用均匀平滑滤波器。

请注意,均匀平滑滤波器的质量很差(它会翻转某些频率分量的符号,并且通常平滑效果不佳),因此最好使用Sobel's operator(它使用三角形平滑滤波器)或最好Gaussian gradients

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 2012-10-24
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-17
    相关资源
    最近更新 更多