2012-06-29 6 views
5

私はRGBの16進数の色の配列を持っています。 色の類似性としきい値でグループ分けする、すばやく汚い方法を探したいと思います。しきい値を使って同様のHEXカラーを見つける

スペック:enter image description here

+0

http://ja.wikipedia.org/wiki/Color_quantizationまたは、http://www.php.net/manual/en/function.imagetruecolortopalette.phpで試してみることができます – biziclop

+0

色相、彩度、および値をいくつかの色で比較できるように、私はyooがHSVモデルを使用することをお勧めします。 – TheZ

答えて

3

間に合わせ:

$dr = $red1 - $red2; 
$dg = $green1 - $green2; 
$db = $blue1 - $blue2; 
$fr = 2; // may be adjusted 
$fg = 4; // " 
$fb = 1; // " 
$distance_squared = $fr * $dr * $dr + $fg * $dg * $dg + $fb * $db * $db; 

その後、しきい値の二乗に$distance_squaredを比較します。ファクタは調整することができます(特に青はより高いファクタを得るかもしれません)。その合計(しきい値と一致するように)

「遅くてきれいな」解決策については、hereより実用的なアプローチ)。

1

color spaceを選択し、定義する "類似性" として、例えばEuclidean 2色の座標間の距離。例えば、HSL/HSVはRGBよりも良い選択かもしれません。

+0

私はあまりにもそれを考えました。 誰かが便利なのであれば式を探して;-) – Arturino

+0

@Artur:何の式ですか?例: HSVはWikipediaの記事に記載されています。ユークリッド距離は単にsqrt((a1-a2)^ 2 +(b1-b2)^ 2 +(c1-c2)^ 2)です。 –

+1

ありがとう - 私はまた、これが役に立つと知った:http://stackoverflow.com/questions/1633828/distance-between-colours-in-php/1634206#1634206 – Arturino

関連する問題