01360494 林杰儒 作業3
一開始將畫面讀入
右下角與圖片的Image利用PageControl存Level,Curve的調整介面 以及 原圖,修改後的圖片
利用Level的輸入上下界及輸出上下界調整色彩值
將輸入輸出的上下界四個Edit值帶入程式中,再與原本圖片的色彩質做比較
如果輸入上界比原色彩值低,就將輸出上界取代原色彩值
如果輸入下界比原色彩值高,就將輸出上界取代原色彩值
如果在範圍之中,就帶入公式
iOutput = iOutputMin + (iInput - iInputMin) * ((iOutputMax - iOutputMin)/
(iInputMax - iInputMin));
再將修改完的色彩值輸出就可以了
利用Curve來調整色彩
將曲線往上拉達到變亮效果
將曲線往下拉達到變暗效果
對於Curve來說,只要將曲線畫出來,在將曲線上每一點的值取代原圖就可以了
但由於是一個拋物線,所以必須用到公式
y = f(x) = [(T-S)/(S^2-255S)]x^2 + (1 - 255(T-S)/(S^2-255S))x
在一開始我用Int來存計算完的數值,但會失敗,曲線畫出來不會變,後來我才發現
必須要用float來存,才會成功
在計算時,因為曲線起始點的位子不一樣,所以必須要調整
必須將Y-255
雖然概念不難,可是要將其轉為程式還是會有點卡,但經過這次的練習
我對於色彩值有了更深一層的理解
程式碼:
https://www.dropbox.com/s/a9ekfpezc20o9yc/Unit1.cpp?dl=0
沒有留言:
張貼留言