2017-06-04 4 views
1

インポートイメージは、このように各画素を反復、

loadImage("...") 

コマンドでインポート画像の色、深さを保持:

img.loadPixels(); 
int w = img.width; 
int h = img.height; 
for (int y = 0; y < h; y++) { 
    for (int x = 0; x < w; x++) { 
    int loc = x + y*w; 
    float r = red(img.pixels[loc]); 
    float g = green(img.pixels[loc]); 
    float b = blue(img.pixels[loc]); 
    println(r + ", " + g + ", " + b); 
    } 
} 

RGB値は常に0の間であるように見えます画像ファイルのチャンネル数が16ビットであっても、値は0から65535の範囲でなければなりません。 正しい色深度を維持できますか?

+0

は、あなただけの '65535/255'で数字を掛けることができませんか? –

+0

数字r gとbは浮動小数点数として格納されていても、基本的には整数なので、実際に乗算しても元の深度は復元されないため、これは機能しません。 –

+0

'red()'、 'green()'、 'blue()'関数は正規化された値を返します。たぶん、 'pixels [loc]'値にカラー関数を渡すのではなく、直接アクセスしてみてください。 –

答えて

-1

loadImageコマンドがどのライブラリから来ているのか分かりません。 16ビットバージョンがある可能性はありますが、そうは考えにくいです。 24ビットは、一種の標準であり、非常にハイエンドの作業以外のすべてに適しています。

TIFFローダー(loadImageのように24ビットイメージを返す)を見て、16ビットチャネルを返すように変更することをお勧めします。難しいことではありません。より大きなチャンネル画像(フロートと16ビット)の下位ビットを破棄しない場合にすぎません。

Her'e TIFFローダー: https://github.com/MalcolmMcLean/tiffloader