色階調整
色階調整將原圖的R、G、B值依比例做範圍調整,改變圖片中顏色的飽和度。線性調整
在這邊不先讀取圖片中的像素,因為每種顏色可能重複出現,若每個像素都計算一次可能導致計算量太大、程式運行過久。
因此這邊先執行線性轉換,轉換前範圍為old_left~old_right、轉換目標範圍為new_left~new_right。
圖中newPixel為一大小為256的陣列,因R、G、B範圍皆為0~255,因此不需要分別為三色做轉換,只需要將原始範圍轉換成新範圍即可以應用在R、G、B三色。
圖中公式
將input在原範圍中做比例計算,將計算出的比例移至新範圍,使用同比例求出output。
例如要將0~255中的10轉換為20~200的範圍,將範圍帶入公式中:
計算出10在0~255中佔了多少比例,依同比例在20~200中求出新的output作為轉換值。
上圖為將0~255轉換為128~255的結果示範,圖片整體顏色飽和度上升、圖片整體變亮。
圖中X軸為原數值、Y軸為轉換後數值,顯示將0~255轉換為128~255的線性轉換圖表。
因此這邊先執行線性轉換,轉換前範圍為old_left~old_right、轉換目標範圍為new_left~new_right。
圖中newPixel為一大小為256的陣列,因R、G、B範圍皆為0~255,因此不需要分別為三色做轉換,只需要將原始範圍轉換成新範圍即可以應用在R、G、B三色。
圖中公式
將input在原範圍中做比例計算,將計算出的比例移至新範圍,使用同比例求出output。
例如要將0~255中的10轉換為20~200的範圍,將範圍帶入公式中:
計算出10在0~255中佔了多少比例,依同比例在20~200中求出新的output作為轉換值。
上圖為將0~255轉換為128~255的結果示範,圖片整體顏色飽和度上升、圖片整體變亮。
圖中X軸為原數值、Y軸為轉換後數值,顯示將0~255轉換為128~255的線性轉換圖表。
曲線調整
與線性調整的方法相同,先將0~255轉換為新的值,再分別應用在R、G、B三色。
這邊實作曲線調整的前提為範圍必須0~255,並給定一值(如:(100, 150),表100轉換後會變成150)。
有了(0, 0)、(x, y)、(255,255)三個點,可以依數學方法求出經過此三點的曲線函數。
曲線公式:
分別將(0, 0)、(x, y)、(255,255)帶入可以求得a、b、c三值,得到一完整曲線方程式。
沒有留言:
張貼留言