30

私はいくつかの画像処理を行っていますが、CPU の計算時間に関してあまり集中的でない自動ホワイト バランス アルゴリズムが必要です。推奨事項はありますか?

編集:効率に関連する場合は、カラー画像を整数の配列としてJavaで実装します。

4

5 に答える 5

24

GIMP は、自動ホワイト バランスに非常に単純なアルゴリズムを使用しているようです。 http://docs.gimp.org/en/gimp-layer-white-balance.html

ホワイト バランス コマンドは、赤、緑、青のチャンネルを個別にストレッチすることで、アクティブなレイヤーの色を自動的に調整します。これを行うために、画像内のピクセルの 0.05% のみで使用される赤、緑、および青のヒストグラムの両端にあるピクセルの色を破棄し、残りの範囲を可能な限り拡大します。その結果、ヒストグラムの外側のエッジ (おそらくほこりなど) で非常にまれに発生するピクセルの色は、Stretch Contrast と比較して、ヒストグラムのストレッチに使用される最小値と最大値に悪影響を与えません。ただし、「ストレッチ コントラスト」と同様に、結果の画像に色相の変化が生じる場合があります。

この作品を実装する私の最初の試みはほとんどの写真でうまくいくようですが、他の写真にはアーティファクトがあるか、赤緑または青のいずれかが多すぎるように見えるため、ここで説明されているよりも少し微調整があります:/

于 2009-07-24T12:34:53.823 に答える
22

比較的単純なアルゴリズムは、画面上の最も明るいピクセルと最も暗いピクセルの色相 (HSV または HSL) を平均化することです。ピンチでは、最も明るいピクセルのみを使用してください。最も明るいピクセルと最も暗いピクセルの色相があまりにも異なる場合は、明るいピクセルを使用します。暗い部分が黒に近い場合は、明るいピクセルを使用します。

なぜ暗いピクセルを見るのでしょうか? 暗闇が黒に近くない場合があり、周囲の光や霧、もやを暗示しています。

これは、Photoshop を頻繁に使用するユーザーにとっては理にかなっているでしょう。写真のハイライトは、オブジェクトの下にある色とは無関係 (または弱い相関) です。画像が過度に露光されてすべてが CCD を圧倒している場合を除き、それらは光の色かぶりの最良の表現です。

次に、すべてのピクセルの色相を調整します。

RGB から HSV および HSV から RGB への高速な関数が必要です。(ただし、LUT または線形補間を使用してピクセル補正を RGB で行うこともできます。)

平均的なピクセルの色や最も人気のある色に頼る必要はありません。その方法は狂気です。

最も明るい色 (および最も暗い色) をすばやく見つけるには、RGB で作業できますが、緑、赤、青の乗数が必要です。RGB モニターでは、255 緑は 255 赤よりも明るく、255 青よりも明るいです。以前は頭の中に良い乗数がありましたが、悲しいことに、それらは私の記憶から逃げ出しました。あなたはおそらくそれらをググることができます。

これは、ハイライトのない画像では失敗します。たとえば、つや消し塗装の壁。しかし、私はあなたがそれについて何ができるかわかりません。


この単純なアルゴリズムには、多くの改善点があります。複数の明るいピクセルの平均化、画像のグリッド化、各セルからの明るいピクセルと暗いピクセルの取得などを行うことができます。アルゴリズムを実装すると、明らかな微調整がいくつか見つかります。

于 2009-07-24T01:49:52.627 に答える
12

@Charles Ma は、Gimpホワイト バランス アルゴリズムの使用を提案しています。でpythonnumpyこれは次のようになります。

# white balance for every channel independently
def wb(channel, perc = 0.05):
    mi, ma = (np.percentile(channel, perc), np.percentile(channel,100.0-perc))
    channel = np.uint8(np.clip((channel-mi)*255.0/(ma-mi), 0, 255))
    return channel

image = cv2.imread("foo.jpg", 1) # load color
imWB  = np.dstack([wb(channel, 0.05) for channel in cv2.split(img)] )

高速でシンプルで、かなりまともな結果が得られます

于 2016-06-16T09:03:35.537 に答える
3

ホワイトバランスのアルゴリズムは難しいです。デジタル カメラでさえ、フラッシュが使用されたかどうか、光のレベルなど、写真に関する多くの追加情報を知っていても、時々間違ってしまいます。

まず、赤、緑、青を平均して、それをホワイト バランス ポイントとして使用します。それに制限を設定します - タングステン、蛍光灯、および日光の範囲内にとどまります。完璧ではありませんが、間違っている場合は、その理由を比較的簡単に説明できます。

于 2009-07-24T01:50:48.257 に答える
3

最近公開されたアルゴリズムの 1 つは、Color Distribution アルゴリズムです。

D. Cheng、DK Prasad、および MS Brown、
「色の恒常性のための光源推定: 空間ドメイン法が機能する理由と色分布の役割」
Journal of the Optical Society of America A 31 (5):1049-1058 (2014)
土井PDF

この論文には、Matlab ソース コード(Internet Archive) への参照もあります。これは簡単にプログラムできる単純なアルゴリズムであり、結果は非常に高速であることを示しています。

追加の高速で同時に正確なホワイト バランス (色の恒常性) アルゴリズムが必要な場合は、このサイトを確認してください。

それぞれのソースがコード化されたいくつかのアルゴリズムがあり、それらはまさにあなたが探しているものかもしれません。

于 2014-05-11T07:33:43.633 に答える