2010-12-05 44 views
9

基本上,我想要做的是瞭解如何計算值一起這裏代表了Photoshop的曲線框「曲線」背後的數學:如何重建的Photoshop曲線

Photoshop Curves

所以,給定N個點,其中x在0和1之間,y在0和1之間 - 我們將創建一條穿過所有這些點的曲線。鑑於此曲線,我希望能夠計算任何給定X的曲線的所有值。

換句話說,我想修改顏色的值,就像曲線框一樣,但以編程方式。

我讀過這些是「catmull-rom splines」 - 但我看到的是一個依賴於參數T的函數 - 我希望能夠查找x的值。我想如果可能的話

+1

我覺得Photoshop使用自然三次樣條 - http://blog.mackerron.com/2011/01/01/javascript-cubic-splines/ – 2012-11-21 01:26:16

+0

什麼多項式? – 2018-02-07 13:19:57

+0

對不起,我不知道樣條和多項式之間的關係。樣條線可能會更好。 – 2018-02-08 06:55:48

回答

3

一個的Catmull-Rom樣條被使用,因爲它是一種花的代表的曲線,可以在其中添加控制點和細化曲線本身(這是你在Photoshop中做什麼,當你點擊添加新點),具有讓曲線通過您指定的每個控制點的特殊性。

在任何情況下,你只需要一個(在你有0..255或任何色彩空間漂浮在0..1或INT)所值的函數會產生一個又一個。

float fun(float x) { 
    y = /* something */ 
    return y; 
} 

這當然可以用任何一種功能來完成。最基本的一個是默認的一個是身份的功能

float fun(float x) { 
    y = x; 
    return y; 
} 

任何其他功能可與曲線來計算,這將是確定,但更復雜的發展,我建議你從喜歡簡單的例子開始貝塞爾曲線。在任何情況下t參數的使用,因爲這些參數曲線,你需要了解一些曲線的數學背景的挖掘到開發之前,先看看here

0

我不熟悉的CR爲此在C,但如果它像貝濟耶,比T參數從0在彎道路段的一個端點在另一端點變化到一個。這就是你如何「順着」曲線。所以,你不能只是插上你在一個x值,你可以品嚐長一些任意的間隔,也可以使用某種目標搜索算法接近給定的x值到任何精密量你認爲有必要。

+0

我要說更喜歡花鍵比貝塞爾,作爲線穿過控制點。 – ysap 2010-12-05 17:41:18