的純顏色我有一些RGB LED,並且我想有他們顯示隨機顏色。生成相等的亮度(用於顯示關於LED)
我的第一種方法是從0-360選擇一個隨機色調ħ,創建的形式(ħ,1,1),然後從HSV轉換使用the algorithm given on Wikipedia RGB的HSV色彩。這幾乎做我想要的,但不完全。
的問題是,LED可顯示爲亮或更暗,這取決於色調。無論色調如何,我都希望它始終顯示爲相同的亮度。
因此,舉例來說,藍色爲(0,0,1)在RGB空間,但是青色將是(0,1,1)。如果我們假設所有三個原色都同樣明亮,那麼青色是藍色的兩倍。
我要的是在RGB空間一些地方的藍色將是(0,1,0)和青色爲(0,0.5,0.5),使初選的總和始終是1.0。
我可以使用如下的算法劈東西一起很容易:
- 送在0和1
- 之間的值X拾取三原色之一,並將其設置爲X。
- 挑選剩下的兩個基色中的一個,並將其設置爲1 - X。
- 將第三小學爲0
我的問題是:有沒有更原則性的方式做到這一點?是否有一些顏色空間的行爲符合我的要求?
結論: @Vincent van der Weele有我需要進行標準化的重要洞察力。而@Stefan Haustein的亮度是另一種說同一件事的方式,同時也爲不同的初選加入不同的權重。但是,這些特定的權重並不適用於我的情況。在實驗中,我選擇了R,G和B的0.3,0.25和0.2的權重。而且在實驗上,我選擇了2.0的伽馬(與原來使用的2.8相反)。這還不完美,但比以前好了很多。我想這只是自然凌亂。
難道你不能把輸出作爲一個後處理步驟,用'R + G + B'除每個'R','G'和'B'來標準化嗎? –
雖然這是一個編程組件,但是顏色和亮度/亮度匹配的整個主題是一個不同的領域,它也帶來了眼睛的受體和整個書本和論文的整個領域。我不認爲這是一個合適的SO問題。 – Rob
問題是(0,1,0)很亮,但(0,0,1)很暗。 –