ソフトウェアでの変換処理
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/02/28 04:50 UTC 版)
「HSV色空間」の記事における「ソフトウェアでの変換処理」の解説
以下の処理を行うことで変換することができる。 ※HSV/RGB全要素を0.0~1.0の浮動小数点数で表現した円柱モデルの場合 // (float r, float g, float b)float max = r > g ? r : g;max = max > b ? max : b;float min = r < g ? r : g;min = min < b ? min : b;float h = max - min;if (h > 0.0f) { if (max == r) { h = (g - b) / h; if (h < 0.0f) { h += 6.0f; } } else if (max == g) { h = 2.0f + (b - r) / h; } else { h = 4.0f + (r - g) / h; }}h /= 6.0f;float s = (max - min);if (max != 0.0f) s /= max;float v = max;
※この「ソフトウェアでの変換処理」の解説は、「HSV色空間」の解説の一部です。
「ソフトウェアでの変換処理」を含む「HSV色空間」の記事については、「HSV色空間」の概要を参照ください。
ソフトウェアでの変換処理
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/02/28 04:50 UTC 版)
「HSV色空間」の記事における「ソフトウェアでの変換処理」の解説
以下の処理を行うことで変換することができる。 ※HSV/RGBを0.0~1.0の浮動小数点数で表現した円柱モデルの場合[要検証 – ノート] // (float h, float s, float v)float r = v;float g = v;float b = v;if (s > 0.0f) { h *= 6.0f; final int i = (int) h; final float f = h - (float) i; switch (i) { default: case 0: g *= 1 - s * (1 - f); b *= 1 - s; break; case 1: r *= 1 - s * f; b *= 1 - s; break; case 2: r *= 1 - s; b *= 1 - s * (1 - f); break; case 3: r *= 1 - s; g *= 1 - s * f; break; case 4: r *= 1 - s * (1 - f); g *= 1 - s; break; case 5: g *= 1 - s; b *= 1 - s * f; break; }}
※この「ソフトウェアでの変換処理」の解説は、「HSV色空間」の解説の一部です。
「ソフトウェアでの変換処理」を含む「HSV色空間」の記事については、「HSV色空間」の概要を参照ください。
- ソフトウェアでの変換処理のページへのリンク