私は画像処理用のPythonのscikit-image(skimage
)ライブラリに非常に新しいです(数分前に開始されました!)。imread
を使用してnumpy.ndarray
内の画像ファイル。配列は3次元で、3番目の次元のサイズは3です(つまり、画像の赤、緑、青の各コンポーネントに対して1つ)。
rgb_image = imread("input_rgb_image.jpg")
rgb_image.shape # gives (1411L, 1411L, 3L)
私は緑のチャネルを次のように抽出しようとしました:
green_image = rgb_image[:,:,1]
しかし、この画像マトリックスを次のように出力ファイルに書き込むと、
imsave("green_output_image.jpg",green_image)
本当に緑色に見えない画像が表示されます。
抽出しているのは単一のチャネルであり、これは各ピクセルの緑色の量を示しています。これは最終的にグレースケール画像として視覚化され、暗いピクセルはそれらのポイントに「緑」があまりないことを示し、明るいピクセルはそれらのポイントに「緑」が多いことを示します。
私があなたが言っていることを正しく解釈しているなら、あなたは各色の「緑」を視覚化したいと思うでしょう。その場合は、赤と青の両方のチャネルをゼロに設定し、緑のチャネルはそのままにしておきます。
そう:
green_image = rgb_image.copy() # Make a copy
green_image[:,:,0] = 0
green_image[:,:,2] = 0
元の画像のコピーを作成し、必要に応じて元の画像を変更するのではなく、チャンネルを変更したことに注意してください。ただし、上記で説明したように、緑のチャネルを抽出してこれをグレースケール画像として視覚化したい場合は、green_image
変数で十分です。