我一直在阅读关于如何计算图像的亲和力矩阵的公式,但我有点困惑。理想情况下,我希望使用颜色强度作为距离度量。
我找到了这个引用:http://spectrallyclustered.wordpress.com/2010/06/05/sprint-1-k-means-spectral-clustering/
这似乎很好地解释了一般过程。我的问题是关于亲和力矩阵。
在构造亲和力矩阵(我称之为A)时,他们提到对于Kxn图像,亲和力矩阵应该是KxK大小的。其他参考实现说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
发布于 2011-08-30 02:06:33
我认为您正在尝试将两个距离度量与一个仅支持一个度量的方法一起使用。图像在像素之间有一个隐含的空间度量,但光谱聚类方法不处理这一点。它将图像看作一大堆像素。
关于M、N和K;M * N = K。这两个表达式都描述了将要聚集的对象的数量,在本例中是像素数。
相似度矩阵S是相似度矩阵A的抽取版本。例如,如果两个对象/像素不够相似,则它们不相邻。
构造邻接矩阵的一种方法如下:
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.
https://stackoverflow.com/questions/5731550
复制相似问题