Using Parser Expressions(パーサ エクスプレッションを使用する)

 
 
 

| コンポーネント エクスプレッションを使用する | 数式を使用する

コンポーネント パーサ オペレータおよびピクセル パーサ オペレータはエクスプレッションを解析し、結果を使用してそれぞれ個々の RGBA コンポーネントまたは個々のピクセルに影響を与えます。このセクションでは有効なエクスプレッション タイプ、引数および変数のリストを示し、また使用例を挙げます。

コンポーネント パーサを使用すると個々のエクスプレッションを赤、緑、青およびアルファ コンポーネントに適用できます。

イメージ調整エフェクト カテゴリのピクセル パーサ処理には単一のエクスプレッション チャンネルがあり、エクスプレッションをピクセルの形式で入力できます。これにより、指定されたエクスプレッションが各 RGBA コンポーネントに等しく適用されます。さらにピクセル パーサは任意の有効なエクスプレッションを単一のコンポーネント パーサ チャンネルにとることができます。

コンポーネント エクスプレッションを使用する

[構文](Syntax):

値のとり得る値:

任意の浮動小数点数(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

特定位置でのコンポーネント エクスプレッション

[構文](Syntax): 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

別の入力を使用したコンポーネント エクスプレッション

[構文](Syntax): 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)

条件式で変数を使用する

[構文](Syntax): 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)

フィルタ属性

[構文](Syntax): 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)

シェイプ属性

[構文](Syntax): 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)

イメージ属性

[構文](Syntax): 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