6

ImageMagickを使用してグリーンスクリーンクロマキーの優れたアルゴリズムを探していましたが、これまでのところ満足のいく答えはありません。

HSV / HSB色空間(-fuzzと同様)に沿った範囲選択を使用して、必要な緑色を選択し、それらを透明にする簡単な方法を検討したいと思います。-fuzzはRGB空間にのみ適用されるようですが、これは望ましくありません。

誰かが私にH、S、Vコンポーネントの別々の範囲で色を選択する方法を教えてもらえますか?たとえば、115-125度の色相、40%-60%の彩度、30-80%の値。

他に優れたクロマキーアルゴリズムがある場合は、アドバイスも高く評価されます。

前もって感謝します。

4

1 に答える 1

4

ImagemagickのFXを使用して、アルファチャネルを生成できます。、、、、&キーワードは存在しますがhue、max(r、g、b)で色を計算する必要があります。saturationlightnesslumavalue

hueMin=115/360;
hueMax=125/360;
saturationMin=0.40;
saturationMax=0.60;
valueMin=0.30;
valueMax=0.80;
value = max( r, max( g, b ) );
(
  ( hue > hueMin && hue < hueMax ) && (
  ( saturation > saturationMin && saturation < saturationMax ) || 
  ( value > valueMin && value < valueMax ))) ? 0.0 : 1.0

上記をという名前のファイルに保存しhsl-greenscreen.fx、次の画像に対して実行します。

convert source.png -channel alpha -fx @hsl-greenscreen.fx out.png

FXスクリプトは、期待される結果に一致させるために、おそらく追加の調整が必要になります。また、これを完了するには少しCPUが必要ですが、改善することができます。

別のオプションは、同じ-fuzzオプションを各HSVチャネルに適用することです。各チャンネルを分割して複製-fuzzし、ターゲットグレーに適用して、イメージマスクを作成するだけです。

convert source.png -colorspace HSV -separate +channel \
  \( -clone 0 -background none -fuzz 5% +transparent grey32 \) \
  \( -clone 1 -background none -fuzz 10% -transparent grey50 \) \
  \( -clone 2 -background none -fuzz 20% -transparent grey60 \) \
  -delete 0,1,2 -alpha extract -compose Multiply -composite \
  -negate mask.png

次に、マスクを画像のアルファチャネルとして割り当てます

convert source.png mask.png -alpha Off -compose CopyOpacity -composite out.png
于 2014-08-05T18:37:59.803 に答える