我有一个二进制值的MxN矩阵,对应于图像中的像素。 E.g:
> mat<- matrix(c(0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0), nrow = 5, byrow = T)
> mat
[,1] [,2] [,3] [,4] [,5]
[1,] 0 0 1 1 0
[2,] 0 0 1 1 0
[3,] 0 0 0 0 0
[4,] 1 1 0 0 0
[5,] 1 1 0 0 0
矩阵由java脚本填充,该脚本确定像素是否落在给定标准内(例如,如果像素是“绿色空间”)。值1为真,0为假。
我将矩阵中的值1转换为相应的行索引:
mat2[mat == 1]<- row(mat)[mat == 1]
mat2
[,1] [,2] [,3] [,4] [,5]
[1,] 0 0 1 1 0
[2,] 0 0 2 2 0
[3,] 0 0 0 0 0
[4,] 4 4 0 0 0
[5,] 5 5 0 0 0
我想要实现的是在每个非零值集群中找到行索引的质心。即那里有两组非零值,质心分别为1.5和2.5(分别为1,1,2,2和4,4,5,5)。
我对如何执行此操作感到茫然。我尝试过k-means聚类,但这对于这个操作似乎不正确(请注意,这根本不是我的专业知识,因此我错误地做错的概率很高)。 R以这种方式计算质心的最佳方法是什么?
为我的天真道歉 - 这不是我的领域,我的工作真的从我得到这个分析的结果开始。