我需要计算图像中几个点的邻居,之后我会用我得到的东西做其他一些事情。然而,我担心某些邻居的某些邻居不存在的可能性。 我知道我可以通过添加额外的像素来填充图像的边框,但是由于我想要做的事情,我不打算采用这种方法。我正在寻找一种方法,通过它我可以测试是否存在围绕这些点的所有5x5连接邻居,否则我想忽略该特定点,如果其5x5直接邻居像素的任何部分超出边界。 / p>
为了使这一点更加清晰,我已经包含了以下代码:
img = [2 2 2 2 2 2 2;
2 3 2 2 2 2 2;
2 2 2 0 2 2 2;
4 4 1 2 2 2 2;
4 4 0 4 4 0 4;
4 1 1 4 4 4 4;
1 1 1 4 4 4 4];
[nrow, ncol] = find(img == 0)
P_Idx = sub2ind(size(img), nrow, ncol);
M = size(img, 1);
neighbor_offsets = [-M-1, -M, -M+1, -1, 1, M-1, M, M+1];
if any of the 5x5 immediate neighbours of Point P are outside the image borders,
Then ignore that particular point P,
else
find the neighbours as follows:
%Compute the immediate neighbors of ‘P’
P_neighbors = bsxfun(@plus, P_Idx, neighbor_offsets);
Do the following…
end