On this page |
概要 ¶
icomposite [-v] [-w width] [-h height] [-d divs div] [-f] [-F filter] [-B] [-L <lut>] [-O <lut>] [-c] [command]
画像をレイヤーでコンポジット、単純な画像処理、画像サイズの変更をします。画像を拡大縮小するときに任意のフィルターを指定することができます。
オプション ¶
-v
実行した現在の走査線と現在のコンポジットのサブ処理の状況を詳細に出力します。
-w
width
出力する水平解像度をwidthで設定します。
-h
height
出力する垂直解像度をheightで設定します。通常はフレームすべてを一番大きい入力画像の解像度に合うようにXとY方向にスケールします。幅または高さのどちらかを指定すれば、垂直の解像度が一番大きい入力画像の縦横比を保持しつつ、入力と出力のフレームを特定の値でスケールします。
-f
入力画像を指定した出力解像度でフィルタリング(ボックスフィルターを使用)します。通常は入力画像をサンプリングします。フィルタリングはサンプリングよりも時間がかかりますが、画像のスケーリングでは良好な結果が得られます。
-c
通常では画像ファイルを開いたり読み込んでいるときにエラーが起きると、icompositeは現在のコンポジット操作を終了します。-c
オプションを指定すると、エラーが起きてもコンポジット操作が続きます。エラーが起きると、そのフレームは空白の画像に置き換えて読み込まれます。これはコンポジットの結果が正しくない場合があることに注意してください。
-B
上位互換(Houdini2.5またはそれ以前のバージョン)の画像スケール。特別なフィルターサポートがありません。
-F
画像の読み込みで使うフィルタータイプを指定します(“icomposite -”をタイプすれば利用可能なフィルターがリスト表示されます)。
command
インタラクティブモードでicompositeに指定可能な1行は、ここでも指定することが可能です。
コンポジットオペレータ ¶
単項オペレータは、次のような構文で指定します:
claw.pic over back.pic
0.7は定数で、正の実数です。定数画像で使われている数値以外の定数は1を越えることはできません。
定数画像とは単色カラーの画像のことです。これはコンポジットエレメント(通常は背景エレメントとして使用)として使う場合があります。定数画像の指定方法は、大括弧を使って赤、緑、青、さらに任意でアルファ値を指定してから括弧を閉じます:
[1 0.7 0.5] [0.8 0.5 0.4 0.8]
2番目はアルファ値を含めた例です。最初の例では、アルファ値を設定していないで、デフォルトの1が設定されます。定数は0から1までの実数です。
dissolve value image
対象の画像をdissolveオペレータと定数を使ってディゾルブします。これはRGBとアルファチャンネルをすべて指定した値で乗算します。
darken value image
対象の画像をdarkenオペレータと定数を使って暗くします。これはRGBチャンネルのみを指定した値で乗算します。アルファチャンネルはdarkenオペレータでは変更されません。
opaque value image
対象の画像のアルファチャンネルのみをopaqueオペレータと定数を使って乗算します。これは背景エレメントを隠さないでカラー情報を加算する発光エレメントを作成することができます。
mono value image
対象の画像を指定した値でモノクロにします。1は完全に白黒になり、0は色を変更しません。中間値は部分的にモノクロ画像になります。
gamma value image
対象の画像の各RGBチャンネルにガンマ補正を適用します。1より大きい値は画像がより明るくなり、反対に小さい値は暗くなります。
channel chans image
指定したchan文字列の4つの文字の組み合わせと順番に基づいて、対象の画像のチャンネルをコピー、入れ替え、置換をします。
1番目の文字は出力するRチャンネルで置換するもの、2番目の文字はGチャンネルで置き換えるものなどです。
文字rは入力のRチャンネル、zはzero(透明)を含むチャンネル、oはopaque(不透明)を含むチャンネルを意味します。
例えば、bbbaはRとGチャンネルにBチャンネルをコピーします。一方Bチャンネルとアルファチャンネルはそのままです。rgbaは、その画像のままです。aaazはRGBチャンネルにアルファチャンネルをコピーし、アルファチャンネルにはzeroをコピーします。
alpha value image
対象の画像のRGBチャンネルにアルファチャンネルを乗算します。
setup value image
対象の画像でアルファチャンネルが0より大きい箇所でピクセル単位で指定した値以上になるように底上げします。アルファチャンネルが0の箇所では何もしません。setupオペレータは画像のもっとも低い輝度レベル(アルファに基づいて)を底上げして、0のレベルはそのままにします。例:
icomposite abekas:34.rgb = setup .075 claw.pic
0以外のアルファ値は、最低でも.075の輝度に上げられます。.075の輝度を越えるカラーはそのままになります。
even image
対象の画像の偶数番目の走査線のみを維持します。(要は奇数番目の走査線はすべてブラックに消去します)。NTSCフレームでは底辺の走査線を奇数としているので、このオペレータは画像ファイルの最初の走査線を奇数とみなします。
odd image
対象の画像の奇数番目の走査線のみを維持します。(要は偶数番目の走査線はすべてブラックに消去します)。NTSCフレームでは底辺の走査線を奇数としているので、このオペレータは画像ファイルの最初の走査線を奇数をみなします。
image cross image
crossオペレータは、唯一の二項オペレータで、定数のオペレータ値を必要とします。このオペレータは2つのエレメントを交差してディゾルブします。“A cross 0.4 B”は0.6のAと0.4のBでディゾルブします。これは効率的な便利な独立したオペレータとして提供されています。
image over image
overオペレータは非常に使用頻度の高いコンポジットオペレータです。これは右の画像の上に左の画像を配置します。前景エレメントはどこにでも表示され、背景エレメントは前景エレメントで隠されていない箇所のみ表示されます。
image plus image
plusオペレータは左の画像と右の画像の各チャンネルを単純に加算します。その合計は最大チャンネル値で制限されます。
image minus image
minusオペレータは左の画像から右の画像の各チャンネルを単純に減算します。その結果は最小チャンネル値の0で制限されます。
image diff image
diffオペレータは左と右の画像の差分の絶対値を返します。
image multiply image
multiplyオペレータは左と右の画像の各チャンネルを単純に乗算します。チャンネルの値は0から1の間を固定小数点として処理します。
image inside image
insideオペレータは右の画像の範囲内で左の画像を配置し、右の画像は消えます。
image outside image
outsideオペレータは右の画像の範囲外で左の画像を配置し、右の画像は消えます。
image atop image
atopオペレータは右の画像の範囲内で上に左の画像を配置し、右の画像はそのまま存在します。
image xor image
xor(排他的論理和)オペレータは、AとBの和演算でAとBの重複部分を除きます。要するに、2つのエレメントで重複しない部分が残ります。
文法 ¶
icompositeには正規な文法があります。許可されている構文は次の通りです。単項オペレータのdissolve、darken、opaque、mono、gamma、alpha、even 、oddの優先度は同じで、二項オペレータよりも優先度が高いです。二項オペレータの優先度は組み合わせ順で決まります(つまり、a over b over cは(a over b) over cと同じことです)。
Composite: FILENAME = Expression Expression: FILENAME | Constant_Frame | dissolve Constant Expression | darken Constant Expression | opaque Constant Expression | mono Constant Expression | gamma Constant Expression | channel Channels Expression | alpha Expression | even Expression | odd Expression | Expression cross Constant Expression | Expression plus Expression | Expression minus Expression | Expression diff Expression | Expression multiply Expression | Expression over Expression | Expression atop Expression | Expression outside Expression | Expression inside Expression | Expression xor Expression | (Expression) Constant_Frame: [Constant Constant Constant Constant] | [Constant Constant Constant]
icompositeは“Compositing Digital Images” (Computer Graphics, Volume 18, Number 3, Thomas Porter and Tom Duff, July 1984)の紙面で書かれた通りにコンポジット処理をします。コンポジット処理で使用するエレメントすべて(後述のalphaオペレータを除く)は、RGBチャンネルがそれに対応するアルファチャンネルで事前に乗算されているとみなします。これはほとんどのレンダラーでも同様です。つまり、事前に乗算したRGBチャンネルを使っていないフレームは、背景エレメントは別にして、直接コンポジット処理で使うことができないことを意味します。
alphaオペレータは事前に乗算していない画像を必要となる事前に乗算したフォーマットに変換します。よって、事前に乗算したカラーチャンネルを使っていないフレームは、最初にalphaオペレータを適用する必要があります(後述のサンプルを参照)。
サンプル ¶
icomposite ip = mono .5 $HH/pic/Mandril.pic
icompositeはコマンドラインから1つのコマンドを取得したり、標準入力から画像コンポジットの文を読み込み、そして要求したコンポジット画像を取得するために処理を実行します。
インタラクティブにコマンドを読み込むと、入力の各行が1つのコンポジット処理または文になります。頭文字が$で始まる環境変数は最初に展開されます。
以下のサンプルは、コンポジットの文で、入力をicompositeに設定します。いくつかのサンプルは非常に複雑です。(…)を使うと、icompositeに対して括弧の中の処理を最初に実行するように命令します。[...]
を使うと、それが3つのRGBまたは4つのRGBAの数字を中に指定した定数カラーの画像を意味します:
cd $HFS/demo/ImageTools ip = claw.pic over back.pic junk.pic = claw.pic outside back.pic ip = dissolve .5 claw.pic over ([0.3 0.1 0.1 0.25] atop back.pic) ip = marble.pic multiply [.5.7 1] ip = back.pic minus [0.25 0 0] over [0.3 0.2 0.1] fields.pic = even claw.pic plus odd back.pic over [.2.1.1] ip = (darken 0.7 (object.pic inside shadow.matte) atop object.pic) over .bg.pic ip = (marble.pic cross 0.7 air.pic) outside claw.pic over back.pic ip = gamma 1.3 back.pic
icomposite -F gauss -w 640 -h 486 ip = $HH/pic/Mandril.pic
icomposite -F box -w 640 ip = $HH/pic/Mandril.pic
インタラクティブコンポジットモード ¶
コマンドラインでコンポジットコマンドを指定していなければ、icompositeはインタラクティブモードになり、ユーザが多くのコマンドを入力できるようになります。ターミナルからの入力では、icompositeはコンポジットの文を=>で促します。
⌃ Ctrl + Cを押せば、コンポジット処理がまだ進行していなければコマンドが終了し、進行中であれば処理が中断されます。インタラクティブモードでない場合は、中断の信号を送ってコマンドをいつでも終了させることができます。
ファイルが終わりに到達するまでは、各入力行を別々に中断していきます。
!
の文字で始まる入力行はシェルコマンドとして解釈されて実行されます。
メモ ¶
-
icompositeでは次のどれかの文字を含むファイル名をサポートしていません:
[] () = ; !
また、実際の数字に見えるようなファイル名(例えば、123)もサポートしていません。
-
エラーはおおざっぱに扱われるので、“Syntax error on line 1”のようなメッセージを取得します。