Tôi đang sử dụng python để tạo bộ lọc gaussian có kích thước 5x5. Tôi thấy bài đăng này here nơi họ nói về một điều tương tự nhưng tôi không tìm thấy cách chính xác để lấy mã python tương đương với chức năng MATLAB fspecial('gaussian', f_wid, sigma)
Có cách nào khác để làm điều đó không? tôi đã cố gắng sử dụng đoạn mã sau:Cách lấy bộ lọc gaussian trong 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)
Kết quả thu được là
[[ 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]]
Những gì tôi muốn một cái gì đó như thế này là:
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
thể trùng lặp của [Tạo bộ lọc Gaussian chiều dài yêu cầu trong python] (http://stackoverflow.com/questions/11209115/create-gaussian-filter-of-required-length-in-python) và http: // astrolitte rbox.blogspot.co.uk/2012/04/creating-discrete-gaussian-kernel-with.html – YXD
Tôi đang sử dụng mã được đề cập trong blog. Tôi đặt 'N = 2 và sigma = 1' và sử dụng đoạn mã sau: ' size = 2 sizey = Không kích thước = int (size) nếu không sizey: sizey = kích thước khác: sizey = int (sizey) x, y = scipy.mgrid [-size: size + 1, -sizey: sizey + 1] g = scipy.exp (- (x ** 2/float (kích thước) + y ** 2/float (sizey))/2) in g/np.sqrt (2 * np.pi) ' Nhưng kết quả thu được ở đây là hình thức khác nhau mà ta thu được bằng cách sử dụng fspecial trong MATLAB – Khushboo
Nó khác nhau như thế nào? Những gì bạn mong đợi và những gì bạn nhận được? – interjay