MATLAB中的图像处理代码(角点检测)

时间:2012-02-22 19:43:07

标签: image matlab

我想知道这行代码是如何工作的

corners = (m==n)&(n>threshold);

这是我正在使用的一段代码,我想了解它。基本上,m和n都是相等大小的图像,“threshold”是十进制值。

要理解上下文,下面是一段代码。

% compute the m cornerness measure
m = (ix2s.*iy2s - ixys.^2) - 0.04*(ix2s+iy2s).^2;

% perform non-maximal suppression using ordfilt2
n = ordfilt2(m, radius^2, ones([radius radius]));

% display corner spots
corners = (m==n)&(n>threshold);

% superimpose corners
Q = corners+im;
Q(Q>1) = 1;
C = repmat(im,[1 1 3]);
C(:,:,1) = Q;

2 个答案:

答案 0 :(得分:3)

如果我理解正确,n是附近的m的最大值(“拐角度量”),因此该线意味着 - “如果m是局部最大值并且足够大(大于阈值),那么这可能是角落“,它可以说是更具可读性:

corners = (m==n)&(m>threshold);

答案 1 :(得分:1)

您应该阅读有关Harris corner detector的更多信息。取自维基百科:

enter image description here

这一行是上述功能的实现。它用于检测角落。