PixelBenderでツールを作ってみる
前回にPixelBenderでのフィルタの作り方から使い方を紹介しました。
今回は、使えそうなツールを実際に作る方法を紹介いたします。
RGBで指定した範囲の色だけを残すツールを作る
各RGB値ごとのMaxとMinを設定できます。
その範囲内のピクセルのみ元の画素を残します。
実際に作ってみました。
以下をコピペしたら動作はします。
kernel SelectRGBColor< namespace : "photoshopper";
vendor : "photoshopper";
version : 1;
description : "Select a range of RGB values!";
>
{
input image4 src;
output pixel4 dst;
parameter int Ch1_rangeRMax
<
minValue:int(0);
maxValue:int(255);
defaultValue:int(255);
>;
parameter int Ch1_rangeRMin
<
minValue:int(0);
maxValue:int(255.0);
defaultValue:int(0);
>;
parameter int Ch2_rangeGMax
<
minValue:int(0);
maxValue:int(255);
defaultValue:int(255);
>;
parameter int Ch2_rangeGMin
<
minValue:int(0);
maxValue:int(255.0);
defaultValue:int(0);
>;
parameter int Ch3_rangeBMax
<
minValue:int(0);
maxValue:int(255);
defaultValue:int(255);
>;
parameter int Ch3_rangeBMin
<
minValue:int(0);
maxValue:int(255.0);
defaultValue:int(0);
>;
void
evaluatePixel()
{
float4 inputColor = sampleNearest(src,outCoord());
if(inputColor.r >= float(Ch1_rangeRMin)/float(255) && inputColor.r <= float(Ch1_rangeRMax)/float(255) &&
inputColor.g >= float(Ch2_rangeGMin)/float(255) && inputColor.g <= float(Ch2_rangeGMax)/float(255) &&
inputColor.b >= float(Ch3_rangeBMin)/float(255) && inputColor.b <= float(Ch3_rangeBMax)/float(255) ){
dst = inputColor;
}else{
dst = float4(0,0,0,0);
}
dst.a = inputColor.a;
}
}
|
PixelBender内ではRGBの値は0〜255ではなく、
0.0〜1.0の値で扱われます。
ですが、パラメータはわかりやすいように0〜255で
扱えるようにしています。
ここの色空間をRGBではなく、HSVやYIQにすることで
Photoshopにはない色空間でのマスクを作ることができます。
また試してみようかと思います。