次の2D配列として画像があるとしましょう:
img = np.array([
[0, 0, 0, 1, 0, 0, 0, 0, 0.5, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 0, 0, 0, 0.5, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 0, 0, 0, 0.5, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 0, 0, 0, 0.5, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 0, 0, 0, 0.5, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 0, 0, 0, 0.5, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 0, 0, 0, 0.5, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 0, 0, 0, 0.5, 0, 0, 0, 0]])
ガウスぼかしを適用したいので、画像は次のようになります。
imgBlurred = np.array([
[0.0, 0.2, 0.7, 1, 0.7, 0.2, 0.3, 0.4, 0.5, 0.4, 0.3, 0.2, 0.1],
[0.0, 0.2, 0.7, 1, 0.7, 0.2, 0.3, 0.4, 0.5, 0.4, 0.3, 0.2, 0.1],
[0.0, 0.2, 0.7, 1, 0.7, 0.2, 0.3, 0.4, 0.5, 0.4, 0.3, 0.2, 0.1],
[0.0, 0.2, 0.7, 1, 0.7, 0.2, 0.3, 0.4, 0.5, 0.4, 0.3, 0.2, 0.1],
[0.0, 0.2, 0.7, 1, 0.7, 0.2, 0.3, 0.4, 0.5, 0.4, 0.3, 0.2, 0.1],
[0.0, 0.2, 0.7, 1, 0.7, 0.2, 0.3, 0.4, 0.5, 0.4, 0.3, 0.2, 0.1],
[0.0, 0.2, 0.7, 1, 0.7, 0.2, 0.3, 0.4, 0.5, 0.4, 0.3, 0.2, 0.1],
[0.0, 0.2, 0.7, 1, 0.7, 0.2, 0.3, 0.4, 0.5, 0.4, 0.3, 0.2, 0.1]])
基本的に、元の画像の 1 の値のガウス分布が非常に厚く、0.5 の値のガウス分布が大きい結果が必要です。
今まで、私は次のように進んでいます:
from scipy import ndimage
import numpy as np
#img is a numpy array
imgBlurred = ndimage.filters.gaussian_filter(img, sigma=0.7)
#Normalisation by maximal value, because the gaussian blur reduce the 1 to ~0.5
imgBlurred = imgBlurred/imgBlurred.max()
imgBlurred[imgBlurred > 1] = 1# In case of the maximal value was > 1
しかし、これを行うと、ぼやけた画像では同じように大きくなり、0.5 になります。誰かがこの「問題」を解決する方法を知っているなら、私はいくつかのアドバイスをしたいと思います!