2014年12月2日 星期二

99360816 張育瑋 HW3

Level調整的介面
用了4個Track Bar調整色階輸出入的上下界
另可直接用Edit輸入要用的值

調整好上下界後
按下Apply後
程式便會讀取所有輸出入的上下界值

程式中前兩個if判斷式用來判別
若小於Input Min則輸出為Output Min
若大於Input Max則輸出為Output Max
而介於兩者間的其他值則以下列公式換算
即可得到每個輸入色階對應的輸出值

iLevelTable[i] = 
iOutputMin + (i - iInputMin)* (iOutputMax - iOutputMin)/(iInputMax - iInputMin);
i值 = 0~255

算完後再查表更新圖片
結果如下

結果(1)

結果(2)

 =======================================================================

Curve調整的介面
可直接點Image物件調整曲線

在此利用了幾個Image的Event Handler

<MouseDown>
點下滑鼠左鍵時
會抓滑鼠游標的XY座標
設定CurveMouseDowned為true
並計算及繪製曲線一次

<MouseMove>
游標在Image物件內移動
若CurveMouseDowned為true
即有按著滑鼠左鍵時
隨游標的移動
不斷的重新計算及繪製曲線

<MouseUp>
放開滑鼠左鍵
即設定CurveMouseDowned為false
如此一來游標移動時便不會更動曲線

在決定曲線後
按下Apply
程式就會以iCurveTable對圖片做調整
結果如下

結果(1)

結果(2)
========================================================================


這是另外做的直方圖均值化
將RGB的色階出現機率分別計算完
並儲存在dCumulative陣列內
接著計算255*dCumulative[j][i]
j=0~2, i=0~255
計算完存入iEqualization陣列
最後以查表法更新圖片即可完成直方圖均值化

沒有留言:

張貼留言