2017-04-12 5 views

Antwort

1

Ich würde sehr empfehlen, openCV für diesen Zweck zu verwenden. Doch im Prinzip kann man fast direkt auf den „Pseudo-Code“ zur Verwendung auf den wiki-article on kernel convolution Ihre eigene Funktion erstellen ...

ks = (kl-1)/2 ## kernels usually square with odd number of rows/columns 
kl = len(kernel) 
imx = len(matrix) 
imy = len(matrix[0]) 
for i in range(imx): 
    for j in range(imy): 
    acc = 0 
    for ki in range(kl): ##kernel is the matrix to be used 
     for kj in range(kl): 
     if 0 <= i-ks <= kl: ## make sure you don't get out of bound error 
      acc = acc + (matrix[i-ks+ki][j-ks+kj] * kernel[ki][kj]) 
    matrix[i][j] = acc 

dies im Prinzip sollte es tun (aber ich habe noch nicht getestet ...)

Ich hoffe, das ist hilfreich.

1

Sie haben scipy die ndimage, die Sie N-dimensionale Faltung mit convolve ausführen können:

from scipy.ndimage import convolve 
convolve(data, kernel) 

Ich weiß, dass Sie gesagt, dass Sie scipy vermeiden wollen ... aber ich würde davon abraten. Scipy ist in vielerlei Hinsicht großartig. Wenn Sie es unter Windows installieren möchten, versuchen Sie Anaconda Distribution, die bereits mit scipy installiert ist.

Anaconda ist eine Multiplattform-Python-Distribution, die mit allen vorinstallierten Bibliotheken (einschließlich vieler wissenschaftlicher Datenbibliotheken) und Tools wie pip oder conda geliefert wird, um neue zu installieren. Und nein, sie zahlen mir nicht, um es zu bewerben:/aber macht dein Multiplattform-Leben viel einfacher.

+0

Danke für den Vorschlag, aber der SciPy-Ansatz ist weniger praktikabel, da das, was ich entwickle, von anderen genutzt wird, würde mir das sehr gefallen einfache Möglichkeit, irgendwelche Voraussetzungen zu installieren, und 'pip install [package]' ist ein bekannter Ansatz, der vernünftig ist, Leute zu benutzen zu erfordern, aber etwas wie Anaconda Distribution zu installieren, ist ein anderes Ballspiel. – EquipDev

+0

@EquipDev Scipy wird als eines der Kern-Python-Pakete betrachtet. Vielleicht ist Python nicht die Sprache für dich. Die Verwendung von Python für die Datenanalyse ohne scipy/numpy ist wie die Verwendung von Matlab ohne Toolboxes. –

Verwandte Themen