這次的作業是把一張圖片做不同的Gamma值轉換,也就是把原本圖片的值經由一個公式轉換成顏色較深或較淡(對比度高或低)的圖片。轉換所用的公式和結果如下:
---------------------------------------------------
轉換公式 : s = c * r^γ
s : 轉換後的值
c : 常數值,用來調整轉換後的值落在0~255區間內
r : 原本的值
γ : Gamma值
---------------------------------------------------
黑白影像的實作結果 :
原圖 ↓
(圖片來源=>http://www.wuhunews.cn/whnews/200909/196116.html)
γ = 2.0 ↓
γ = 3.0 ↓
γ = 4.0 ↓
彩色影像的實作結果:
原圖 ↓
γ = 0.4 ↓
γ = 3.0 ↓
這次在程式撰寫上沒有甚麼問題,大略流程為宣告一個大小為256的一維陣列來存放0, 1, 2, ..., 255每個數值轉換後的值,再把原本的圖片值丟入那個一維陣列,就可以由原本圖片值當索引,找出轉換後的值再給原圖片陣列輸出。
PS. 旋轉作業和這次的程式撰寫,皆有需要讀入使用者的輸入值,所以學到了一個新的語法:
------------------------------------
gamma = StrToFloat(Edit1->Text);
------------------------------------
功用為把使用者在Edit物件所輸入的字串轉換成數值,在寫旋轉時卡這邊卡超久,不知道要怎麼取得它的輸入值,後來在書上找到語法,雖然是個小小發現,但對初學者的我來說是滿高興的一件事。
沒有留言:
張貼留言