2017-02-01 22 views
1

私は、グレースケール画像の数が少ない配列を持っています。アレイの形状は、グレースケール(1チャネル)およびサイズ300×300の100画像を表すnumpy配列の平均ピクセル減算

imgs.shape 
(100, 1, 300, 300) 

です。

この配列の平均ピクセル減算を行いたいとします。 これは、すべての画像から平均ピクセルを減算することを意味します。

すべての画像に平均値が必要です。

X_mean = X.mean(0) 
X -= X_mean 

私は私の配列のためにそれをどのように操作を行うことができます。このようなものになるだろう、単一の画像については

+0

は、あなたがしたいです*意味*以上*すべて*画像、または別途*各*画像の平均。 –

+0

@WillemVanOnsemすべての画像の平均値 – spore234

答えて

1

一度に画像のその平均場合、我々はそうように、寸法を維持する最後の二つの軸を横切って平均値を計算する(すなわち、後に減算するためのコードを容易に)単に元の入力から減算することができ -

mean値が浮動小数点値として既定であろうこと

imgs -= imgs.mean(axis=(0,-2,-1),keepdims=1) 

注 - すべての画像全体の平均は、あまりにも最初の軸が含まれている場合

imgs -= imgs.mean(axis=(-2,-1),keepdims=1) 

。したがって、imgsがfloat型でない場合は、imgsのコピーをfloat dtypeとして作成し、それからその値を引き出すか、meanの値をimgsと同じdtypeに変換してから差し引く必要があります。

サンプル実行 -

In [188]: imgs = np.random.randint(0, 255,(10,1,30,30)) 

In [189]: out = imgs - imgs.mean(axis=(0,-2,-1),keepdims=1) 

In [190]: out.shape 
Out[190]: (10, 1, 30, 30) 

In [191]: out.dtype 
Out[191]: dtype('float64') 
+0

これはすべての画像の平均ですか? – spore234

+0

@ spore234画像あたりの平均値。その後、各画像から差し引かれます。 – Divakar

+0

それは以下のようにする必要があります。1.すべての画像の平均を計算します。2.この平均を各画像から減算します。それを明確にしないと申し訳ありません。 – spore234