2016-09-05 41 views
2

有沒有什麼辦法可以畫出看似平滑的色調坡道?繪製視覺上平滑的色調坡道?

例如,看看下面的圖片:

Hue ramp from Wikipedia 在我的sRGB校準的顯示器,我可以很清楚地看到這似乎是三角形的「峯」在60,180,和300°。同時,紅色,綠色和藍色之間的山谷似乎沒有太大變化 - 例如,110°和130°之間的差異在視覺上很少。

我想要做的是找出一種方式來生成色調漸變,看起來更光滑,顏色看起來更加無縫融合到彼此中。

有沒有辦法做到這一點?它不需要是線性色調斜坡,所以只要坡道的起點和終點都是紅色(0°/ 360°),我並不關心顏色真正落在哪裏。

+0

在處理視覺信息時,重要的是要明白,不僅顏色發射器(顯示器,紙張等)發出不同的顏色,而且人眼也會以不同的方式感知顏色。有些人可能在你的彩虹上看不到任何高峯,或在不同的地方看到它們。有關邊緣情況,請參閱[維基百科:色盲](https://en.wikipedia.org/wiki/Color_blindness)。參見[Wikipedia:Color vision](https://en.wikipedia。org/wiki/Color_vision)用於視覺生理學的介紹 – Drop

+0

也就是說,你的彩虹在數值上是完全「平坦」的(飽和度和數值是恆定的),但是你的眼球和大腦會非常均勻地感知它。綠色看起來平坦,因爲不同波長的綠色被認爲是相同的顏色。每個人都有一套獨立的參數,這就是爲什麼找到一個適用於每個人的「平坦」頻譜是不可能的。整個科學(眼科學)遠比您想要找到的簡單算法複雜得多。 – Drop

+0

在理想的世界中,您需要使用統一的色彩空間來生成您的斜坡,像CAM02-UCS或類似的Viridis,Matplotlib的感知均勻度是以這種方式生成的。一個不涉及的替代方案是在生成它之後在斜坡上運行一個大的水平高斯內核,它將使其平滑:http://imgur.com/Me1rlqM –

回答

1

如果您閱讀了HCL色彩空間(),您會發現它更符合人類對色彩的感知。在Anthony Thyssen的優秀筆記here中也對此進行了討論。

如果我讓在HSL色彩空間的色調斜坡,在終端這ImageMagick的命令:

convert -size 100x512 gradient: -rotate 90 \(+clone -fx "1" \) \(+clone -fx "0.5" \) -combine -set colorspace HSL result.png 

我得到這個:

enter image description here

然而,如果我構建在HCL色彩空間中,如下所示:

convert -size 100x512 gradient: -rotate 90 \(+clone -fx "1" \) \(+clone -fx "0.5" \) -combine -set colorspace HCL result.png 

我得到這個更平滑的斜坡:

enter image description here

ImageMagick的上述命令只需要創建一個黑白漸變,並用其作爲H通道,然後克隆該並將其設置爲「1」製作C頻道並再次克隆,並將其設置爲「0.5」以製作L頻道。然後將三個通道組合並保存爲sRGB輸出文件。

0

這可以很容易地在不同的顏色空間來完成:

HSV color space表示的值作爲三重態色調,飽和度,和值。通過保持飽和度和值不變,同時越過色相範圍,您會得到所需的條形圖。

維基百科和Algorithm to convert RGB to HSV and HSV to RGB in range 0-255 for both解釋瞭如何在hsv和傳統rgb(紅色,綠色,藍色)三元組之間進行轉換。

+0

我已經試過了,並且得到了與圖片相同的結果我附加,這是我不想要的...我正在尋找一種算法,創建一個更平滑的外觀,不一定會產生線性色調斜坡。 – CMPXCHG8B