2016年12月18日 星期日

03360474 陳鈺翔 HW03

Level & Curve


【Level】


透過自己設定的輸入、輸出的上下界調整影像的色彩明亮度
公式:


【程式撰寫】


1.畫圖
部分程式碼:
//先把線上對應的輸出位置存在一個陣列裡
要注意當輸入>InputMax,輸入要改為OutputMax;當輸入<InputMin,輸入要改為OutputMin
//再把這些點連起來,另外因為圖形的圓點是在左下角,所以y軸的位置是相反的

2.處理影像
部分程式碼:
//處理影像
紅色框起來的部分要注意:
1.當輸入>InputMax,輸入要改為OutputMax;當輸入<InputMin,輸入要改為OutputMin
2.因為是比例關係,所以型態要宣告成float,否則影像處理完會錯誤

【Curve】

利用曲線來調整影像,假設選取的點為(S,T),脫出的拋物線通過(0,0)以及(255,255),利用下面的公式就可以畫出曲線以及新的影像
公式:

【程式撰寫】

1.畫圖
部分程式碼:
//先把對應的點存在陣列裡
這邊要多設一個條件處理X跟Y相同或是X為0的時候,在這兩個情況下程式會出錯,所以要另外處理
//再把點連接起來,這邊判斷y = 0是因為在這個地方畫出來的線不太明顯,所以把它往上移

2.處理影像
部分程式碼:
//處理影像


【實驗結果】
1.Level



2.Curve
//曲線凹向下

//曲線凹向上




【心得】

Level的部分,使用上課推導出來的公式,就能簡單的把線以及對應輸出的色彩值找出來,比較要注意的只有變數的型態,因為用到三角形的比例關係,所以型態要用float或double,如果使用int的話就會處理錯誤,當初在這邊花了一個多小時才發現到。
Curve的部分,也是使用上課推導的公式,就可以把曲線以及對應的影像處理出來,那要注意的地方也跟Level差不多,像是變數的型態、Image元件的元件的原點位置,只要該注意的地方弄好就可以容易的寫出來了。
接下來對照上面的圖可以發現,Level因為有設定輸入輸出的上下界,所以處理完影像後的統計直方圖可以明顯的看到它的色彩值被限制在一個區域裡面,那從影像來看則可以看到本來很暗的地方變得稍微亮一些,本來很亮的地方則變得比較暗;Curve分成兩種:1.曲線凹向下 2.曲線凹向上,第一種可以發現影像變得更亮了,從曲線可以看到當曲線凹向下的時候,輸出的值會變得比原本的輸入還來的大,對照到統計直方圖就可以發現亮度比較高的色彩值出現了,第二種則是曲線凹向下,影像變得比較暗的原因同理可證。

















沒有留言:

張貼留言