我一直在阅读有关如何计算图像亲和度矩阵的公式,我有点困惑。理想情况下,我想使用颜色强度作为距离度量。
我找到了这个参考: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
答案 0 :(得分:3)
我认为您尝试使用仅支持一个指标的方法使用两个距离指标。图像在像素之间具有隐式空间度量,但是谱聚类方法不处理这种情况。它将图像视为一袋像素。
关于M
,N
和K
; 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
要提高性能,您应该搜索稀疏矩阵库。它们在处理具有许多零的矩阵方面非常有效。