質問

画像処理を行っているのですが、CPU の計算時間の点でそれほど負荷がかからない自動ホワイト バランス アルゴリズムが必要です。何かお勧めはありますか?

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

役に立ちましたか?

解決

は比較的単純なアルゴリズムは、画面上の明るい及び暗い画素の(HSVまたはHSL)で色相を平均化することです。ピンチでは、唯一の最も明るいピクセルと一緒に行きます。明るいと暗いとの間の色相があまりに異なる場合、明るいピクセルと行きます。濃い黒の近くにある場合は、明るいピクセルと一緒に行きます。

なぜ暗いピクセルを見て?時々暗い周囲光や霧や霞で黒、およびヒントの近くにはない。

あなたが重いPhotoshopのユーザーなら、

このはあなたに意味を行います。写真のハイライトは、オブジェクトの基本色とは無関係(または弱関連)です。画像はすべてがCCDを圧倒しているように露出オーバーでない限り、彼らは、光の色かぶりのあなたの最高の表現である。

次に、全画素の色相を調整します。

あなたはRGB関数にHSVとHSVへの高速RGBが必要になります。 (しかし、多分あなたはLUTや線形補間の画素補正をRGBで作業することができます。)

あなたは平均画素の色や最も人気のある色で行きたくありません。その方法は、狂気に位置します。

すぐに明るい色(と最も暗い1)を見つけるために、あなたはRGBで作業することができますが、緑、赤、青のための乗算器を持っている必要があります。 RGBモニタに、255緑255青よりも明るい赤色255より明るいです。私は私の頭の中では良い乗算器を持っていたが、残念ながら、彼らは私の記憶を逃れてきました。あなたは、おそらく彼らのためのgoogleすることができます。

これは何のハイライトを持っていない画像に失敗します。マットは、例えば、壁を描きました。しかし、私はあなたがそれについて何ができるかわかりません。

<時間>

この単純なアルゴリズムを作るために多くの改良点があります。あなたは、アルゴリズムを実装した後、いくつかの明白なひねりを見つけるなど、グリッド、画像を複数の明るい画素を平均化し、各セルから明暗のピクセルをつかむことができます。

他のヒント

GIMPは明らかに自動ホワイトバランス調整のための非常に単純なアルゴリズムを使用しています。 http://docs.gimp.org/en/gimp-layer-white -balance.htmlする

  

ホワイトバランスコマンドが自動的に個別に赤、緑、青のチャンネルを延伸することによって、活性層の色を調整します。これを行うために、画像の画素のみが0.05%で使用される赤、緑、青のヒストグラムの各端部で画素の色を破棄し、できるだけ多くの残存範囲を伸ばし。結果は、負ストレッチコントラストと比較して、ヒストグラムを延伸するために使用される最小値と最大値に影響を与えない(等ダストの多分ビット)ヒストグラムの外縁に非常にまれに発生し、その画素の色です。 「ストレッチコントラスト」のような、しかし、得られた画像における色相シフトがあってもよいです。

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

@Charles馬は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)] )

それは、高速でシンプルだし、かなりまともな結果を提供します。

ホワイトバランスアルゴリズムは難しいです。例えば、フラッシュを使用したかどうかなど、及び光レベル

- でも、デジタルカメラは、彼らが絵に関する追加情報をたくさん知っているにもかかわらず、たまに間違っを取得します。

は、まず第一に、私は、赤、緑、青、及びちょうど平均使用しているホワイトバランス点として。それに制限を設定 - タングステン、蛍光、および夏時間のための範囲内にとどまります。これは完璧ではありませんが、その間違ったが、理由を説明することは比較的容易になりますときます。

最近公開されたアルゴリズムの 1 つは Color Distribution アルゴリズムで、ここで見つけることができます。 http://www.comp.nus.edu.sg/~brown/pdf/ColorConstancyJOSAv10.pdf この論文には、Matlab ソース コードへの参照もあります (http://www.comp.nus.edu.sg/~whitebal/illuminant/files/illuminantEstimator.m)。これは簡単にプログラムできるシンプルなアルゴリズムであり、結果からは非常に高速であることがわかります。

追加の高速かつ正確なホワイト バランス (色の恒常性) アルゴリズムが必要な場合は、次のサイトを確認してください。 http://www.fer.unizg.hr/ipg/resources/color_constancy/

いくつかのアルゴリズムがあり、それぞれのソース コードが記述されており、それらがちょうどあなたが探しているものになる可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top