web-dev-qa-db-ja.com

HSB vs HSL vs HSV

私はc ++で非常に基本的なグラフィックスAPIの一部としてColorクラスを作成しています。そこで、Microsoftの.NETフレームワークを見てみることにし、ColorクラスにHSBの機能があることに気付きました。

次に、クラスでHSB、HSL、HSV、またはそれらすべてを提供すべきかどうかを判断するための調査を開始しました。

だから、私はHSB、HSL、HSVについて3つの質問があります:

  1. HSBはHSLと同じですか?

  2. そうでない場合、なぜHSBLまたはHSBLVがないのですか?

  3. これらの値を計算するさまざまな方法を見つけましたが、最速のものを見せてもらえますか?

34

HSBはHSLと同じですか?

いいえ、HSBはHSVと同じですが、HSLは異なります。これらはすべて、RGBカラーを表現するフレンドリーな方法として使用されます。 HSLとHSVに関するWikipediaの記事では、カラーシリンダーを使用した違いについて説明しています: HSLとHSV 値と明るさと明るさも異なります。

そうでない場合、なぜHSBLまたはHSBLVがないのですか?

要点がわかりません。 HSB/HSVとHSLは両方とも、任意のRGBカラーを表現できます。 BとLを独立して持つことは、それらが定義されている方法のため不可能です。特定のHSBの明るさと彩度は、固定の明るさに関連付けられています。実際、それらの間の変換は非常に簡単です。

これらの値を計算するさまざまな方法を見つけましたが、最速のものを見せてもらえますか?

RGBからHSBを計算するための同様の質問があります: 高速で最適化された正確なRGB <-> CのHSB変換コード Java実装が役立つかもしれません。 HSB/HSVとHSL間の変換については、 HSL vs HSB vs HSV を参照してください

38
JoseV
  1. HSB!= HSL && HSB == HSV
  2. HSBLおよびHSBLVは存在しません
  3. 変換方法は次のとおりです(wikiの詳細 HSL2RGB および HSV2RGB

HSV-> RGB(jsでの実装 ここ

enter image description here

RGB-> HSV(jsでの実装 ここ

enter image description here

1

元々、明るさと明るさの違いは。 「明度」は減法混色に、「明度」は加法混色に使用されます。プログラムがCMYKシステムのような減法混色を処理している場合、HSBを使用することをお勧めします。

0
aziz