⚠️ これは 非公式の翻訳サイトです。ImageMagick Studio LLC とは無関係です。正確な情報は 原文(https://imagemagick.org/color-thresholding/) を参照してください。

カラーしきい値処理

カラーしきい値処理を使うと、色の範囲を指定して白黒画像を返せます。開始色と終了色の間(両端を含む)のすべての色は白になり、それ以外の画像ピクセルは黒になります。2 つの色はハイフンで区切ります。しきい値処理は既定で sRGB 色空間で行われます。別の色空間(現在は sRGB, Gray, HSV, HSL, HCL, HSB, HSW に限定)でしきい値処理を行うには -colorspace を使います。開始色・終了色は(ImageMagick が認識する)任意の色空間で指定できますが、一般には -colorspace オプションに対応する色空間で指定することを推奨します。Gray 色空間では、開始値を終了値より小さくしてください。なお、色相は循環的で、0 と 360 は同じです。ただし、開始色相値が終了色相値より高ければ、色相 = 0 をまたぐ色範囲も依然として有用な場合があります。

開始色・終了色の色空間と画像の色空間を混在させる際は注意が必要です。ある色空間で広い範囲が、別の色空間ではごく狭い範囲にしかマップされないことがあります。たとえば、-colorspace HSV を使っていても、sRGB(0,0,0) から sRGB(255,255,255) はすべての色を捉える白い画像を生むと素朴に考えるかもしれません。しかしこの 2 色は黒と白で、hsv(0,0%,0%) と hsv(0,0%,100%) としてグレースケールの範囲にしかマップされません。カラー画像では、グレーのピクセルはそれほど多く見つからないでしょう。

カラーしきい値処理の動作を示すため、この画像を使います:

convert input-image -colorspace XXX -color-threshold "start - stop" output-image

以下は典型的な使用例です:

[Color Thresholding]

まず 1 つの sRGB 色を選び(画像のどこか、この場合は花の黄色)、低い側と高い側にオフセットして 2 つの sRGB 色を作ります。低い値が開始色、高い値が終了色を成します。sRGB(183,132,20) から始めます。値を +-20 オフセットして開始色(-)と終了色(+)を識別します。つまり R=183+-20、G=132+-20、B=40+-20:

magick monet.jpg -color-threshold 'sRGB(163,112,0)-sRGB(203,152,40)' monet.gif

これは黄色い花びらの輪郭を返します:

[Color Thresholding]

次に、2 つの RGB 色を選びます: sRGB(159,150,0) と sRGB(205,100,45):

magick monet.jpg -color-threshold 'sRGB(159,150,0)-sRGB(205,100,45)' monet.gif



![\[Color Thresholding\]](https://imagemagick.org/image/color-thresholding-rgb.gif)




次に、1 つの sRGB 色を選んで HSV に変換し、その値を低い側と高い側にオフセットして開始・終了の HSV 色を生成します。画像を HSV に変換するには -colorspace HSV を使います。HSV の例では sRGB(183,132,20) を選んで HSV に変換します:






magick xc:"srgb(183,132,20)" -colorspace HSV txt:
# ImageMagick pixel enumeration: 1,1,65535,hsv
0,0: (41.227,89.071%,71.7647%) #1D51E405B7B7 hsv(41.227,89.071%,71.7647%)

次に、その HSV 値を H=41+-20、S=89+-10、V=72+-10 とオフセットして、開始色(-)と終了色(+)を作ります:

magick monet.jpg -colorspace HSV -color-threshold 'hsv(21,79%,62%)-hsv(61,99%,85%)' monet.gif

[Color Thresholding]

次に、2 つの RGB 色を選びます。画像を HSV に変換するため -colorspace HSV を使い、RGB の開始・終了色を適用します。sRGB(158,77,33) と sRGB(213,217,2) を選びます:

magick monet.jpg -colorspace HSV -color-threshold "sRGB(158,77,33)-sRGB(213,217,2)" monet.gif

期待される結果は次のとおりです:

[Color Thresholding]

次に、2 つの sRGB 色を選んでグレーに変換します。次に画像をグレーに変換し、グレーのしきい値色を使います。

magick xc:"sRGB(159,150,0)" -colorspace gray txt:
# ImageMagick pixel enumeration: 1,1,65535,gray
0,0: (36259.1) #8DA38DA38DA3 gray(55.3278%)

magick xc:"sRGB(205,100,45)" -colorspace gray txt:
# ImageMagick pixel enumeration: 1,1,65535,gray
0,0: (30418.2) #76D276D276D2 gray(46.4152%)

開始強度が終了強度より小さくなければならない点に注意してください:

magick monet.jpg -colorspace gray -color-threshold 'gray(46.4152%)-gray(55.3278%)' monet.gif

カラーしきい値処理操作の結果は次のとおりです:

[Color Thresholding]