2018年1月11日 星期四

04360783 沈郁翔 HW3:色階與曲線調整


色階與曲線的調整。由於在 Paint.net 中的曲線是我非常喜歡的功能。
一度想要實作,但總是沒什麼機會。這次趁著作業就順便做了。

(圖 1)Paint.net 曲線功能


對於,曲線功能來說,最關鍵的是插值。
由於我不能找到 Paint.net 的插值方法,所以我使用普通的拉格朗日插值(非重心):

(圖 2)當存在 k 個點 From wikipedia
(圖 3)插值多項式 From wikipedia

(圖 4)插值多項式中的函數 From wikipedia

利用迴圈就可以實做出來,唯一要注意的是隱含的數值轉換,
相除之後 float、double 跟 int 的對應、捨去關係,以及邊界處理。
通過函數 f(x) = min(255, max(0, x)) 處理邊界問題,其中 min、max 定義於 cmath 的 std 中。

(圖 5)原始圖片

(圖 6)Red 曲線上存在一個點,使圖片紅色分量上升

(圖 7)同時存在多個點的情況

(圖 8)三個分量都有做調整的情況
※ 注意圖中的 Red、Green 視窗是另外合成的
軟體實際上沒有實作同時顯示的功能
可以發現,對於任何分量的函數曲線的凹性是上凸時,
由於該色彩的分量增加,圖片的亮度就會上升,可以注意(圖 5)及(圖 6)的差異。

另外觀察(圖 7)可以發現,當曲線非遞增時,圖片的色彩會較不自然。

對於三個分量都有做調整時,也就是(圖 8)的情況。
雖然增加了 Red 分量,但 Green 與 Blue 都減少,使得整體的亮度下降。

但相較(圖 6)紅色明顯增加,由這裡可以發現,
如要增加單一分量而不要增加亮度,則三個曲線平均要剛好是 y = x 線性函數;
如果增加單一分量、而減少亮度,則應該降低另外兩個分量而非提升目標的單一分量。

沒有留言:

張貼留言