| コンポーネント エクスプレッションを使用する | 数式を使用する
コンポーネント パーサ オペレータおよびピクセル パーサ オペレータはエクスプレッションを解析し、結果を使用してそれぞれ個々の RGBA コンポーネントまたは個々のピクセルに影響を与えます。このセクションでは有効なエクスプレッション タイプ、引数および変数のリストを示し、また使用例を挙げます。
コンポーネント パーサを使用すると個々のエクスプレッションを赤、緑、青およびアルファ コンポーネントに適用できます。
イメージ調整エフェクト カテゴリのピクセル パーサ処理には単一のエクスプレッション チャンネルがあり、エクスプレッションをピクセルの形式で入力できます。これにより、指定されたエクスプレッションが各 RGBA コンポーネントに等しく適用されます。さらにピクセル
パーサは任意の有効なエクスプレッションを単一のコンポーネント パーサ チャンネルにとることができます。
コンポーネント エクスプレッションを使用する
値
値のとり得る値:
任意の浮動小数点数(0 から 1 まで)
評価値が数である任意のエクスプレッション
入力コンポーネント値(r、g、b、a、pixel)
例: 緑色の実線のフレーム
コンポーネントパーサ
|
赤
|
0
|
|
緑
|
1
|
|
青
|
0
|
|
アルファ
|
0
|
例: 赤色の実線のフレーム
コンポーネントパーサ
|
赤
|
1
|
|
緑
|
0
|
|
青
|
0
|
|
アルファ
|
0
|
例: 青色の実線のフレーム
コンポーネントパーサ
|
赤
|
0
|
|
緑
|
0
|
|
青
|
1
|
|
アルファ
|
0
|
例: 何もしない(入力と同じ出力)
コンポーネントパーサ
|
赤
|
r
|
|
緑
|
g
|
|
青
|
b
|
|
アルファ
|
a
|
ピクセル パーサー
|
ピクセル
|
pixel
|
例: スワップ コンポーネント
コンポーネントパーサ
|
赤
|
g
|
|
緑
|
r
|
|
青
|
b
|
|
アルファ
|
a
|
例: ピクチャの反転
コンポーネントパーサ
|
赤
|
1-r
|
|
緑
|
1-g
|
|
青
|
1-b
|
|
アルファ
|
1-a
|
ピクセル パーサー
|
ピクセル
|
1-pixel
|
例: 輝度抽出
コンポーネントパーサ
|
赤
|
r+g+b
|
|
緑
|
r+g+b
|
|
青
|
r+g+b
|
|
アルファ
|
0
|
ピクセル パーサー
|
ピクセル
|
r+g+b
|
特定位置でのコンポーネント エクスプレッション
component(x,y)
ここで、x = 整数(0 -- ピクチャの幅(ピクセル単位))
ここで、y = 整数(0 -- ピクチャの高さ(ピクセル))
特定位置のピクセル値を見るために Pixel Probe を使用している場合、イメージはフルサイズで表示されます。
例: 何もしない(入力と同じ出力)
コンポーネントパーサ
|
赤
|
r(x,y)
|
|
緑
|
g(x,y)
|
|
青
|
b(x,y)
|
|
アルファ
|
0
|
ピクセル パーサー
|
ピクセル
|
pixel(x,y)
|
例: イメージ全体を 10 ピクセル右にシフト
コンポーネントパーサ
|
赤
|
r(x+10,y)
|
|
緑
|
g(x+10,y)
|
|
青
|
b(x+10,y)
|
|
アルファ
|
0
|
ピクセル パーサー
|
ピクセル
|
pixel(x+10,y)
|
例: 赤コンポーネントのみ上にシフト
コンポーネントパーサ
|
赤
|
r(x,y-10)
|
|
緑
|
g(x,y)
|
|
青
|
b(x,y)
|
|
アルファ
|
0
|
別の入力を使用したコンポーネント エクスプレッション
component[input](x,y)
入力は 1、2、3 のいずれかの整数。オペレータでとり得る 3 つの入力にそれぞれ対応します。
例: 何もしない(入力と同じ出力)
コンポーネントパーサ
|
赤
|
r[1](x,y)
|
|
緑
|
g[1](x,y)
|
|
青
|
b[1](x,y)
|
|
アルファ
|
0
|
ピクセル パーサー
|
ピクセル
|
pixel[1](x,y)
|
例: 入力 2 の赤コンポーネントを出力で使用
コンポーネントパーサ
|
赤
|
r[2](x,y)
|
|
緑
|
g[1](x,y)
|
|
青
|
b[1](x,y)
|
|
アルファ
|
0
|
コンポーネント エクスプレッションで変数を使用する
変数をエクスプレッションで使用できます。[変数]プロパティ ページを選択します。
次の変数があります。
-
3 つの浮動小数点数(0 から 30 まで)a1、a2、および a3
-
3 つの浮動小数点数(0 から 1 まで)b1、b2、および b3
-
3 つの整数(0、1、2、3、...、30)c1、c2、および c3
-
変数はアニメーションではキー フレームで設定できます。
例: 黒から白へ 10 フレームの間にフェーディング(フレーム 1 で b1 = 0.0、フレーム 10 で b1 = 1.0 に設定)
コンポーネントパーサ
|
赤
|
b1
|
|
緑
|
b1
|
|
青
|
b1
|
|
アルファ
|
0
|
ピクセル パーサー
|
ピクセル
|
b1
|
例: 入力 2 から入力 1 へ 10 フレームでディゾルブ(フレーム 1 で b1 = 0.0、フレーム 10 で b1 = 1.0 に設定)
コンポーネントパーサ
|
赤
|
r[1](x,y)*b1 + r[2](x,y)*(1-b1)
|
|
緑
|
g[1](x,y)*b1 + g[2](x,y)*(1-b1)
|
|
青
|
b[1](x,y)*b1 + b[2](x,y)*(1-b1)
|
|
アルファ
|
0
|
ピクセル パーサー
|
ピクセル
|
pixel[1](x,y)*b1 + pixel[2](x,y)* (1-b1)
|
条件式で変数を使用する
if (式) then (式) else (式)
「else」が必要です。
例: 10 フレームの間で水平ワイプ(フレーム 1 で c1 = 0、フレーム 10 で c1 = 720)
コンポーネントパーサ
|
赤
|
if (x>c1) then r[1](x,y) else r[2](x,y)
|
|
緑
|
if (x>c1) then g[1](x,y) else g[2](x,y)
|
|
青
|
if (x>c1) then b[1](x,y) else b[2](x,y)
|
|
アルファ
|
0
|
ピクセル パーサー
|
ピクセル
|
if (x>c1) then pixel[1](x,y) else pixel[2](x,y)
|
数式を使用する
コンポーネント パーサおよびピクセル パーサでいくつでも数式を使用できます。使用できるものは次のとおりです。
-
加算: (+)
-
減算: (-)
-
乗算: (*)
-
除算: (/)
-
剰余: (%)
-
自然対数: (log) - log (float)
-
平方根: (sqrt) - sqrt(float)
-
指数関数: (exp) - exp(float)
-
絶対値: (abs) - abs(-1) = 1
-
乱数: (rand) - rand(N) N は任意の浮動小数で、0 から N までの間の浮動小数を戻します。
例: 色補正
コンポーネントパーサ
|
赤
|
r + 0.5*b - 0.25*g
|
|
緑
|
g/2
|
|
青
|
b
|
|
アルファ
|
0
|
例: 剰余 - 赤と緑のストライプのピクチャ
コンポーネントパーサ
|
赤
|
if (y%2 = 0) then 1 else 0
|
|
緑
|
if (y%2 = 0) then 1 else 0
|
|
青
|
0
|
|
アルファ
|
0
|
例: イメージに多量のノイズを追加
コンポーネントパーサ
|
赤
|
r + rand(1)
|
|
緑
|
g + rand(1)
|
|
青
|
b + rand(1)
|
|
アルファ
|
0
|
ピクセル パーサー
|
ピクセル
|
pixel + rand(1)
|
例: イメージに少量のノイズを追加
コンポーネントパーサ
|
赤
|
r + rand(0.1)
|
|
緑
|
g + rand(0.1)
|
|
青
|
b + rand(0.1)
|
|
アルファ
|
0
|
ピクセル パーサー
|
ピクセル
|
pixel + rand(0.1)
|
例: ピクセルの拡散
コンポーネントパーサ
|
赤
|
r(x+rand(5),y+rand(5))
|
|
緑
|
g(x+rand(5),y+rand(5))
|
|
青
|
b(x+rand(5),y+rand(5))
|
|
アルファ
|
0
|
ピクセル パーサー
|
ピクセル
|
pixel(x+rand(5),y+rand(5))
|
三角式
使用できる三角関数は次のものです。
-
正弦関数(sin) - sin(float)
-
余弦関数(cos) - cos(float)
-
正接関数(tan) - tan(float)
例: 波のゆがみ
コンポーネントパーサ
|
赤
|
r(x+20*sin(x/ 20),y+20*sin(y/20))
|
|
緑
|
g(x+20*sin(x/ 20),y+20*sin(y/20))
|
|
青
|
b(x+20*sin(x/ 20),y+20*sin(y/20))
|
|
アルファ
|
a(x+20*sin(x/ 20),y+20*sin(y/20))
|
ピクセル パーサー
|
ピクセル
|
pixel(x+20*sin(x/ 20),y+20*sin(y/20))
|
論理式
使用できる論理関数は次のものです。
-
等しい: (=)
-
等しくない: (<>)
-
より大きい: (>)
-
未満: (<)
-
以上: (>=)
-
以下: (<=)
-
論理積: (and)
-
論理和: (or)
-
排他的論理和: (xor)
-
否定: (not)
-
最小: (min)
-
最大: (max)
例: 論理合成
コンポーネントパーサ
|
赤
|
r[1](x,y) and r[2](x,y)
|
|
緑
|
g[1](x,y) and g[2](x,y)
|
|
青
|
b[1](x,y) and b[2](x,y)
|
|
アルファ
|
a[1](x,y) and a[2](x,y)
|
ピクセル パーサー
|
ピクセル
|
pixel[1](x,y) and pixel[2](x,y)
|
フィルタ属性
component.attribute(x,y)
ここで x および y はフィルタが適用される個所のピクセル値です。
すべてのフィルタは 1 つの 3*3 コンボリューションを基にしています。
-
グラディエント フィルタ: (grad)
-
ブラー フィルタ: (blur)
-
最小フィルタ: (minimum)
-
最大フィルタ: (maximum)
-
中央値フィルタ: (median)
例: 単純なブラー
コンポーネントパーサ
|
赤
|
r.blur(x,y)
|
|
緑
|
g.blur(x,y)
|
|
青
|
b.blur(x,y)
|
|
アルファ
|
0
|
ピクセル パーサー
|
ピクセル
|
pixel.blur(x,y)
|
例: エッジをシャープにする
コンポーネントパーサ
|
赤
|
r+r.grad(x,y)
|
|
緑
|
g+g.grad(x,y)
|
|
青
|
b+b.grad(x,y)
|
|
アルファ
|
0
|
ピクセル パーサー
|
ピクセル
|
pixel+pixel.grad(x,y)
|
シェイプ属性
shape(x,y,size)
ここで x、y およびサイズはピクセル値であり、シェイプは円または正方形です。
円: (circle)
正方形: (square)
例: ピクチャの反転
コンポーネントパーサ
|
赤
|
if square(100,200,50) then r[1](x,y) else r[2](x,y)
|
|
緑
|
if square(100,200,50) then g[1](x,y) else g[2](x,y)
|
|
青
|
if square(100,200,50) then b[1](x,y) else b[2](x,y)
|
|
アルファ
|
0
|
ピクセル パーサー
|
ピクセル
|
if square(100,200,50) then pixel[1](x,y) else pixel[2](x,y)
|
例: 円内のピクチャ
コンポーネントパーサ
|
赤
|
if circle(100,200,50) then r[1](x,y) else r[2](x,y)
|
|
緑
|
if circle(100,200,50) then g[1](x,y) else g[2](x,y)
|
|
青
|
if circle(100,200,50) then b[1](x,y) else b[2](x,y)
|
|
アルファ
|
0
|
ピクセル パーサー
|
ピクセル
|
if circle(100,200,50) then pixel[1](x,y) else pixel[2](x,y)
|
イメージ属性
component.attribute(argument(s))
イメージ属性カテゴリは現在のピクセルのコンポーネント値を修正します。次の属性があります。
-
Quantization (quantize) - component.quantize(x)
-
Contrast enhancement (contrast) - component.contrast(x1,x2)
-
Gamma correction (gamma) - component.gamma(x)
-
Sawtooth function (sawtooth) - component.sawtooth(x)
-
Smooth Step function (smoothstep) - component.smoothstep(x1,x2)
-
Step function (step) - component.step(x1,x2,x3)
例: コンポーネントの 4 レベル量子化
コンポーネントパーサ
|
赤
|
r.quantize(4)
|
|
緑
|
g.quantize(4)
|
|
青
|
b.quantize(4)
|
|
アルファ
|
0
|
ピクセル パーサー
|
ピクセル
|
|
pixel.quantize(4)
量子化は各コンポーネント別個に行われるため、43 = 64 レベルが得られます。
例: コントラスト
コンポーネントパーサ
|
赤
|
r.contrast(0.25,0.75)
|
|
緑
|
g.contrast(0.25,0.75)
|
|
青
|
b.contrast(0.25,0.75)
|
|
アルファ
|
0
|
ピクセル パーサー
|
ピクセル
|
pixel.contrast(0.25,0.75)
|
例: ガンマ
コンポーネントパーサ
|
赤
|
r.gamma(0.7)
|
|
緑
|
g.gamma(0.7)
|
|
青
|
b.gamma(0.7)
|
|
アルファ
|
0
|
ピクセル パーサー
|
ピクセル
|
pixel.gamma(0.7)
|
例: ノコギリ歯
コンポーネントパーサ
|
赤
|
r.sawtooth(4)
|
|
緑
|
g.sawtooth(4)
|
|
青
|
b.sawtooth(4)
|
|
アルファ
|
0
|
ピクセル パーサー
|
ピクセル
|
pixel.sawtooth(4)
|
例: スムースステップ
コンポーネントパーサ
|
赤
|
r.smoothstep(0.25,0.75)
|
|
緑
|
g.smoothstep(0.25,0.75)
|
|
青
|
b.smoothstep(0.25,0.75)
|
|
アルファ
|
0
|
ピクセル パーサー
|
ピクセル
|
pixel.smoothstep(0.25,0.75)
|
例: ステップ
コンポーネントパーサ
|
赤
|
r.step(0.25,0.75,0.75)
|
|
緑
|
g.step(0.25,0.75,0.75)
|
|
青
|
b.step(0.25,0.75,0.75)
|
|
アルファ
|
0
|
ピクセル パーサー
|
ピクセル
|
pixel.step(0.25,0.75,0.75)
|
時間
任意の時点で変数にアクセスできます。
構文: 変数(フレーム番号)
変数 time は現在のフレーム番号を表します。
例:
コンポーネントパーサ
|
赤
|
r*c1(6)
|
|
緑
|
g*c1(time-1)
|
|
青
|
b
|
|
アルファ
|
0
|