2

ランダムな色の値を受け入れ、最も近い原色を確認するメソッドを作成しようとしています。

ここに画像の説明を入力

その RGB 値を比較し、それらの原色の範囲内のどこにあるかを確認してから、赤、黄、青などに設定する必要があると思います.

これを行う最善の方法は何ですか?ありがとう

編集 この質問は重複としてマークされていますが、上記の重複した質問の他の回答を確認しましたが、求めている回答が得られません。

式を使用して

d = sqrt((r2-r1)^2 + (g2-g1)^2 + (b2-b1)^2)

異なる色に対して同じ値を生成することがあります。たとえば、 の入力色を使用しR170 : G0 : B255ます。R255 : G255 : B255白と赤の両方からの距離はR255 : G0 : B0、式を使用して (int)269 を生成します。では、赤と白、どちらの色に近いでしょうか。リストから黒と白を削除しましたが、他の色でも問題が発生します。

黒、白、赤、ライムなど、いくつかの色と比較しています。青、黄、シアン。こちらの RGB カラー テーブルに記載されているマゼンタとグレー

4

2 に答える 2

0

2 つの色を実際に比較したい場合は、RGB 色空間を使用しないでください。色の計算には適していません。

あなたの最善の策は、それを LAB 色空間に変換することです。ラボスペース

これを実現するには、RGB を XYZ 値に変換してから、これらを LAB に変換する必要があります。この計算は、次の Web サイトで確認できます: Bruce Lindbloom

LABカラーがあれば、差分式を選択できます。最も簡単なのは CIE74 ですが、最も正確な結果が必要な場合は CIEDE2000 を使用する必要があります。差分公式

私が取り組んだプロジェクトで過去 5 か月間、これらの数式を使用してきたので、何か助けが必要な場合はお知らせください。

于 2013-06-26T12:56:14.383 に答える