31

Python を使用して、サイズ 5x5 のガウス フィルターを作成しています。私は彼らが同様のことについて話しているこの投稿をここで見ましたが、同等のpythonコードをmatlab関数に取得する正確な方法が見つかりませんでしたfspecial('gaussian', f_wid, sigma) 。それを行う他の方法はありますか? 次のコードを使用してみました:

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)

得られる出力は

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

私が欲しいのは次のようなものです:

   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
4

8 に答える 8

3

この関数は、matlab の fspecial と同様の機能を実装します

http://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.get_window.html scipy インポート シグナルから

>>>signal.get_window(('gaussian',2),3)
>>>array([ 0.8824969,  1.       ,  0.8824969])

この関数は 1D カーネルのみを生成するようです

他の人が指摘したように、ガウスマスクを自分で生成するコードを実装できると思います。

于 2013-12-11T06:34:38.490 に答える
1

ねえ、私はこれがあなたを助けるかもしれないと思う

import numpy as np
import cv2

def gaussian_kernel(dimension_x, dimension_y, sigma_x, sigma_y):
    x = cv2.getGaussianKernel(dimension_x, sigma_x)
    y = cv2.getGaussianKernel(dimension_y, sigma_y)
    kernel = x.dot(y.T)
    return kernel
g_kernel = gaussian_kernel(5, 5, 1, 1)
print(g_kernel)

[[0.00296902 0.01330621 0.02193823 0.01330621 0.00296902]
 [0.01330621 0.0596343  0.09832033 0.0596343  0.01330621]
 [0.02193823 0.09832033 0.16210282 0.09832033 0.02193823]
 [0.01330621 0.0596343  0.09832033 0.0596343  0.01330621]
 [0.00296902 0.01330621 0.02193823 0.01330621 0.00296902]]
于 2019-10-23T14:46:57.607 に答える