この記事では、Python+NumPyを用いて、ガウシアンフィルタのカーネルを計算する方法をソースコード付きで解説します。
ガウシアンフィルタのカーネル
今回はPythonとNumPyを使って、任意のカーネルサイズ(ksize * ksize)のガウシアンフィルタのカーネルを求めました。
ソースコード(Python3+NumPy)
サンプルプログラムのソースコードです。
# -*- coding: utf-8 -*- import numpy as np # サイズksizeのガウシアアンフィルタのカーネルを計算 def gaussian_kernel(ksize=3): combs = [1] for i in range(1, ksize): ratio = (ksize-i)/(i) combs.append(combs[-1]*ratio) combs = np.array(combs).reshape(1,ksize)/(2**(ksize-1)) return combs.T.dot(combs) def main(): print(gaussian_kernel(3)) #[[ 0.0625 0.125 0.0625] # [ 0.125 0.25 0.125 ] # [ 0.0625 0.125 0.0625]] if __name__ == "__main__": main()
■参考文献
行列による畳み込みフィルタリング編 ~Python画像処理の再発明家~
コメント