2017-02-11 109 views
1

我試圖用相同的感知亮度生成RGB顏色。如何計算具有相同感知亮度的RGB值

函數R * 0.2126 + G * 0.7152 + B * 0.0722被稱爲計算給定RGB顏色的感知亮度(或等效灰度顏色)。

假設我們使用區間[0,1]的所有RGB值,我們可以計算出以下:

  • 黃色= RGB(1,1,0)=>亮度= 0.9278
  • 藍色= RGB(0,0,1)=>亮度= 0.0722

所以,爲了使黃色的色調與藍色一樣暗淡,我可以簡單地對每個RGB執行這種簡單的計算組件:

  • dim_yellow =黃色* 0.0722/0.9278

但是,這樣做相反的事時,因而「縮放」向上藍色到相同的感知亮度爲原始黃色,B成分明顯超過1,這無法顯示在電腦屏幕上。

我想從多餘的B組件中缺失的亮度可以「重新分配」到R和G組件,僞造更亮的藍色。那麼計算這些最終RGB值的最佳一般方法是什麼?

回答

0

我建議您使用HSV顏色模型而不是RGB,因爲您可以輕鬆地實現您只需修改值(亮度)組件的內容。 維基頁面還包含如何將RGB轉換爲HSV和背部

編輯: 嘗試使用CIELAB色彩空間,因爲它近似人的視覺

+0

我知道HSL和HSV,但他們沒有做什麼你建議。具有完全飽和度和值的藍色色調仍然會看起來是「更暗」或「更暗淡」,然後是具有完全飽和度和值的黃色色調。所以你的答案不能解決我的問題 – Askaga

+0

你是否嘗試過像CIELAB這樣的非線性空間? –

相關問題