2012-02-16 42 views
8

我一直在試圖找出像Photoshop這樣的程序在使圖像的每個像素去飽和時使用什麼樣的數學算法。通過去飽和度,我的意思是將彩色圖像轉換爲灰度圖像並仍然保持色彩空間。我仍然在談論一幅RGB圖像,但是這幅圖像剛剛被去飽和,現在變成了黑色和白色。Photoshop使用什麼算法來淡化圖像?

有誰知道使用什麼樣的算法?

+0

我應該指定我正在尋找每像素級別的算法。例如,RGB(12,104,22)而不是整個圖像。 – 2012-02-17 00:03:06

+0

我希望這是有用的:http://en.wikipedia.org/wiki/Colorfulness - 那裏有關於RGB色彩空間的寶貴的一點,但有關其他色彩空間的很多細節... – sarnold 2012-02-17 00:13:50

+1

另一種選擇是調查GIMP源;那裏也有一個Desaturate工具,它可能足夠接近你。 – sarnold 2012-02-17 00:14:53

回答

11

去飽和度非常簡單。通常是類似G*.59+R*.3+B*.11

Photoshop也有一個B & W轉換工具,(基本上),讓你選擇每個因素。例如,您可以通過增加紅色的百分比,減少綠色和藍色的匹配來獲得紅色濾鏡的效果。

+1

是的,這是通過顏色變灰的常用公式。然後,您可以將其與原始顏色按比例混合,以獲得任意數量的去飽和度。 – 2012-02-17 03:38:58

+0

這完全不是Photoshops算法,但我只是使用程序Photoshop作爲參考。這個公式最終產生了一些不錯的結果。謝謝! – 2012-02-17 04:13:19

3

正如在評論中指出的,接受的答案並不是,公式使用的Photoshop。真正的Photoshop飽和度公式是最小RGB和最大RGB分量的平均值。

float bw = (fminf(r, fminf(g, b)) + fmaxf(r, fmaxf(g, b))) * 0.5f; 

我相信HSL在Photoshop中的操作是在min-max-hue空間中運行的,所以這個公式是爲速度選擇的。

+0

這比接受的答案更接近Photoshop。我使用虛幻引擎,其內置的去飽和函數產生與接受的答案相同的結果。但是,默認功能失去了圖像藍色區域的值,但Photoshop和這個公式使它們保持得很好。謝謝! – MrFlamey 2017-06-06 02:21:07