0

次の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 になります。誰かがこの「問題」を解決する方法を知っているなら、私はいくつかのアドバイスをしたいと思います!

4

0 に答える 0