SubstanceDesigner Quantize 量子化と減色
SbstanceDesigner の関数を書きたい人向け
先ず結論
お勧め! PixProcessreで 自然な減色とMinMaxのマッピングの式
PixProcessreで書く場合・・・MinMaxは事前に取得する。Step数を外のパラメータに出しておく。
この例ではInputValueを使っているが、ExposeParameterでもよい。
AutoLevelの後にQuantiz (Step=4,Offset=0.5)と同じ結果になるので
その後に、グレースケールをマッピングする。
すると、上と同じ結果になる。どちらかお好きな方で!
おおまかな雰囲気が合っていれば良いのなら、あまり気にする必要はない。しかし、正確な値を必要とするなら癖を知っておこう。
まずQuantizeColorとQuantizeGrayscaleでは計算が異なっている。
そのうえでQuantizeGrayscaleを減色に使う場合に若干注意がいる。
減色用に使うなら自分でカスタムしたほうが安心!
カラーとグレースケールの違い
正確な値のコントロールを必要とする場合
グレースケールが0~1までのフルレンジ画像の場合
> Step数は必要な数-1を入力して、Offsetに0.5を入れた方が良い。
Step数を入れるだけでは内部的にCeil処理があり最小値が使われない。 > QuantizeColorをグレースケール変換をしてこちらを使っても良いがこちらは別途癖がある。上の画像、真ん中がずれていることに注意!階調の浅いグレースケール入力の場合、色パレットは0~1までののレンジで量子化されるため、狙った色数を指定するのが困難。
> 階調のレンジを広げてから量子化し、後から欲しい階調をリマップする
その際MinMaxノードが役立つ。
この発想は、 ColorをQuantizeする場合でも役立つ。
以下、検証メモ
既存のQuantize
少しだけ加工を施す
ここまでの素材を比較用に合成してみた
左から
Linear
Quantize (Step=4)
Quantiz (Step=4) and AutoLevel
Quantiz (Step=4 ,Offset=0.5)
最小値0.5の場合
ステップは4のはずなのに、パレットが 1__0.75__0.5__0.25 の4快調しかないので結果の出力は2段階になってしまった。
最大値と最小値を含めた最適な範囲の色数にしたい
これを解決するには、左端のパレットとなる4色とインプットのグレースケール値の近さによってグラデーションの分布を分ける必要がありそうだ。
より好ましいQuantizeを利用した減色
歪んだ画像でテスト
Thanks for reading!