Ich versuche Python und Numpy/Scipy zu verwenden, um einen Bildverarbeitungsalgorithmus zu implementieren. Der Profiler sagt mir viel Zeit wird in der folgenden Funktion (häufig genannt) ausgegeben, was mir die Summe der quadratischen Differenzen zwischen zwei BildernSumme quadratischer Unterschiede (SSD) in numpy/scipy
def ssd(A,B):
s = 0
for i in range(3):
s += sum(pow(A[:,:,i] - B[:,:,i],2))
return s
erzählt Wie kann ich das beschleunigen? Vielen Dank.
Bang. Ich habe einen langsamen Tag. Halbiert meine Laufzeit. –
Es ist erwähnenswert, dass Sie dazu 'numpy.sum' verwenden müssen, nicht die eingebaute' Summe', die die Summe über der ersten Dimension findet und ein neues Array von einer Dimension-niedriger zurückgibt. –
((A-B) ** 2) .sum (-1) Wenn Sie nur die letzte Achse hinzufügen möchten, muss das Achsenargument angegeben werden. Die Verwendung von sum() fügt alle Einträge des Arrays hinzu (zuerst geplättet) – user333700