Ich habe dieses Stück Code:finden Indizes Nachbarn in maskierten Bereich
[I, J] = find(mask == 1);
for k = 1 : numel(I)
i = I(k);
j = J(k);
neighbor_ind = [i, j - 1;
i, j + 1;
i - 1, j;
i + 1, j];
end
Nun würde Ich mag alle Indizes s
so finden, dass [I(s), J(s)]
zu einer der Reihen in neighbor_ind
gleich ist. Die Nachbarindizes, für die dies nicht möglich ist, sollten ignoriert werden.
Wie kann ich das erreichen?
EDIT: Hier ist ein kleines Beispiel.
Angenommen, wir haben die Maske
0 0 0 0
0 1 1 0
0 1 1 0
0 0 0 0
(es muss nicht rechteckig sein)
[I, J] = find(mask == 1)
I = [2, 3, 2, 3]
und J = [2, 2, 3, 3]
geben.
Jetzt können wir setzen i = 2, j = 2
. Es gibt zwei Nachbarn in der Maske und zwei außerhalb. Ich möchte wissen, wo in I, J
ich gehen muss, um diese Nachbarn zu finden. In diesem Beispiel wäre die Lösung I(3), J(3)
für den rechten Nachbarn und I(2), J(2)
für den unteren Nachbarn.
@beaker habe die Toolbox – aeduG
Ja aber sub2ind gibt mir den linearen Index im Lochbild. Aber ich habe die Suchfunktion verwendet und ich, J sind eine Teilmenge von Indizes. – aeduG
Ich verstehe nicht, was Sie versuchen zu bekommen. Kannst du ein Beispiel geben? – beaker