0

我有一个 480×640 矩阵A。对于每个像素,我想检查它的邻居。像素的邻居由一个值确定N。例如,这是矩阵的一部分,A其中所有零都是像素的邻居,XN=3

0   0   0   0   0   0   0
0   0   0   0   0   0   0
0   0   0   0   0   0   0
0   0   0   X   0   0   0
0   0   0   0   0   0   0
0   0   0   0   0   0   0
0   0   0   0   0   0   0

如图所示,因为N=3,所有这些零都是像素X的邻居。问题是 ifX位于 index 之前N=3。这里的邻居将是具有一个值的像素:

    X   1   1   1   0   0   0
    1   1   1   1   0   0   0
    1   1   1   1   0   0   0
    1   1   1   1   0   0   0
    0   0   0   0   0   0   0
    0   0   0   0   0   0   0
    0   0   0   0   0   0   0

谁能建议如何处理这个问题?

4

1 回答 1

1

最简单的方法是用不返回 true 的值填充你的数组(例如,如果你正在寻找非零值,用零填充,或者如果你正在寻找有限值,填充使用NaN.) 该padarray功能可以为您执行此操作,但需要图像处理工具箱*。否则,您可以自己填充数组。例如,一种未优化的方式可能是

A = rand(m,n);
Apadded = [zeros(N,2*N+n); [zeros(m,N), A, zeros(m,N)]; zeros(N,2*N+n)];
for i = N+1:N+m+1
    for j = N+1:N+n+1
        % Process neighborhood of A(i,j)  
    end
end

*另请注意,图像处理中常见的此类“滑动邻域”操作已在图像处理工具箱中为您实现

于 2013-08-17T16:25:28.470 回答