注意,尽管超像素算法SLIC在L * a * b *空间中操作,但它期望RGB图像作为输入。如果您希望预先计算L * a * b *表示以供下游使用,例如在您的用例中,则需要使用'IsInputLab'名称/值。否则,算法将尝试将已经L * a * b *图像转换为L * a * b *。
你要:
B=imread('H.jpg'); A=rgb2lab(B); [L,N] = superpixels(A, 200,'IsInputLab',true);
Chris Lueno已经回答了超像素图中特征的平均计算。超像素之间的距离是相似的,在这里您基本上计算每个超像素的质心特征来描述它们的位置,然后测量它们之间的距离。请注意,在下面的代码中,矩阵关于其对角线是对称的,而对角线是0。如果您关心这一点,我会留给您更高效的。
distanceMatrix = zeros(N,N); for m = 1:N for n = 1:n [i1,j1] = ind2sub(size(A),idx{m}); [i1,j2] = ind2sub(size(A),idx{n}); Icenter1 = mean(i1); Jcenter1 = mean(j1); Icenter2 = mean(i2); Jcenter2 = mean(j2); distanceMatrix(m,n) = sqrt((Icenter1-Icenter2)^2+(Jcenter1-Jcenter2)^2); end end