2012-12-06 13 views
6

Mam trzy pasujące obrazy w postaci tablic 2D numpy. Chcę je połączyć, to znaczy wygenerować macierz wyjściową, w której każdy piksel jest medianą tego samego piksela w trzech tablicach wejściowych. Można to łatwo zrobić na IRAF przy użyciu imcombiny. Czy istnieje sposób na to zrobić w Python bez pętli całej tablicy i biorąc medianę każdego piksela?Mediana łącząca zdjęcia pasujące w pytonie

Odpowiedz

9

Najłatwiej to jest:

  • stos 2d tablice z wytworzeniem 3D tablicę
  • Obliczyć średnią z użyciem numpy.median przechodzącej axis=0 obliczyć wzdłuż wymiaru układania.

Zasadniczo obliczasz mediany elementarnej. Oto prosty przykład tego, co zrobiłbym:

>>> 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

To działa. Dzięki! – mcglashan