0

PHPで画像の大部分の色を計算するにはどうすればよいですか?同じような色のさまざまな色合いを1つのバケットにグループ化したいので、たとえば、すべての青の色合いは「青」としてカウントされます。

つまり、画像を取得して次のような単純な配列を返す関数が必要です。

"blue":90%, "white":10%

高精度は必要ありません。ドミナントカラーとサブドミナントカラーで画像を分類するのに十分です。ありがとう!

4

1 に答える 1

2

1 つのアプローチを次に示します。

1) セントロイドと呼ばれる一連の色を定義します。これらは、画像を分解したい基本色の中間です。たとえば、k-meansなどのクラスタリング アルゴリズムを使用してこれを行うことができます。これで、たとえば 100 個のセントロイド (バケツ、バケツと考えることができます) が得られました。それぞれは、手動で名前を付けることができる RGB カラー トリプルです。

2) 新しい画像のヒストグラムを生成するには:

  • gdなどで画像を開きます
  • ピクセル値の配列に変換します (例: imagecoloratを使用)
  • ピクセル値とすべての重心の間の距離 (ユークリッド距離は問題ありません) を決定します。どのバケットに最も近いかについて、各ピクセルを分類します。
  • 出力は、各ピクセルの重心割り当てです。または、ヒストグラムが必要な場合は、各セントロイドが何回発生するかを数えることができます。

この種の色の割り当ては、やや主観的なものであることに注意してください。色から名前への決定的なマッピングがあるかどうかはわかりません (たとえば、言語に依存します)。しかし、Google で検索すると、使用できるルックアップ テーブルが存在する可能性がありますが、私は見つけたことがありません。

お役に立てれば!

ベン

于 2012-05-13T06:03:13.110 に答える