2

画像を読み込み、各ピクセルの色情報を見つける Java のプロジェクトを扱っています。青い色の範囲を使用して、空のように見える色の定義で空を検出する必要があります。当初は RGB を使用するのが最善のように思われましたが、これにはすべての青の色合い (数えきれないほど) の定義が必要になります。色ごとにHSVのしきい値が使用されている分析方法を見つけましたが、色の範囲を使用していくつかのライブラリをロードする方法、解決方法がわかりません。助けてくれてありがとう。

4

1 に答える 1

3

java.awt.Color静的メソッドを使用して、a を HSV 値に変換できますRGBtoHSB(...)。次に、色相を取得し、それを、目的のために「青」を構成する範囲の境界と比較できます-たとえば

private static final float MIN_BLUE_HUE = 0.5f; // CYAN
private static final float MAX_BLUE_HUE = 0.8333333f; // MAGENTA

public static boolean isBlue(Color c) {
  float[] hsv = Color.RGBtoHSB(c.getRed(), c.getGreen(), c.getBlue(), null);
  float hue = hsv[0];
  if (hue >= MIN_BLUE_HUE && hue <= MAX_BLUE_HUE){
    return true;
  } 
  return false;
}

と の開始値をいくつか提示しましたが、MIN_BLUE_HUEMAX_BLUE_HUEに設定する値は、「青」として受け入れる意思があるかどうかによって異なります。つまり、どれだけの緑または紫が存在する可能性があり、それでも空として受け入れられるのでしょうか?MIN_BLUE_HUEMAX_BLUE_HUE

于 2012-05-22T16:48:57.167 に答える