Ist das die Art von was Sie versuchen zu tun?
definieren zwei 3d ‚Bilder‘ (klein für Komfort):
In [417]: img1=np.zeros((4,5,3),int); img2=np.zeros((4,5,3),int)
In [418]: img1[1:3,1:4,:]=[1,0,2] # different 'color' in the middle
In [419]: img2[1:3,1:4,:]=[2,1,0]
In [421]: img1!=img2
Out[421]:
array([[[False, False, False],
[False, False, False],
[False, False, False],
[False, False, False],
[False, False, False]],
[[False, False, False],
[ True, True, True],
...,
[False, False, False]]], dtype=bool)
Wenn wir nur daran interessiert, die Punkte sind, wo sie sich unterscheiden, und nicht die Farben, können wir all
oder any
gelten (ich werde lassen Sie, dass out) sortieren:
In [422]: (img1!=img2).all(axis=2)
Out[422]:
array([[False, False, False, False, False],
[False, True, True, True, False],
[False, True, True, True, False],
[False, False, False, False, False]], dtype=bool)
und verwenden where
(oder nonzero
) die Indizes dieser Punkte zu finden.
In [423]: np.where((img1!=img2).all(axis=2))
Out[423]:
(array([1, 1, 1, 2, 2, 2], dtype=int32),
array([1, 2, 3, 1, 2, 3], dtype=int32))
Für mehrere Bilder konnten wir ‚Stack‘ sie und machen die gleiche Art von Gleichheit prüft
In [429]: imgs=np.array([img1,img2]) # 4d (2, 4, 5, 3)
In [430]: (imgs==imgs[0,...]).all(axis=0).all(axis=-1)
Out[430]:
array([[ True, True, True, True, True],
[ True, False, False, False, True],
[ True, False, False, False, True],
[ True, True, True, True, True]], dtype=bool)
Wieder auf konzentriere ich mich, wie Sie Vergleiche über mehrere Dimensionen durchführen können.
könnten Sie mit etwas Input und erwarteter Ausgabe ausarbeiten? –