5

AndroidフォンでOpenCVを使用して、黒い背景に対してLEDの色を識別して区別しようとしていますが、現在苦労しています。これまでの私の調査では、2 つの別個の問題が指摘されています。

  1. OpenCV を使用すると、カメラはデフォルトで自動ホワイト バランスになっているように見え、特定の色を区別するのが難しくなります。ネイティブの Android カメラを使用すると、ホワイト バランスを「曇り」に設定すると、最高の画像が生成されるように見えます。
  2. OpenCV は RGB 色空間で画像を提供しますが、RGB は人間が知覚する色間の距離と一致しないため、ユークリッド RGB 距離メトリックは最適なソリューションではありません ( 2 つの色を比較する方法を参照)。

したがって、私は3つの質問があります:

  1. OpenCVによって返される結果の画像に影響を与えるように、Android JavaまたはOpenCVでカメラのホワイトバランスを設定する方法はありますか?
  2. そうでない場合、OpenCV イメージのホワイト バランスを変更するために (できれば Java で) 利用可能なアルゴリズムはありますか?
  3. 人間が知覚する色間の距離によりよく一致する代替色空間に RGB カラーを変換するために利用可能なアルゴリズムはありますか (ここでも、できれば Java で) はありますか?

ありがとう

4

3 に答える 3

1

質問 1 に対する私の回答 (つまり、質問 2 への回答は必要ありませんでした) は、OpenCV チュートリアル 3 コード (カメラ コントロール) の使用 ( OpenCV4Android サンプルを参照)を使用し、色効果メソッドを変更してホワイト バランスの設定を許可することでした。

public List<String> getWhiteBalanceList() {
    return mCamera.getParameters().getSupportedWhiteBalance();
}

public boolean isWhiteBalanceSupported() {
    return (mCamera.getParameters().getWhiteBalance() != null);
}

public String getWhiteBalance() {
    return mCamera.getParameters().getWhiteBalance();
}

public void setWhiteBalance(String whiteBalance) {
    Camera.Parameters params = mCamera.getParameters();
    params.setWhiteBalance(whiteBalance);
    mCamera.setParameters(params);
}

それが機能することがわかったら、正しいホワイト バランスを設定するための呼び出しをメイン スレッドに追加することができました。

mOpenCvCameraView.setWhiteBalance(Parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT);

質問 3 への回答として、カラー ロジック アルゴリズムの Java 回答を使用しました。

于 2013-03-30T12:18:04.653 に答える
0
  1. AndroidのCamera APIで制御できるかどうかは、カメラのデバイスドライバが関係していると思います。
  2. これは役に立ちます:色の検出

私はエレクトロニクスが好きなので、単純な光依存抵抗器はコードなしでそれを行うでしょう:)。

于 2013-03-25T13:03:41.773 に答える
0

黒の背景と異なる LED の色を識別するために、次のことを提案します。

  1. まず、OpenCV のcvtColor 関数を使用して、RGB を HSV 色空間に変換します。ここで HSV は色相 (赤、緑、黄、青など)、彩度 (色の彩度)、値 (明るさ) を表します。各 RGB 値を変換すると、HSV 値が得られます。RGB HSV と同様に、H、S、V の 3 つのチャネルがあります。

  2. 次に、LED の色に関心があるので、色相成分のみを分析して LED の色を決定してください。たとえば、色相チャネルにしきい値を設定し、画像のどの部分に色相が含まれているかを 10 から 25 などのように決定できます。しきい値処理された画像をプロット/印刷して、コードを確認します。

于 2013-03-26T19:34:57.867 に答える