DAZ画像をアニメ塗りにしたい【後編】


前回の続き。DAZ3D studio の画像をアニメ塗りにする画像処理の試行です。

色々確かめながら良い方法を探っています。

前回からの修正

リストから一番近い値をとる関数は uint8 同士の比較で問題があった(マイナス時にアンダーフローする)ので修正。

リスト内のベクトルから一番近いベクトルを返す関数を追加。

元画像

今回は前回のモデルと、ちょっと色合いの多いモデルを用意した。

また特定の方向から光を当てるのをやめて環境光にした。

 

改めてRGBベクトルとHSVベクトルをクラスタリング。

RGBだと明るさの影響が強く、HSVだと色合いで分離できているように思えます。

RGBだと素材、HSVだとテクスチャとも考えられる。

方針

やりたいことからするとHSVの方が向いていますが、Hueの値がクラスタリング向きでないです。

色相(H)は0-180の値で0と180の色が同じになっています。

0と179がほとんど変わらないのに値として離れているのが問題。

 

この影響を他に与えないために、色相 ( Hue ) だけ先にクラスタリングして、色相ごとにSV空間のクラスタリングをしてみます。

色相をどれくらい分けるか

HSVはこんな感じで表現される。

彩度 (S) が小さい、また明度 (V) が小さい場合は少し他と分ける必要があるので次のように色相 (H) 分離テスト。

わかりやすくするために色はクラスタごとに分けている。

1枚目は K=4 、2枚目は K=5 くらいがよさそうです。

SVクラスタリング

あとはHUEごとにSVベクトルを k を変えながらクラスタリングする。

 

合成

k=1の画像をベースにk=2,4の画像をぼかして不透明度50%でオーバーレイ。

元画像の輝度を50%で影を補完して、ハイパスとコピーフィルターで輪郭をパリッとさせます。

 

いい感じです。

とりあえず満足いくレベルにはなってきたので一旦ここまで。


One thought on “DAZ画像をアニメ塗りにしたい【後編】”

コメントを残す

メールアドレスが公開されることはありません。