hw4:輸入gamma值轉換
紅色字為補交後修改的部分!
公式:s=c*r^gamma
s : 是轉換後的值
c : 是個常數,設定預設值是1
r : 是原始影像中每個像素點的值
原本在show圖時,一直都是出現全白的圖,後來一直在計算gamma值的公式一直在做修改,修改常數 c 的值,後來才發現我要修改的地方整個弄錯了 ! 原來我在 R[][] , G[][] , B[][] 陣列的地方打錯了,變成 R[][] , G[][] , R[][] 。
(修) c = 255/(255^Gamma)
RIMatrix[i][j] = c * ( RIMatrix[i][j] ^ Gamma);
GIMatrix[i][j] = c * ( GIMatrix[i][j] ^ Gamma);
BIMatrix[i][j] = c * ( BIMatrix[i][j] ^ Gamma);
說明 : 因為只是複製再修改宣告的變數就可以,所以很容易忽略過去而沒去確認有沒有改錯!
(修) 因為c值的地方想錯了,又看了別的同學已交上來的作業說明,發現這次再看一次我便懂了,因為之前並不了解 c=255/(255^gamma)這個是子的意思,看課本也看得不太明白,所以程式碼稍微修正就可以了!
(修) int Gamma=StrToFloat(Edit3->Text);
註 : 在輸入1是輸出的圖就會變成原圖。
執行結果圖片說明:
(修)
在下圖的執行結果中,第二張圖是開啟的原始影像。
在上述就有提到,當gamma = 1 時,第一張圖顯示的就是原始圖,並沒有任何轉變。
現在補上當gamma=2時的執行影像。
可以看出轉換後的影現有變得比原圖暗了一點點(但不知道為什麼就是不太明顯..)!
由此就可以看到輸入的gamma值以 1當基準,遞減時會變亮,遞增時會變暗。
1. 常數 c 並不是設定為 1。
回覆刪除2. 你的程式執行結果是錯的, 你應該沒有掌握到這個作業的重點。