ノード一覧に戻る

しきい値

threshold

画像全体のしきい値、または照明ムラに追従する周辺平均との差で、白黒マスクを作ります。

確認済み
解説あり

入力ポート

名前説明
画像
input
Image
必須
明るい部分、特定の色成分、透明でない部分などを分けたい画像です。

出力ポート

名前説明
マスク
output
Image
白黒マスクです。白が選ばれた部分、黒が選ばれなかった部分です。

パラメータ

名前既定値範囲説明・選択肢
基準
source
Enum
OKLCH-L

白黒を決める基準です。明るさで分けるなら OKLCH 明度、形だけなら Alpha、色相範囲なら色域選択ノードを使います。

  • OKLCH 明度OKLCH-L
    見た目の明るさで判定します。影やハイライトなど、目で見た明暗に合わせたい時に使います。
  • OKLCH 彩度OKLCH-C
    色の鮮やかさで判定します。くすんだ色と鮮やかな色を分けたい時に使います。
  • HSV 彩度HSV-S
    HSV の鮮やかさで判定します。一般的な色相・彩度・明度の感覚で選びたい時に使います。
  • HSV 明度HSV-V
    RGB の一番明るいチャンネルを基準にします。光った色や原色の強さを見たい時に使います。
  • RGB 赤RGB-R
    赤の強さで判定します。赤みだけを抜き出したい時に使います。
  • RGB 緑RGB-G
    緑の強さで判定します。緑成分だけを抜き出したい時に使います。
  • RGB 青RGB-B
    青の強さで判定します。青成分だけを抜き出したい時に使います。
  • アルファAlpha
    透明度で判定します。不透明な形だけをマスクにしたい時に使います。
  • 輝度Luminance
    RGB から計算した明るさで判定します。OKLCH より単純な白黒変換に近い結果が欲しい時に使います。
判定方法
method
Enum
Global

生成画像など明るさが揃った素材は『画像全体で1つ』、影や照明ムラのある写真・スキャンは『周辺の明るさに追従』を使います。

  • 画像全体で1つGlobal
    全ピクセルを同じしきい値で判定します。従来と同じ結果です。
  • 周辺の明るさに追従LocalMean
    各ピクセルを周辺平均と比べます。影や照明ムラのある写真・スキャン向けです。
しきい値
threshold
Float
0.50–1 / step 0.01

上げるほど白になる範囲が狭くなり、下げるほど広く選ばれます。

周辺半径
local_radius
Int
81–128

各ピクセルの周囲を平均する距離です。まず8px前後、広い影や照明ムラには16〜32pxへ上げます。細い線が消える時は下げます。

局所バイアス
local_bias
Float
0.05-0.5–0.5 / step 0.01

周辺平均からこの値を引きます。正へ上げると反転前の白が広がります。暗い線を反転で抜く時は、上げるほど薄い線を除外します。まず0.03〜0.10が目安です。

端の扱い
boundary
Enum
Clamp

単体の写真は端を繰り返し、上下左右につなぐ素材は反対側へ回り込ませます。

  • 端を繰り返すClamp
    最外周のピクセルを外側へ繰り返します。通常の写真・スキャン向けです。
  • 反対側へ回り込むWrap
    反対側のピクセルを周辺として使い、タイル境界でも同じ判定をします。
反転
invert
Bool
false

選ばれる部分と選ばれない部分を入れ替えます。

マスクを透明度にする
alpha_from_mask
Bool
false

白黒マスク自体を透明度にも使います。黒い部分は透明、白い部分は表示されます。元画像の色は保持しません。

完全透明を無視
ignore_fully_transparent
Bool
true

完全透明な入力ピクセルは、内部のRGB値にかかわらず選択しません。

概要

画像を「選ぶ部分」と「選ばない部分」の白黒マスクに変換するノードです。明るい部分だけ、透明でない部分だけ、赤みが強い部分だけ、というような抜き出しに使います。

threshold を上げるほど白になる範囲は狭くなり、下げるほど広くなります。

使い方のポイント

  • マスク作りの最短ルート: noise_generate → threshold でランダムな斑点マスク、 元画像 → threshold(Alpha) でシルエットマスク
  • 作ったマスクは blend_by_mask / erase_by_mask / mask 系ノードの マスク入力へつなぐのが定番
  • 「明るい部分」を選ぶ基準は既定の OKLCH-L(見た目の明るさ)でまず問題ない。 特定の色成分を抜きたいときだけ RGB/HSV 系に切り替える。赤をまたぐような 循環する色相範囲は単純なしきい値に向かないため、color_select_replace等を使う
  • alpha_from_mask をONにすると、マスクを作ると同時に黒側を透明化できる が、出力RGBは白黒マスクのままで元画像の色は保持しない
  • ignore_fully_transparent は完全透明ピクセルのhidden RGBが白判定になるのを防ぐ。 v1から読み込んだgraphだけは互換性のためfalseを維持する
  • 写真・スキャンに照明ムラがある時はmethod=LocalMeanへ切り替える。まず local_radius=8local_bias=0.05から始め、暗い線を抜くならinvert=ONにする
  • local_radiusは「照明ムラを見る広さ」。細線そのものより大きく、影の変化幅より 小さい値にする。細線が周囲へにじむ時は下げ、広い影を拾う時は16〜32へ上げる
  • local_biasは周辺平均から引く値。反転前は上げるほど白側が増える。暗い線を invert=ONで抜く場合は効果が逆になり、上げるほど薄い汚れを捨てて濃い線だけ残す
  • タイル素材はboundary=Wrapにする。端の平均が反対側を含むため、並べた境界だけ 判定が変わる事故を防げる。普通の写真はClampのままでよい

よくある失敗

  • 境界がジリジリと不安定: しきい値付近の値が揺れている。threshold を±0.1動かして 安定する値を探すか、前段に軽い gaussian_blur を入れて値の分布を滑らかにする
  • 写真の左半分だけ白黒が逆になる: 全体しきい値が照明ムラを形として拾っている。 LocalMeanへ切り替え、半径8〜16・バイアス0.03〜0.10から調整する
  • LocalMeanで細い線が消える: 暗い線+反転ならlocal_biasを下げる。線の周囲まで 太く拾う時はlocal_radiusも少し下げる
  • 中間調が全部消える: 仕様(2値化ノード)。段階を残したいなら posterizegradient_map(Steps) を使う
  • 白黒が逆: invert をONにするだけでよい(前段をいじる必要はない)

使用例

  • Alpha で、不透明なドットだけを白にしたマスクを作る。
  • OKLCH-L で、光っている部分だけを抜き出す。
  • invert をオンにして、影や暗い部分だけを選ぶ。
  • 照明ムラのある紙面をLocalMean(radius:8, bias:0.05, invert:ON)で二値化し、 紙の影を除いて濃い線だけを白マスクにする。

関連ノード

  • blend_by_mask / erase_by_mask — 作ったマスクの主な使い先
  • noise_generate — ランダムマスクの元
  • posterize — 2値ではなく多段階に落としたい場合
  • color_select_replace — 「特定の色を選んで置き換える」ならこちら
ノード一覧に戻る
しきい値 — PixPipeline ノード解説