色を比較し、アレイ内の最も近い一致を識別することは、グラフィックスアプリケーションで一般的なタスクです。この記事では、これを達成するために3つの異なる方法を調べます。色相のみの比較:
この方法は、色のRGB値間の直接距離を測定します。色の差は、RGB空間のユークリッド距離として計算され、この違いを最小限に抑えることで最も近い色が見つかります。重み付き色相、飽和、および明るさの比較:
この方法は、色合い、飽和、および明るさを加重方法で組み合わせます。知覚された明るさが計算され、飽和と明るさに基づいて色の数が計算されます。最も近い色は、色の差と色相距離の加重合計を最小化することによって決定されます。 int coldestcolor1(list
ヘルパー機能
//知覚される色の明るさ: Float GetBrightness(Color C)=>(C.R * 0.299F C.G * 0.587F C.B * 0.114F) / 256F; // 2つの色相間の距離: float gethuedistance(float hue1、float hue2)=> math.abs(hue1 -hue2)> 180? 360 -math.abs(hue1 -hue2):math.abs(hue1 -hue2); //飽和と明るさによって計量されています: float colornum(color c)=> c.getSaturation() * factorsat getbrightness(c) * factorbri; // RGBスペースの距離: int colordiff(color c1、color c2)=>(int)math.sqrt((c1.r -c2.r) *(c1.r -c2.r)(c1.g -c2.g) *(c1.g -c2.g)(c1.b -c2.b) (c1.b)色距離メトリックの選択は、特定のアプリケーションによって異なります。色相が主な考慮事項である場合、色相のみの比較で十分です。より一般的な色のマッチングのために、RGB距離または加重色相、飽和、および明るさの比較方法は、より正確な結果を提供します。免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3