高級的繪圖軟體,例如Adobe Photoshop,皆具備「以曲線調整色彩」的功能。網路上隨手就能找到許多教學文件,例如這篇和這篇。今天我們要來實作這個功能!
首先解釋一下曲線。其實曲線就是函數,用來轉變像素數值。R值有一個曲線、G值有一個曲線、B值有一個曲線。建立三條曲線,分頭處理RGB值。
使用者可以增設並挪動控制點,曲線將穿過所有控制點。曲線是N-1次多項式函數,N是控制點數量。
另外,使用者可以挪動頭尾的控制點,超過頭尾的部分是水平線。
像素數值必須符合RGB值範圍。多項式函數 p(x),最後調整成 f(x) = max(0, min(255, round(p(x))))。
第一行是R值的曲線的控制點。第二行是G值的曲線的控制點。第三行是B值的曲線的控制點。每一行開頭有一個整數 N (2 <= N <= 5),代表控制點數量。後面跟著 N 個控制點座標,一個座標由兩個整數 X Y (0 <= X, Y <= 255) 組成,總共 N*2 個整數,各以一個空白隔開。N 個座標的 X 值皆不同,X 值已由小到大排序。
然後是一張圖片:兩個整數 W H (1 <= W, H <= 256),是圖片的寬和高;接下來的 H 行,每行有 W*3 個整數,是每個像素的 RGB 值 (0 <= R, G, B <= 255)。
請輸出處理過的圖片。
2 0 0 255 255 2 0 0 255 255 2 0 0 255 255 1 1 128 128 128
1 1 128 128 128
1. 如果不熟悉運用函數調整RGB值,可以先試試看「b462: 圖片亮度調整原理深度剖析」。
2. 學術上,此問題稱作 Color Correction。
3. 如果你需要實際操作一下,這裡有個免費線上影像編輯軟體 Pixlr Editor,建立新圖片之後,於上方選單列 -> 調整 -> 曲線,就可以開始操作了。
4. 作品一覽:
編號 | 身分 | 題目 | 主題 | 人氣 | 發表日期 |
沒有發現任何「解題報告」
|