RAWファイルの処理(3) 色相/彩度などの処理 (Photoshop CS3)

Photoshopでは1つのピクセルの色の範囲を最大32ビット長まで利用することができます。初期のPhotoshopでは8ビット長しかなく、レベル補正やちょっとした処理を行うと扱える輝度の範囲が不足していて、期待通りに画像処理ができないことがありました。今は32ビットなので、よほどの事がない限り(よほどの事があっても)安心して加工処理ができます。
RAWファイルを開く時にもビット長を指定することができます。設定では1ビット、8ビット、16ビット、32ビットとあります。対応できない場合には8ビット長としてファイルが開かれます。手元のファイルで試したところ、とりあえず16ビットで開いておくのがよさそうです。
以下のスクリプトは1〜32ビット長でRAWファイルを開くものです。

rawOpt = new CameraRAWOpenOptions();
filename = File.openDialog("RAWファイルを指定してください");
if (filename)
{
fileObj = new File(filename);
rawOpt.bitsPerChannel = BitsPerChannelType.ONE;
open(fileObj,rawOpt);
rawOpt.bitsPerChannel = BitsPerChannelType.EIGHT;
open(fileObj,rawOpt);
rawOpt.bitsPerChannel = BitsPerChannelType.SIXTEEN;
open(fileObj,rawOpt);
rawOpt.bitsPerChannel = BitsPerChannelType.THIRTYTWO;
open(fileObj,rawOpt);
}

キャリブレーションの彩度の調整はredSaturation、blueSaturation、greenSaturationに-100〜100の値を指定することで行うことができます。以下のスクリプトは赤、青、緑のカメラキャリブレーションの彩度を調整するものです。
rawOpt = new CameraRAWOpenOptions();
filename = File.openDialog("RAWファイルを指定してください");
if (filename)
{
fileObj = new File(filename);
rawOpt.redSaturation = 100;
rawOpt.blueSaturation = -100;
rawOpt.greenSaturation = 10;
open(fileObj,rawOpt);
}

キャリブレーションの色相を調整する場合にはredHue、blueHue、greenHueに-100〜100の値を指定します。以下のサンプルは、色相をそれぞれ変化させて開くものです。
rawOpt = new CameraRAWOpenOptions();
filename = File.openDialog("RAWファイルを指定してください");
if (filename)
{
fileObj = new File(filename);
for (i=-100; i<=100; i+=25)
{
rawOpt.blueHue = i;
open(fileObj,rawOpt);
}
rawOpt.blueHue = 0;
for (i=-100; i<=100; i+=25)
{
rawOpt.redHue = i;
open(fileObj,rawOpt);
}
rawOpt.redHue = 0;
for (i=-100; i<=100; i+=25)
{
rawOpt.greenHue = i;
open(fileObj,rawOpt);
}
}

通常の輝度、彩度、コントラストの調整も行うことができます。輝度はbrightnessに0〜150までの値、彩度はsaturationで-100〜100までの値、コントラストはcontrastに-50〜100までの値を指定します。
rawOpt = new CameraRAWOpenOptions();
filename = File.openDialog("RAWファイルを指定してください");
if (filename)
{
fileObj = new File(filename);
for (i=0; i<=150; i+=25)
{
rawOpt.brightness = i;
open(fileObj,rawOpt);
}
for (i=-50; i<=100; i+=25)
{
rawOpt.contrast = i;
open(fileObj,rawOpt);
}
for (i=-100; i<=100; i+=25)
{
rawOpt.saturation = i;
open(fileObj,rawOpt);
}
}

[サンプルをダウンロード]