如何计算图像的亲和度矩阵?

时间:2011-04-20 14:00:17

标签: computer-vision cluster-analysis spectral

我一直在阅读有关如何计算图像亲和度矩阵的公式,我有点困惑。理想情况下,我想使用颜色强度作为距离度量。

我找到了这个参考:http://spectrallyclustered.wordpress.com/2010/06/05/sprint-1-k-means-spectral-clustering/

这似乎在解释一般过程方面做得很好。我的问题是关于亲和力矩阵。

当构造亲和度矩阵(我将其称为A)时,他们提到亲和度矩阵应该是KxK大小的Kxn图像。其他参考实现说MxN图像的亲和度矩阵应该是(M * N)x(M * N):

http://www.mathworks.com/matlabcentral/fileexchange/26354-spectral-clustering-algorithms

哪一种是传统方法?

在计算亲和度矩阵时,我想知道每个条目A(i,j)是否是邻域计算(如3x3邻域的亲和力或整个图像中的像素)?

或者我将图像线性化为一维数组。

构造(m * n)x(m * n)矩阵(亲和度矩阵),并且在迭代1维图像阵列的同时,将亲和度函数应用于像素i和每隔一个像素j。并将结果存储在亲和度矩阵中。

(基本上是一个双嵌套for循环)

我离开基地了吗?或者是关于它的外观?

提前致谢,

CT

1 个答案:

答案 0 :(得分:3)

我认为您尝试使用仅支持一个指标的方法使用两个距离指标。图像在像素之间具有隐式空间度量,但是谱聚类方法不处理这种情况。它将图像视为一袋像素。

关于MNK; M * N = K。两个表达式都描述了要聚类的对象数,在您的情况下是像素数。

亲和度矩阵A是相似性矩阵S的抽取版本。例如。如果两个物体/像素不够相似,则它们不相邻。

构建邻接矩阵的一种方法如下:

S(i, j) = color_intensity_distance( pixel(i), pixel(j) )

A(i, j) = exp( - S(i,j) ), if S(i,j) <= epsilon
A(i, j) = 0, otherwise

要提高性能,您应该搜索稀疏矩阵库。它们在处理具有许多零的矩阵方面非常有效。

A link about spectral clustering.