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陣列
最後以查表法更新圖片即可完成直方圖均值化
沒有留言:
張貼留言