您可以在http://www.cs.berkeley.edu/~malik/papers/SM-ncut.pdf (等式 11)的第 4 页的上下文中看到该公式。在那篇论文中,他们使用 F 表示强度,我假设你有 I。由于你的强度是标量,你只想取它们差异的平方。
您想要计算一个权重矩阵,该矩阵计算 A 中的任何条目与 A 中的任何其他条目的亲和性。因为您的 A 有 25 个条目,所以您的权重矩阵将为 25x25。
由于您只担心亮度,这很容易:
len = length(A(:));
W = zeros(len);
for i = 1:len
for j = 1:len
W(i,j) = (A(i) - A(j))^2;
end
end
现在,如果您想查找 A(1,1) 和 A(1,2) 之间的权重,可以这样做:
i = sub2ind(size(A), 1, 1)
j = sub2ind(size(A), 1, 2)
W(i, j)
但是如果你设置 r=1(根据 NCuts 公式),那么你可能想要这样的东西:
sigma= 10;
r = 1;
A = magic(3);
siz = size(A);
len = length(A(:));
W = zeros(len);
for i = 1:len
for j = 1:len
[xi,yi] = ind2sub(siz,i);
[xj,yj] = ind2sub(siz,j);
if((xi-xj)^2 + (yi-yj)^2) > r^2
W(i,j) = 0;
else
W(i,j) = exp(-(A(i) - A(j))^2 / sigma^2);
end
end
end
A11 = sub2ind(siz, 1, 1)
A12 = sub2ind(siz, 1, 2)
W(A11, A12)