Skip to content

Latest commit

 

History

History
120 lines (89 loc) · 6 KB

README_jp.md

File metadata and controls

120 lines (89 loc) · 6 KB

SDF(Signed Distance Field)による補間でShadow Threshold Mapを生成します。

top.png

アルゴリズムは以下のリンクを参考にしています:
🔗SDF Based Transition Blending for Shadow Threshold Map - ながむしメモ

動作確認環境

  • Windows 11
  • Python 3.10.9
  • numpy 2.0.0
  • opencv-python 4.10.0.84

導入

Releasesからexeを使用する場合、このステップは不要です。詳細はこちらをご覧ください。

python -m venv venv
venv\scripts\activate
pip install numpy opencv-python

基本 :
-i オプションで、画像ファイルのみが含まれたディレクトリを指定してください。ディレクトリ内の画像は昇順ソートされます。

python run.py -i 'sample/sample1'

追加オプション :
いくつかの追加オプションを使用して実行することもできます。

python run.py -i 'sample/sample2' -o 'output2' -n 'face_map' -b 16 -c "rgb" -r -t

オプション

  • -i, --inputdir : 画像のみが含まれた入力ディレクトリのパスを指定します。必須オプションです。
  • -o, --outputdir : 出力画像を保存するディレクトリパスを指定します。デフォルトは 'output' です。
  • -n, --outputname : 出力されるPNGの名前を指定します。デフォルトは 'shadow_threshold_map' です。
  • -b, --bitdepth : 出力PNGファイルのビット深度を設定します。8または16が有効です。デフォルトは8です。
  • -c, --colormode, 出力画像のカラーモードを選択します。'gray', 'rgb', 'rgba' のどれかを指定します。デフォルトは 'gray' です。
  • -r, --reverse : このオプションをつけるとグラデーションの方向が反転します。
  • -t, --savetemp : このオプションをつけると処理中の中間画像を保存します。
  • -f, --filtermode : フィルターモードを選択します。'none'(フィルタなし)、 'gaussian'(ガウスブラー)、'bilateral'(バイラテラルフィルタ)の中から選べます。デフォルトは 'none' です。
  • -k, --kernel_size : ガウスブラーのカーネルサイズです。奇数である必要があります。デフォルトは3です。
  • -d, --diameter : バイラテラルフィルタの強度です。デフォルトは3です。

--bitdepth

16bit画像は8bit画像よりもシャドウの境界が滑らかになります。ただし、ファイルサイズと処理負荷が大きくなることに注意してください。

bitdepth.png

--colormode

カラーモードが 'rgb' に設定されている場合、グレースケール画像が3チャンネルに複製されます。カラーモードが 'rgba' に設定されている場合、遷移領域がアルファチャンネルに追加されます。

colormode.png

--reverse

グラデーションの方向を反転します。

reverse.png

--savetemp

処理中に作成された中間画像を outputdir\temp に保存します。デバッグ用途です。

  • step 1 : 入力画像から得られたSDF画像
  • step 2 : 入力画像のペアから作成されたマスク
  • step 3 : SDF画像のペアから得られたグラデーション
  • step 4 : グラデーションでLerpし、マスクで切り抜いた画像

savetemp.png

--filtermode

生成された画像にブラーを適用できます。利用可能なオプションはガウスブラーバイラテラルフィルタです。ガウスブラーは --kernel_size と一緒に使用し、バイラテラルフィルタは --diameter と一緒に使用します。これらの値が大きいほど、ぼかしが強くなります。

python run.py -i "sample/sample1" -f "gaussian" -k 5
python run.py -i "sample/sample1" -f "bilateral" -d 5

filtermode.png

exeの使用

Pythonがインストールされていない環境では、exeを使用できます。Releasesからダウンロードしてください。

ShadowThresholdMap.exe -i 'sample/sample1'
ShadowThresholdMap.exe -i 'sample/sample2' -o 'output2' -n 'face_map' -b 16 -c "rgb" -r -t

bat

batフォルダにあるgen.batを使うと上記のコマンドを簡単に使用できます。
ReleasesからダウンロードしたShadowThresholdMap.exebatフォルダ内に配置し、ソース画像が入ったフォルダをgen.bat上にドラッグ&ドロップしてください。

use_bat

gen.bat には最小限のコマンド引数が書いてあります。オプションは適宜書き換えて使用してください。

@echo off

if "%~1"=="" exit

:: show version
echo Using version:
%~dp0ShadowThresholdMap.exe -v

:: run
%~dp0ShadowThresholdMap.exe -i %~1

:: (例) オプション追加
::%~dp0ShadowThresholdMap.exe -i %~1 -b 16 -r -n "face_shadow_map" -c "rgba" -f "gaussian" -k 3

Reference Links