2013-08-17 3 views
0

У меня есть матрица 480 на 640 A. Для каждого пикселя я хочу проверить его соседей. Соседи пикселя определяются значением N. Например, это является частью матрицы A, где все нули являются соседями пикселя, когда XN=3:Проверьте окружающие соседи матричного элемента в Matlab

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 «с соседями. Проблема в том, что X находится перед индексом 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 

Не могли бы вы посоветовать, как с этим справиться?

ответ

1

Простейший способ продолжить - это просто заполнить массив массивами со значениями, которые не возвращают true для того, что вы проверяете (скажем, если вы ищете ненулевые элементы, колодки с нулями или если вы ищете конечные значения, pad с NaN.) Функция padarray может сделать это за вас, но требует Image Processing Toolbox *. В противном случае вы можете массировать массивы самостоятельно. Например, неоптимизированный способ продолжить может быть

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 

* Также обратите внимание, что эти виды «скольжений окрестностей» операции, является общим в обработке изображений, являются implemented for you in the Image Processing Toolbox.

Смежные вопросы