程式碼網址:
https://www.dropbox.com/s/zaaejyhjf6j1l57/Curve.cpp?dl=0
此次作業的作法,我是先宣告一個ColorTable[256],裡邊是存放輸出的色階值,並按照使用者輸入或操作,來改變對應的輸出值。
並使用ColorTable來 輸出程式上的Curve圖或是要改變的圖片
User Change ----------> ColorTable ----------> Output Curve Image
|
|------> Output File Image
最大值最小值問題:
只要大於最大值則設為最大值
小於最小值則設為最小值
此圖是色階最大值最小值輸入後,
紅色: 輸入值 = 50-200
藍色: 輸出值 = 20-230
折線圖是經由ColorTable產生出來
因此僅需要去查ColorTable[輸入值] = 輸出值
就可以快速對應到要調整的值。
此圖為調整後,
可以看的出來天空的色彩有點像雲彩紙,有些粗糙
是因為像素的色彩值域縮小的緣故(輸入值),有些像是全彩(32bit) --->高彩(16bit)
而二次曲線調整,
主要影響色彩的灰度與亮度
程式的部分僅需使用二次函數 y = ax^2 + bx + c
求得a、b,並以輸入值 x,輸出值 y 改變ColorTable的值。
再將ColorTable的色彩值對應到圖片上。
原圖與調整後的對比
高量與低量的對比
沒有留言:
張貼留言