4

私はコンピューター サイエンスの最終学士号プロジェクトに取り組んでいますが、今のところ行き詰まっています。これが私が行き詰まったものです:

任意の色 (rgb コード) を 8 つの単純な色のいずれかに分類しようとしています。簡単に言えば、任意の色を配置して基本色 (赤、青、緑、黒、黄、紫、灰色、茶色) と見なすことができる 8 つの間隔を見つける必要があります。

例:
(18,218,23) は「緑」として分類されます
(81,,214,85) も「緑」
ですが、
(15,52,16) は「黒」である
必要があります (110,117,110) は「灰色」である必要があります

したがって、256 x 256 x 256 の可能な色があり、それらを 8 (間隔) の基本色に分割する必要があります。

いくつかの提案を待っています。

乾杯 !


明確にするために(コメントで見たように)、特定の8色(赤、黒、緑、茶色、青、紫、灰色、黄色)のセットを探しています。上のオレンジでごめんなさい!

4

5 に答える 5

8

RGB でこれを行わないでください。より便利な色空間に変換しますHSVがおそらく最も簡単です。8 つの「色」は、色相軸に沿った 8 つの間隔です。

于 2012-05-30T19:05:53.873 に答える
3

簡単な解決策は、特定の色としてラベル付けした定義済みのポイントからの距離を計算することです。これは完全な解決策ではありませんが、簡単な解決策であり、適切に機能するはずです。

長い答え:色空間は煩わしく、ラベルにうまく変換されません。

于 2012-05-30T18:49:50.480 に答える
3

あなたの例に基づいて、私はすべてのコンポーネントがほぼ同じであるか、または目立つかどうかを判断することから始めます。それらがほぼ同じである場合は、値が黒になるほど小さいかどうかを判断し、灰色になります。1つの値が他の2つと異なる場合は、どちらが異なるかを簡単に確認し、それに応じて6つの可能な色のいずれかを選択できます。

または、しきい値に応じて各コンポーネントを0または1に設定すると、8つの色にマップするための8つの組み合わせがあります。

threshold = 100:
(18,218,23)   -> (0, 1, 0) - to be classified as "green"
(81,214,85)   -> (0, 1, 0) - also "green"
(15,52,16)    -> (0, 0, 0) - to be "black"
(110,117,110) -> (1, 1, 1) - to be "grey"
于 2012-05-30T18:53:12.047 に答える
1

RGB はこの種のものには恐ろしいので、最初のステップは色をLab 色空間に変換することです。この変換の多くのオープンな実装をオンラインで見つけることができます。ラボの色ができたら、すべてが非常に簡単になります。3 つの値は 3 次元の座標になり、色に応じて簡単に分割できます - ウィキペディア リンクの画像を確認してください。

于 2012-05-30T19:02:09.923 に答える
0

配色についてはよくわかりませんが、ユークリッド距離を計算することは良い解決策です。

于 2012-05-30T19:11:08.627 に答える