LANGUAGE | スカ友 | 俺、関東の国王だけど 人類の品種 言葉の起源 虫は宇宙人です 日本語は海豚の言葉に由来します ペンギン(ウルトラマン) 関東無政府主義国へようこそ! simulationライブラリで純粋な関数式プログラミングを もっと見る
色彩学
0   関東の国王      2019年9月29日 日 19:10
//既知の(r,g,b)を、同じ明度の純色の(R,G,B)と同じ明度の灰色(k',k',k')が線型で混合されたものとします

k = max(r,g,b), K = max(R,G,B) //明度
max(k',k',k') = k' //(k',k',k')の明度はk'
K = k' = k <=> max(R,G,B) = k' = max(r,g,b)  (*式1*) //この三者は明度が同じです

min(R,G,B) = 0  (*式2*) //(R,G,B)が純色のため (*注1*)

(r,g,b) = s * [(R,G,B) - (k',k',k')] + (k',k',k')  (*式3*)
//このsを(r,g,b)の彩度と定義します

//しかも,(R,G,B)->(r,g,b)との過程は、色相が無い灰色が混ざり入っているだけです
//よって色相は変わってはいません、つまり、色相(R,G,B) = 色相(r,g,b)
//すると、純色(R,G,B)は(r,g,b)の色相を表します
//厳密には、色相は明度と関係無いため、(1/K)*(R,G,B)で色相を表すべきです

//式2、式3により
=> min(r,g,b) = s * [min(R,G,B) - k'] + k' = 0 - s*k' + k''
=> s = [k' - min(r,g,b)] / k'
=> s = [max(r,g,b) - min(r,g,b)] / max(r,g,b)  (*式1によります)

//式3は即ち
(R,G,B) = (1/s)*(r,g,b) - (1/s-1)*(k',k',k')
=> (R,G,B) = max(r,g,b) / [max(r,g,b) - min(r,g,b)] * (r,g,b)
             - min(r,g,b) / [max(r,g,b) - min(r,g,b)] * (k',k',k')
           = max(r,g,b) / [max(r,g,b) - min(r,g,b)] * (r,g,b)
             - min(r,g,b) / [max(r,g,b) - min(r,g,b)] * (max(r,g,b),max(r,g,b),max(r,g,b))

//しかも、次の関係が成り立ちます
//先ず、mid(x,y,z) = x + y + z - max(x,y,z) - min(x,y,z) とします
//便利上、max(R,G,B) mid(R,G,B) min(R,G,B) を MX, MD, MN と書きます
//max(R,G,B) mid(R,G,B) min(R,G,B) を mx, md, mn と書きます
MD   md*mx/(mx-mn) - mx*mn/(mx-mn)   md - mn
-- = ----------------------------- = -------
MX   mx*mx/(mx-mn) - mx*mn/(mx-mn)   mx - mn


(*注1*)
// もしmin(R,G,B)?0ならば、必ず(R,G,B)の中から灰色の(x,x,x) (x>0)を分解し出せます
// そして(R,G,B)は純色(何の灰色も混ざり入っていません)のため、必ずmin(R,G,B)=0が成り立ちます
ヒント: 今海豚がピザハットに出資しています
名前      編集用パスワード(省略可)    パスワードの記憶
数式 αβγ IPA http:// 画像 B I U
(添付ファイルは http://up.x0000.net/ にアップロードしてください)