11

私はskimage、画像処理用の Python の scikit-image () ライブラリに非常に慣れていません (数分前に開始しました!)。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)

緑だけにしか見えない画像が表示されます!

4

1 に答える 1

28

抽出しているのは単一のチャネルにすぎず、これは各ピクセルの緑色の量を示しています。これは最終的にグレースケール画像として視覚化されます。暗いピクセルはそれらのポイントに「緑」があまりないことを示し、明るいピクセルはそれらのポイントに大量の「緑」があることを示します。

あなたの言っていることを正しく解釈するなら、あなたはそれぞれの色の「緑」を視覚化したいと考えています。その場合、赤と青の両方のチャネルをゼロに設定し、緑のチャネルはそのままにしておきます。

そう:

green_image = rgb_image.copy() # Make a copy
green_image[:,:,0] = 0
green_image[:,:,2] = 0

必要に応じて元の画像を変更する代わりに、元の画像のコピーを作成し、チャンネルを変更したことに注意してください。green_imageただし、前述のように緑のチャネルを抽出してグレースケール イメージとして視覚化するだけの場合は、変数の設定を使用して上記で行ったことを実行しても問題ありません。

于 2015-04-19T05:04:53.700 に答える