ホームページ >バックエンド開発 >C++ >RGB を HSV に変換し、0 ~ 255 の範囲内で再度変換するにはどうすればよいですか?

RGB を HSV に変換し、0 ~ 255 の範囲内で再度変換するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-11 18:24:15823ブラウズ

How to Convert RGB to HSV and Back Again Within the 0-255 Range?

0 ~ 255 の範囲で RGB から HSV、HSV から RGB に変換

RGB (赤、緑、青) 間の色表現の変換HSV (色相、彩度、明度) は画像処理やコンピュータ グラフィックスに不可欠です。この変換では、正確な変換を保証するために、特定の範囲内のカラー値を変換する必要があります。

RGB から HSV への変換

RGB から HSV への変換には、次の手順が含まれます:

  1. RGB 値の正規化: RGB 値を次の値で除算します。 255 を使用して 0 から 1 の間でスケーリングします。
  2. 最小値と最大値の検索: RGB コンポーネントの最小値と最大値を決定します。
  3. 値の計算 ( V): 値は最大 RGB に等しいvalue.
  4. 彩度の計算 (S): 次の式を使用して彩度を計算します:

    S = (V - min) / V
  5. 色相の計算(H): 相対的な条件に基づいて条件文を使用して色相を決定します。 RGB コンポーネントの値:

    if (R >= G && R >= B):
     H = (G - B) / (V - min)
    elif (G >= R && G >= B):
     H = 2 + (B - R) / (V - min)
    else:
     H = 4 + (R - G) / (V - min)
  6. 度数に変換: 色相値に 60 を乗算して度数を取得します。

HSV RGB への変換

HSV からRGB 変換は次のように進行します:

  1. HSV 値の正規化: 色相が 0 ~ 360 度の範囲内にあり、彩度と値が 0 ~ 1 の範囲内にあることを確認します。
  2. 色相インデックスの検索: を決定します。色相の整数インデックス:

    i = int(H / 60.0)
  3. 小数部分の計算: 色相の小数部分を計算します:

    ff = H / 60.0 - i
  4. デフォルトの RGB を設定値:

    R = G = B = V
  5. RGB 値の計算: 色相インデックスに基づいて RGB 値を調整します:

    if (i == 0):
     B = p
    elif (i == 1):
     R = q
    elif (i == 2):
     G = p
    elif (i == 3):
     R = p
    elif (i == 4):
     B = t
    elif (i == 5):
     G = p
  6. RGB を正規化する値: RGB 値を 255 で乗算し、範囲を 0 ~ 255 に戻します。

以上がRGB を HSV に変換し、0 ~ 255 の範囲内で再度変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。