2
我想知道这行代码是如何工作的图像处理代码
corners = (m==n)&(n>threshold);
这是在一块我使用的代码,我想了解它。基本上,m和n都是相同大小的图像,“阈值”是一个十进制值。
为了理解上下文,一段代码如下。
% 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;
所以只是要分解它, m == n 检查m是否与数组中的每个槽m(:, :)和n(:, :)等价,如果为真则标记为1。这只会发生在局部最大值,因为这是n相对于m的定义。 然后检查以查看等效值是否大于阈值,如果也是这样,则返回1到角落。 以上是否正确?关于拐角的尺寸,MATLAB会自动给它m和n的尺寸,是否正确?如果m和n是不同的值呢?我猜这个声明会无效? – mathjacks 2012-02-22 19:57:11
如果我理解正确,你的解释是正确的。程序在第一行计算m,第二行计算n,外部参数是半径(局部区域的大小)和阈值(或多或少 - 我们在误报和误报之间的偏好水平)。 – Ofir 2012-02-23 07:21:34