色の数学

2025 - 11 - 12

13時に起きたが腹痛がひどかった。昔買ったエビオス飲んでみた。一回10錠って怖すぎない?

寝直して、17時になったら腹痛は収まっていた。椅子に座って作業を始めた。

部屋を閉鎖する仕組みについて、実装を進めている。牛歩。今日は3時間ほど作業ができた。一日でもがーっと作業量を稼げたら、その日だけで完結しそうなタスクなんだけど。まあいいや。昨日の椅子の上で悶えていた時間がなかったぶん、今日は昨日より良い日だった。

色のHSV空間について、S(彩度)とV(明度)はそれぞれ独立の値じゃないことを知った。

僕が主に使っているお絵描きソフトのProcreateでは色指定の際に四角形のSV座標から色を選択する。だから縦軸の明度と横軸の彩度は線形独立だと勘違いしそうになる。でもたしかに明度を0とすると、彩度の値がいくつであっても同じ真っ黒だ。底辺は別に辺である必要はない。一点で構わないのだ。おそらくこの正方形は、下に行けば行くほど無駄に横に引き伸ばされている。

拾い画像だけれど、これの右図ように三角形から色を指定するUIもある。三角形のほうが、正方形よりも色の分布密度は一様に近そう。三角形ということは、彩度と明度は独立じゃなく、二つのあいだを取り持つ関係式があるということだ。

ある色のRGB値をそれぞれ\(r,g,b(0\leq r,g,b\leq1)\)とすると、HSV空間にはそれぞれこのように変換されるらしい。

\[H=\begin{cases}
60 \times \dfrac{g-r}{\mathrm{max}(r,g,b)-\mathrm{min}(r,g,b)}+60 & \mathrm{min}(r,g,b)=b\quad\text{のとき}\\
60 \times \dfrac{b-g}{\mathrm{max}(r,g,b)-\mathrm{min}(r,g,b)}+180 & \mathrm{min}(r,g,b)=r\quad\text{のとき}\\
60 \times \dfrac{r-b}{\mathrm{max}(r,g,b)-\mathrm{min}(r,g,b)}+360 & \mathrm{min}(r,g,b)=g\quad\text{のとき}\\
\mathrm{undefined}&\mathrm{min}(r,g,b)=\mathrm{max}(r,g,b)\quad\text{のとき}
\end{cases}
\]

\[V=\mathrm{max}(r,g,b)\]

\[S=\mathrm{max}(r,g,b)-\mathrm{min}(r,g,b)\]

Hの値はごちゃごちゃしてるけど、要は0から360までに色相を割り当てているだけ。360を越えたら0に戻るようにモジュロ演算している。それよりも、VとSの関係をみると、これは確かに領域が三角形になりそうな式をしていることがわかる。

VS座標をこのようにつくると、\(S=V-\mathrm{min}(r,g,b)\)なので、単純な一次関数の直線が引けた。傾きは\(1\)で、S切片は\(-\mathrm{min}(r,g,b)\)。\(\mathrm{max}(r,g,b)\geq \mathrm{min}(r,g,b)\)であることに注意すると、\(S\geq 0\)の直線部だけがSの取りうる値ということになる。

グラフSの線分を、\(\mathrm{min}(r,g,b)\)を0から1までの間で動かすと、この直角二等辺三角形の領域が得られる。ここがSとVの値が取りうる範囲ということだね。たしかに明度と彩度の関係を考えると、色指定範囲は四角形じゃなくて三角形で十分だということになる。なるほどー。色指定UIでよく見る三角形は便利のために正三角形にスケールされていることが多いけれど、(SVの)密度をより一様に表せているのは直角二等辺三角形ということになるかな。←わからん

ところで、Procreateなど、三角形でなくて四角形で表すモデルは円柱モデルといって、これもHSV空間の表し方としてはポピュラーらしい(三角形の方は円錐モデルという)。円柱モデルはSの表しかたが違う。

\[S=\dfrac{\mathrm{max}(r,g,b)-\mathrm{min}(r,g,b)}{\mathrm{max}(r,g,b)}\]

円錐モデルの結果を最大値で割っている感じだ。これもグラフに書いてみる。

\(\mathrm{min}(r,g,b)\)の値に応じてSの曲線はこんなふうに変化する。結果、SVの値が取りうる領域はたしかに辺々\(1\)の正方形になりそうだ。

色をコンピュータ上で表す方法についていろいろ調べていたら、なかなか深淵だった。人間が検知できる色の輝度は色相によって異なる。三種類の錐体細胞の感度が異なるからだ。コンピュータが表現する色は、人間に見える色のすべてまでは網羅できていない。色の値の取り方には様々ある。カラープロファイルというのがいろんな種類あって、それらによって表現できる色の範囲が変わってくる。

色。

お絵描き。今日は作業したあと、人生で初めて絵チャというのをやった。お絵描きチャット。同人系のお友達と8人くらいで。何もしなくてもキャンバスのあちこちが絵で埋め尽くされていくので面白かった。みんな描き方が違った。

絵チャがぼちぼち終わったところで、どっと疲れが出た。大人数のなかで話すとき、確実にそれ用の消耗の激しいエンジンが稼働している。それと、常にぽっかりとした寂しさを感じ続けていたような気がする。すごく楽しかったけれど、休憩が必要だな。

寝る。

最近ヨーロッパ各国で右傾化が進んでいるってニュース解説で言ってた。移民流入や格差への不安から、ポピュリズムを汲んだ右派が人気を勝ち取るようになってきてる。ドイツには「西高東低の格差」というのがあるらしい。統一前に東ドイツだったエリアは、当時の社会主義計画経済の余韻で旧西ドイツよりもいまだに経済的に遅れをとっているんだって。ははぁ。ヨーロッパに限らず、アメリカも日本も右傾化してるよね。