H_p = np.array([[0,-1,0],[0,1,0],[0,0,0]]) F = img_g G = np.zeros(shp) for i in range(shp[0]): for j in range(shp[1]): for n in range(-1,2): for m in range(-1,2): G[i,j] = G[i,j] + F[(i+m)%shp[0], (j+n)%shp[1]] * H_p[m,n]
Calculation design2.py
これも同様に画像に適用させます。
plt.subplot(1,2,1) plt.gray() plt.imshow(F) plt.title("Before") plt.subplot(1,2,2) plt.gray() plt.imshow(G) plt.title("After")
Applied picture.py
出力結果は以下の通りです。上手く輪郭線のみを取り出すことができました。
このように、フィルタの重みを変えることによって様々な空間フィルタリングを設計できます。皆さんも是非、空間フィルタリングを用いた画像処理をやってみてください。