2009-11-24 13 views
5

イメージの中で最も使用されている色、または少なくともプライマリトーンを抽出したい 私はこのタスクをどのように開始できますか?または同様のコードを私に指摘してください。私はそれを探しているが成功していない。イメージから色を抽出する

+1

あなたはどの言語やフレームワークを使用していますか? – jheddings

+0

答えは、環境に大きく依存します。 –

+0

さて、私は概念の証明のためだけに処理を考えていましたが、それをバッチ処理のためにPythonに翻訳しました – biquillo

答えて

4

Octree Color Quantization algorithmを使用すると、非常に良い結果が得られます。他の量子化アルゴリズムはWikipediaにあります。

+0

これはまさに私が探していたものです!どうもありがとうございました! – biquillo

+0

@dineshprasannaの客観的なサンプルコードを – dineshprasanna

+0

に送ることができますか? Googleが手助けできない場合は、リンクに記載されている情報を使用して自分で作成する必要があります。 –

3

私はコメントに同意します。プログラミングの解決策にはもっと詳しい情報が必要です。しかしそれまでは、画像の各ピクセルのRGB値を取得すると仮定すると、各ピクセルの「トーン」を表現すると言われるHSV colorspaceを考慮する必要があります。 histogramを使用して、画像内で最も使用頻度の高いトーンを特定できます。

+0

NB by "HSV colorspace"あなたはおそらく "HSVモードのRGBモデル"と言っています - HSV(およびその兄弟のツインHSL) color _model_; RGBモデル(または、誤って "RGB color space")を参照している人は、CIE-XYZ'39 color _space_の値の表現を扱っています。 – fish2000

1

まあ、私はあなたが各ピクセルのRGBカラーにアクセスできると仮定します。あなたがそれを望む方法に応じてあなたはそうすることができる2つの方法があります。

まず、すべてのピクセルのR、G、Bのうちのいくつかを作成するだけです。

擬似コード。


int Red = 0; 
int Green = 0; 
int Blue = 0; 
foreach (Pixels as aPixel) { 
    Red += aPixel.getRed(); 
    Green += aPixel.getGreen(); 
    Blue += aPixel.getBlue(); 
}

次に参照してください。

これはあなただけが赤、緑、または青の画像を与える。

別の方法では、各RGBの組み合わせのヒストグラムを作成するだけで、結合された色も(オレンジのように)静的になります。

擬似コード。


Map ColorCounts = new(); 
foreach (Pixels as aPixel) { 
    const aRGB = aPixel.getRGB(); 
    var aCount = ColorCounts.get(aRGB); 
    aCount++; 
    ColorCounts.put(aRGB, aCount); 
}

次に、どれが多いかを確認します。 また、通常のRGBカラーリングで最大670万色が得られるので、カラー解像度を下げることもできます。

これは、色の範囲にRGBを指定することで簡単に行うことができます。例えば、RGBは8段階ではなく、256とする。

擬似コード。



function Reduce(Color) { 
    return (Color/32)*32; // 32 is 256/8 as for 8 ranges. 
} 
function ReduceRGB(RGB) { 
    return new RGB(Reduce(RGB.getRed()),Reduce(RGB.getGreen() Reduce(RGB.getBlue())); 
} 

Map ColorCounts = new(); 
foreach (Pixels as aPixel) { 
    const aRGB = ReduceRGB(aPixel.getRGB()); 
    var aCount = ColorCounts.get(aRGB); 
    aCount++; 
    ColorCounts.put(aRGB, aCount); 
}

次に、最も多く含まれる範囲を確認できます。

これらの手法があなたにとって理にかなっていることを願っています。

+0

ニース!本当にありがとう、本当にありがとう! – biquillo

関連する問題