流動的トリミングというちょっと変わったトリミング


YouTubeでのデモンストレーション 『流動的トリミング』が適切な言葉かどうかは別として、構図の再構成も考慮にいれて画像の部分的変形を可能にしたGIMPプラグインツールがあります。『ホームページを作る人のネタ帳』で紹介されていたLiquid rescaleがそれです。YouTubeの動画はプレゼン用のデモンストレーションで、実際のプラグイン操作ではリスケールのプロセスを目視したり、インタラクティブに変化させることはできませんが、Liquid rescaleのコンセプトは一目で理解できると思います。また、http://www.screencast-o-matic.com/watch/ci6DbhEIではチュートリアルの動画を見ることができます。
● Liquid Rescale の使用例
● Liquid Rescale の応用編!?
● Liquid Rescale のパラメータの設定方法について
※インストールに関しては「Liquid Rescale のインストール」を参考にしてください。

 Liquid rescaleと似たような機能にIllustratorエンベロープツールがあります。操作方法や元々の概念が全く違いますが、『GIMPエンベロープツールのようなものがあれば助かるな』と思っていた方には朗報かと思います。Liquid rescaleは写真の部分的な伸張や縮小をコントロールして構図を変化させることができます。ただし定型の変形ツールとしての用途には不向きです。

作例写真:左→元画像、中央→伸張トリミング、右→縮小トリミング
 この写真は富良野で撮影たものです。構図など考えずにテキトーに撮影してしまったために中途半端な写真(画像左側)になってしまいました。右側の男の子が邪魔でしたし、縦位置でトリミングすることを考えるとロールサイレージ(牧草を丸めたやつ)がもう少し中央に寄っていれば良かったと思います。

 Liquid rescaleを使って右側の男の子を消したのが画像中央の写真です。*1そして右側は、ロールサイレージを右よりに移動(被写体とロールサイレージの間を縮小)させて縦位置のトリミングにした例です。被写体を大きく見せてかつ牧場であることが一目でわかるようにトリミングすることができました。いずれにしても、Illustratorエンベロープツールで処理するとぱっと見でもはわかる歪みが気になりますが、Liquid rescaleの場合は非常に自然な感じに仕上がります。この程度のサイズなら、背景に目立つ人工物、とくに規則的な構造物の配列や斜めに走る直線部分がなければ、レタッチ処理したことを見破る人はまずいないでしょう。

 蛇足ですが…元来の写真のトリミングという視点に立ってこの方法を考えると、フィルムカメラ&印画紙の時代には予想すらし得なかった未来の技術であるわけで。こんなことが自分ちのちゃぶ台の上の小さなパソコンで(しかもタダで)できてしまうのですから、私が小学生だった頃想い描いた未来の21世紀はちゃんと『未来』として存在しているんだと少しだけ実感することができます。

Liquid Rescale の使用例

ここでは指定した必要な部分のサイズを変えることなく、画像サイズを伸張してトリミングする方法と縮小してトリミングする方法を解説します。

被写体の大きさと画像のアスペクト比を変えずに写真のいらない部分だけを消す

先ずは省きたい部分の切り取り まず、この写真では右側の男の子を省きたいので、[切り抜き&サイズ変更]ツール(画像を切り抜いたり大きさを変えたりする)で図のようにトリミングして[切り抜き]ボタンをクリックします。

Liquid rescaleの設定 Liquid rescaleを起動して、リスケール処理時に保護したい部分を設定します。[レイヤー]タブをクリックして表示されるメニューで、一番下の方にある[Liquid rescale ...]をクリックして、「GIMP Liquid rescale Plug−In」画面を表示させます。
「Feauture Preservarion mask」の[New]ボタンをクリックします。自動で「Preserve features」にチェックが入りますが、チェックされていないときはチェックを入れます。「レイヤー」ウィンドウに不透明度50の[背景 pres mask]レイヤーが新規作成されているのが確認できます。

保護部分の塗りこみ [絵筆]ツール(絵筆で線を引く)などを使って、保護したい部分を図のように塗りつぶします。描画色はなんでも構いませんが、写真の色調をみて目立つ色で塗ると塗り残しや塗りすぎがないか良くわかります。また、きっちり塗る必要はありません、少しはみ出るくらいに塗るのが良いと思います。

画像サイズの指定 保護マスクの塗りが終了したら、アスペクト比を元の状態に戻すために、横方向に伸張します。「Select new width and height」の[Width]に元の値である800を入力して、右側にある鎖マークが切れている状態であることを確認します。

 あらかじめ「Output」タブの[Output on a new layer]にチェックをいれておくと、処理した画像が新しいレイヤーに作成されて元画像が残ります。[Output the seams]は処理した部分の境界線を新たにレイヤーを作成して残します。処理後の画像が予想通りの仕上がりでなかった場合、やり直す際のパラメータ設定の参考になります。一発で思い通りにいかないことも少なくないので、このタブ画面ではこの二つにチェックを入れておくと良いでしょう。これで[OK]ボタンをクリックします。

Liquid rescaleの出力設定 伸張処理後の画像です。ロールサイレージと少女の間と少女から右側の部分が引き伸ばされました。また「レイヤー」ウィンドウを見ると、処理後の画像[背景LqR]と処理継目の画像[背景 seam map]レイヤーが作成されているのがわかります。

伸張処理継目の例 処理前の画像と処理継目の画像を表示させてみると、どの部分を伸張させたかが良くわかります。無数に走る稲妻のような線は伸張(または縮小)する割合が大きいほど、その数と処理時間が増えます。

横位置の写真を縦位置で流動的トリミングをする

縮小トリミングする例 縦位置でトリミングするときは、ロールサイレージと少女、そして少女の右側が詰まりすぎないように、少女の右側の牧草地を保護領域として塗ります。

アスペクト比の設定 縦位置のアスペクト比を3:4にするために[Width]に450を入力します。

縮小処理継目の表示縮小トリミング処理の例 処理後の画像と処理継目を表示した画像です。非常に綺麗に縮小されています。選んだ写真の背景が牧草や森などの自然なものだったことも手伝って、修整の不自然さを全く感じさせません。縮小処理の継目は保護部分をうまく避けて、横方向の縮小率の大きい部分や小さい部分それぞれに偏りが生じないように縮小されるようです。しかも、周囲の色や明度が大きく違う特異点…たとえば緑の草原の中の白い花などを縮小(または伸張)ターゲットから外すように処理することで、ディテールが損なわれるのを回避し歪み感を軽減しているようです。これを出力したものが冒頭の作例写真の右画像となります。

Liquid Rescale の応用編!?

画像中から不要な部分を消す例 上の例では余計な要らない部分は切り取ってからLiquid rescaleで処理しましたが、応用偏ではデモンストレーション動画にあったようにLiquid rescaleの機能を使って画像中の人物を消してみました。設定は以下の通りです。

保護対象と破棄対象の設定例 母娘をリスケール処理から保護したいので、[背景 pres mask]レイヤーに緑色で塗って「Feature preserve mask」の[Layer]に指定し、消したいターゲットは[背景 disc mask]レイヤーに赤色で塗って「Feature discard mask」の[Layer]に指定しています。アスペクト比を変えないように処理するために、幅と高さの縮小率を同じにします。「Select new width and height」の鎖アイコンをクリックしてつなげてから、単位を[パーセント]にしてこの場合は70を入力しました。また、それぞれの[Strength]にデフォルトの100だと弱いので1500を設定しています。

幅と高さの同時縮小時の処理継目線 縮小処理の継目線を見ると最初に幅の縮小処理をしてから高さを縮小することがわかります。

強度が弱いと破棄対象の部分が消えません 参考のために[Strength]を100で出力した画像がこれです。消すターゲットの人物がジャコメッティの彫刻のようになっています。このようにFeauture discard maskのStrengthを小さくするほど消えずに残る部分が増えます。また保護マスクの強度も100に下げているので親子も部分的に縮小されて少し形が崩れています。これはこれで面白いですね。デコボコにゆがんだリフレクターに映った風景のようです。こうやって処理したギコギコとぎこちない画像をマチエールを表現できる絵画フィルター、たとえばパステルとか水彩などで処理すると、通常の写真を絵画フィルターで処理するよりももっと絵画的になるのでは。
http://liquidrescale.wikidot.com/en:examplesではこんな感じで遊んだ画像をいくつか見ることができます。

Liquid Rescaleのパラメータの設定方法について

 簡単にパラメータ設定について解説します。基本的には保護(Preserve)か優先(放棄:Discard)領域のレイヤーに任意に塗りこみをして、WidthやHeightに値を設定し、場合によってはそれぞれのStrengthの値を調整する程度で、他はデフォルトのままでもそれなりに処理できます。
Liquid rescale設定画面&Feature masks タブ
Select new width and height

Width
幅を指定します
Height
高さを指定します
鎖アイコン
つながった状態で拡大または縮小時の比率を保ちます
単位プルダウンメニュー
ピクセルやパーセント、その他いろいろ選択することができます

ちなみに[更新]ボタンはマスクレイヤーに変更を加えたときなどにクリックして、変更を読み込ませるためのものです。

Feature masks タブ (上画像参照)

Feature preservation mask

Preserve feature
保護領域を有効にするかどうか。チェックすることで有効になり、リスケール処理から保護されます
Newボタン
保護領域レイヤーを新規作成します
Layer
保護領域のレイヤーを選択します
Strength
保護領域の強度を設定します。デフォルト値は100です。0では保護領域が無視されます。数値が高いほど縮小または拡大時に強固に保護されます

Feature discard mask

Discard features
優先領域を有効にするかどうか。チェックすることで有効になります。伸張または縮小処理時に優先して処理される領域です。*2
Newボタン
優先領域レイヤーを新規作成します
Layer
優先領域のレイヤーを選択します
Strength
優先領域の強度を設定します。デフォルト値は100です。0では優先領域が無視されます。数値が高いほど縮小または拡大時に処理の集中度が高まります。
Output タブ

Output タブ

Output on a new layer
処理した画像を新しいレイヤーに出力し、元画像を温存します。チェックしないと元画像が処理後の画像に変更されます
Resize image canvas
縮小または拡大処理によって変更されたキャンバスサイズで画像を表示します。チェックしないと元画像のキャンバスサイズのままです。
Resize preserve/discard layers
保護領域または優先領域を処理したサイズに変更します。チェックを入れないと元のままです。やり直すことを考慮する場合はチェック入れないほうが良いでしょう。追加処理したい場合はチェックを入れます。
Output the seams
処理した履歴を継目線として保持します。右側の四角ボタンは左が処理開始位置、右が終了位置の色で、それぞれクリックしてカラーパレットを表示させて任意に色を変更できます。
Advanced タブ

Advanced タブ

Seams rigidity
処理継目の硬度を設定します。数値を上げるほど直線に近づきます。写真などをレタッチする場合は0のままで良いでしょう。
Gradient function
[Transversal absolute value][Sum of absolute balues][Norm][Null]の4つ選択することができます。前者3つは処理継目の傾斜アルゴリズムの種類で、[Null]は処理アルゴリズムが無視されるので通常は使いません。他のプラグインで使用するのための設定のようです。

各functionの比較画像各設定での処理の違いを実際に画像を使って比較してみました。子どもを保護領域(Feature preservation mask)に設定してサイズを半分にまで縮小した例です。左からそれぞれ[Transversal absolute value][Sum of absolute values][Norm]で処理した画像です。Transversal absolute valueが最も継目が目立ちません。Sum of absolute values からNormになるに従って背景の山の稜線や牧場の柵に段差が目立ってきます。また微妙にロールサイレージの形や子どもの位置が違います。

*1:切り取り後伸張したといったほうが適切かもしれません

*2:Discardは日本語では放棄とか廃棄と訳されますが、拡大時には対象が他より大きくなるので廃棄では相応しくないように感じます。縮小するときは一定の縮小率を超えれば廃棄対象といえますが。ここではあえて優先領域という言葉を使っています