2012-12-06 9 views
6

Ich habe drei passt Bilder in Form von 2D numpy Arrays. Ich möchte sie median kombinieren, dh ein Ausgabe-Array erzeugen, in dem jedes Pixel der Median des gleichen Pixels in den drei Eingabe-Arrays ist. Dies kann leicht auf IRAF mit imcombine getan werden. Gibt es eine Möglichkeit, dies auf Python zu tun, ohne das gesamte Array durchzugehen und den Median jedes Pixels zu nehmen?Median Kombination passt Bilder in Python

Antwort

9

Der einfachste Weg dies zu tun ist: entlang der Dimension zu berechnen, der Stapelung

  • Stapel der 2D-Arrays der Median
  • Compute Verwendung numpy.median vorbei axis=0 einen 3D-Array zu bilden.

Sie berechnen im Wesentlichen einen elementweisen Median. Hier ist ein einfaches Beispiel, was ich tun würde:

>>> import numpy 
>>> a = numpy.array([[1,2,3],[4,5,6]]) 
>>> b = numpy.array([[3,4,5],[6,7,8]]) 
>>> c = numpy.array([[9,10,11],[12,1,2]]) 
>>> d = numpy.array([a,b,c]) 
>>> d 
array([[[ 1, 2, 3], 
     [ 4, 5, 6]], 

     [[ 3, 4, 5], 
     [ 6, 7, 8]], 

     [[ 9, 10, 11], 
     [12, 1, 2]]]) 
>>> d.shape 
(3, 2, 3) 

>>> numpy.median(d, axis=0) 
array([[ 3., 4., 5.], 
     [ 6., 5., 6.]]) 
+0

Das funktioniert. Vielen Dank! – mcglashan