Sto usando python per creare un filtro gaussiano di dimensione 5x5. Ho visto questo post here dove si parla di una cosa simile ma non ho trovato il modo esatto per ottenere il codice Python equivalente alla funzione MATLAB fspecial('gaussian', f_wid, sigma)
C'è qualche altro modo per farlo? Ho provato ad utilizzare il seguente codice:Come ottenere un filtro gaussiano in python
size = 2
sizey = None
size = int(size)
if not sizey:
sizey = size
else:
sizey = int(sizey)
x, y = scipy.mgrid[-size: size + 1, -sizey: sizey + 1]
g = scipy.exp(- (x ** 2/float(size) + y ** 2/float(sizey)))
print g/np.sqrt(2 * np.pi)
L'output ottenuto è
[[ 0.00730688 0.03274718 0.05399097 0.03274718 0.00730688]
[ 0.03274718 0.14676266 0.24197072 0.14676266 0.03274718]
[ 0.05399097 0.24197072 0.39894228 0.24197072 0.05399097]
[ 0.03274718 0.14676266 0.24197072 0.14676266 0.03274718]
[ 0.00730688 0.03274718 0.05399097 0.03274718 0.00730688]]
Quello che voglio è qualcosa di simile:
0.0029690 0.0133062 0.0219382 0.0133062 0.0029690
0.0133062 0.0596343 0.0983203 0.0596343 0.0133062
0.0219382 0.0983203 0.1621028 0.0983203 0.0219382
0.0133062 0.0596343 0.0983203 0.0596343 0.0133062
0.0029690 0.0133062 0.0219382 0.0133062 0.0029690
possibile duplicato [Creare filtro gaussiano di lunghezza desiderata in pitone] (http://stackoverflow.com/questions/11209115/creating-gaussian-filter-of-required-length-in-python) e http: // astrolitte rbox.blogspot.co.uk/2012/04/creating-discrete-gaussian-kernel-with.html – YXD
Sto usando il codice menzionato nel blog. Ho impostato 'N = 2 e sigma = 1' e utilizzare il seguente codice: ' size = 2 SizeY = Nessuno size = int (size) se non sizeY: SizeY = dimensione altro: SizeY = int (sizey) x, y = scipy.mgrid [-size: size + 1, -sizey: sizey + 1] g = scipy.exp (- (x ** 2/float (dimensione) + y ** 2/float (sizey))/2) print g/np.sqrt (2 * np.pi) ' Ma il risultato ottenuto qui è diverso da quello ottenuto con fspecial in matlab – Khushboo
Come è diverso? Cosa ti aspetti e cosa ottieni? – interjay