0
我有一个实际上是256 x 256矩阵形式的图像的数据。我想写一个函数叫做“get.nbhd”,它为一个像素选择4个邻居并将其存储为一个向量。然后在需要时调用该函数。如果像素是角落或边界,则分别有2个和3个邻居。这是一个玩具数据集。因此,对于任何中间像素,如d [i,j],这4个邻居将是{d [i-1,j],d [i + 1,j],d [i,j + 1],d [i ,J-1]}。对于4个角像素,2邻域将是{d [i,j-1],[i + 1,j]},{d [i,j + 1],d [i + 1,j] {d [i-1,j],d [i,j-1]},{d [i-1,j],d [i,j + 1]}。顶部和底部边界像素将具有{d [i-1,j],[i + 1,j],d [i,j-1]}的3个邻居。任何帮助表示赞赏。在R中获取邻居函数
> x<- matrix(rbinom(8*8,1,0.5),8,8)
> x
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 1 1 0 1 0 1 0
[2,] 1 1 0 1 0 1 1 1
[3,] 1 1 1 1 1 0 0 0
[4,] 1 1 1 0 1 1 1 1
[5,] 1 1 1 1 0 1 0 0
[6,] 1 1 1 0 0 1 1 1
[7,] 0 1 1 1 1 0 0 0
[8,] 0 1 0 0 0 1 1 0
非常感谢!这有很大帮助。还有一个问题。我如何修改这个函数来提取邻居的索引而不是实际的值。当我开始编码时,我意识到我还需要另一个返回邻域索引的函数。例如,对于点d [1,1],该函数将d [1,2]和d [2,1]作为邻居索引。如果它不合适,我可以将它作为另一个问题发布。 – user24318
指数是在函数的第一行计算的。由此,您需要删除具有无效索引的行。 (在函数中,我只将无效索引设置为零,但您可能希望完全删除它们。)如果这不足以帮助您,我认为最好提出一个新问题。不要忘记首先在SO和Google上寻找有用的答案! – Stibu
谢谢。我能够通过删除零行来修改你的函数! – user24318