5x5 boyutunda bir gauss filtresi oluşturmak için python kullanıyorum. Bu yazıyı here gördükten sonra benzer bir şeyden bahsediyorlar ama matlab işlevine eşdeğer python kodu almanın tam yolunu bulamadım fspecial('gaussian', f_wid, sigma)
Bunu yapmak için başka bir yol var mı? Aşağıdaki kodu kullanarak çalıştı:Python'da bir gauss filtresi nasıl elde edilir
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)
elde çıkışı
[[ 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]]
İstediğim böyle bir şeydir: Eğer gerçekten alma veriyorsan Genel olarak
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
([python gerekli uzunlukta Gauss filtre oluşturma] olası çift http://stackoverflow.com/questions/11209115/oluşturma-gaussian-filtre-gerekli-uzunluk-python) ve http: // astrolitte rbox.blogspot.co.uk/2012/04/creating-discrete-gaussian-kernel-with.html – YXD
Blogda belirtilen kodu kullanıyorum. I ', N set = 2 ve sigma = 1' ve aşağıdaki kodu kullanımı: sizeY değilse 'boyutu = 2 sizeY = Yok boyutu = int (boyut) : sizeY = boyut başka : sizeY = int (sizey) x, y = scipy.mgrid [-size: size + 1, -sizey: sizey + 1] g = scipy.exp (- (x ** 2/kayan (boyut) + y ** 2/float (sizey))/2) print g/np.sqrt (2 * np.pi) ' Ancak burada elde edilen sonuç, matlabda fspecial kullanılarak elde edilen formdan farklıdır – Khushboo
Bu nasıl farklı? Ne bekliyorsunuz ve ne alıyorsunuz? – interjay