如何排除邻居不在图像边界的像素?

时间:2016-12-09 04:21:11

标签: matlab image-processing

我需要计算图像中几个点的邻居,之后我会用我得到的东西做其他一些事情。然而,我担心某些邻居的某些邻居不存在的可能性。 我知道我可以通过添加额外的像素来填充图像的边框,但是由于我想要做的事情,我不打算采用这种方法。我正在寻找一种方法,通过它我可以测试是否存在围绕这些点的所有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

0 个答案:

没有答案