2016-08-10 3 views
0

同じ領域の2つのラスタイメージとnumpy配列のx、y次元を持っています。画像1は土地利用分類(例えばクラス0~5)、画像2は雲影マスク(値は0 =雲霧、255 =雲/陰影領域)である。
これらの画像を結合したいと思います。画像2の255個の値をすべて取ってクリップし、画像1にモザイクします。または、画像2のすべての0の値を画像1の特定のピクセル位置にある値に置き換えます。ラスタイメージの領域を別のイメージの値で置き換えます

2d配列1dと0の値を置き換えますが、2dに正しく変換できませんでした。

このラスタ計算を完全にオープンソースのpythonで行うには、どのような方法が一番簡単ですか?

答えて

0

これは、numpyのブール型インデックス機能で実行できます。

img1 = np.array([[0, 1, 0, 1],[1, 0, 1, 0]]) 
img2 = np.array([[1, 2, 3, 4],[5, 6, 7, 8]]) 
bool_arr = img1 == 0 
img1[bool_arr] = img2[bool_arr] 
print(img1) 
# outputs: [[1 1 3 1] 
#   [1 6 1 8]] 
+0

これはうまくいきました。どうもありがとう。 img2に浮動小数点値がある場合はどうなりますか?あなたはまた、それをどのように統合するか考えていますか? –

+0

@ChristinAbel '<, >,<=, > ='を使用して、float値を持つブール値の配列を作成することができます。上記の 'img1 == 0'を' img1 <2'に置き換えてください。 Numpyには、他にも数多くの要素的な論理関数があり、ここで読むことができます:http://docs.scipy.org/doc/numpy/reference/routines.logic.html –

+0

私はimg1 - 2整数値、2d(x、y)を持っているので、私のimg2は変更されました:浮動値、3d(ndim、x、y)。すべての配列ディメンションは、ラスタレイヤのバンドを表します。 ... img1は雲/シャドウマスクなので、img2のすべての次元/バンドに追加する必要があります。ですから、ndimをループして、すべての(x、y)配列を変更し、最後に3d配列として保存したいのです... –

関連する問題