2012-05-01 7 views
3

にグレースケールTIFFそれを出力するRGBのTIFFに変換します。これまでのところ、私はこのコードを持っているが、私は、グレースケールでそれを得ることができませんでした:scipyのダウンロード:私はTIFFファイルと出力matplotlibの上<strong>グレースケール</strong>マップに<strong>RGB</strong>バンドを操作したいmatplotlibの

import scipy as N 
import gdal 
import sys 
import matplotlib.pyplot as pyplot 

tif = gdal.Open('filename.tif') 

band1 = tif.GetRasterBand(1) 
band2 = tif.GetRasterBand(2) 
band3 = tif.GetRasterBand(3) 


red = band1.ReadAsArray() 
green = band2.ReadAsArray() 
blue = band3.ReadAsArray() 

gray = (0.299*red + 0.587*green + 0.114*blue) 

pyplot.figure() 
pyplot.imshow(gray) 
pylab.show() 

そして、これらは配列です:

[[255 255 255 ..., 237 237 251] 
[255 255 255 ..., 237 237 251] 
[255 255 255 ..., 237 237 251] 
..., 
[237 237 237 ..., 237 237 251] 
[237 237 237 ..., 237 237 251] 
[242 242 242 ..., 242 242 252]] 

[[255 255 255 ..., 239 239 251] 
[255 255 255 ..., 239 239 251] 
[255 255 255 ..., 239 239 251] 
..., 
[239 239 239 ..., 239 239 251] 
[239 239 239 ..., 239 239 251] 
[243 243 243 ..., 243 243 252]] 

[[255 255 255 ..., 234 234 250] 
[255 255 255 ..., 234 234 250] 
[255 255 255 ..., 234 234 250] 
..., 
[234 234 234 ..., 234 234 250] 
[234 234 234 ..., 234 234 250] 
[239 239 239 ..., 239 239 251]] 

私はこの問題を解決することができますどのように任意のアイデア?

+0

'band1Array、band2Array、band3Array'とは何ですか?それらは参照されません。 _formula_からグレースケールまでが正しいように見えます。 – lukecampbell

+0

@lukecampbellよく、このTIFFファイルはR、G&Bの3つのバンドで作られていますので、band1Array、band2Array、band3Arrayはこれらのバンドを配列に変換するだけです。 – rudster

+1

は、 'red''''''''''''''''''ereen''に使ったことではありませんか? – lukecampbell

答えて

5

私はGDALがインストールされていませんが、PILを使って同様のアプローチは、次のようになります。

import numpy as np 
import Image 
import matplotlib.pyplot as pyplot 

img = Image.open("/Users/travis/Desktop/new_zealand.tif") 

img.getdata() 
r, g, b = img.split() 

ra = np.array(r) 
ga = np.array(g) 
ba = np.array(b) 

gray = (0.299*ra + 0.587*ga + 0.114*ba) 

pyplot.figure() 
pyplot.imshow(img) 
pyplot.figure() 
pyplot.imshow(gray) 
pyplot.figure() 
pyplot.imshow(gray, cmap="gray") 

これはデフォルト(「ジェット」)以外の何かにカラーマップを設定するだけの簡単な作業かもしれあなたが望むものを得るためには、私はあなたが何を見ているのか分かりません。ここで

は(元が逆さまである理由を私に聞かないでください - ことを原因かわからない)生成された画像である。

first figure

second figure

third figure

関連する問題