為黑白照片上色(一)
作者:李旬政
email:sclee@eagle.ee.ntu.edu.tw
本文要教你如何將黑白照片上色。原本我是要拿我自己的大頭照當範例,將高中時的黑白大頭照變成彩色的大頭照。但後來我覺得以下這個點子更好。
本文是以感謝與崇敬的心情在寫的,若Spencer與Peter看到本文,希望不要計較肖像權的問題。
照片來源為Carey Bunks 所寫的一書「Grokking the GIMP」,在其前言的誌謝(Acknowledgements)這一段文字的前頭,主要是要感謝對Gimp有卓越貢獻的兩個大人物-Spencer Kimbal與Peter Mattis。
試試這網址http://gimp-savvy.com/BOOK/index.html ,「Grokking the GIMP」這本書有網頁版而且可下載,你也可以在天瓏書局買到書的印刷版。這本書是不錯的入門書,裡面把影像處理的觀念大部分都說了,而且它不太講filter濾鏡的功能,讓初學者能更專注在影像處理的基本觀念,我覺得它的色彩理論與混色模式寫得很好。
Spencer Kimbal與Peter Mattis可以說是Gimp的父親,沒有他們兩人的努力就沒有Gimp。1995年當他們還是加州大學柏克萊分校的大學生時,因修編譯器的課而開始Gimp這一套影像處理軟體的實作。1996年2月釋出0.56版的Beta版本,1996年7月釋出0.6版,0.6版最大的變革是捨棄商業版的Motif函式庫所定義的視窗介面,自行定義並實作一套開放原始碼的視窗介面GTK(Gimp Toolkit)與GDK(Gimp Drawing Kit)。
1997年2月釋出0.99版,0.99版有許多新的特徵,新的API與PDB(procedure database)使得plug-ins與script-fus的寫作更容易,這使得新的功能要加到Gimp裡更為容易,此時Gimp已經有150個以上的plug-ins。1997年7月Spencer Kimbal與Peter Mattis大學畢業開始工作,Gimp的主要發展工作便轉移到別人身上。1998年6月Gimp 1.0正式版釋出。
GTK後來又進展為GTK+,1997年9月GTK+的發展從Gimp的計畫獨立出來成為新的計畫,而GTK+是整個Gnome計畫的基石,所以Spencer Kimbal與Peter Mattis在開放原始碼的世界裡是很重要的人物。
一、準備工作:
1. 原圖為GIF檔。將Spencer與Peter的大頭照分別剪下存檔為spencer.xcf、peter.xcf,Color Mode設RGB。
2. 將Peter的大頭照Color Mode設為Grayscale後再設為RGB,此時Peter的大頭照變為黑白照片。
3. 以下我們利用Spencer的照片來將Peter的照片還原為彩色的。
4. 理論上應該準備一張原本就是黑白照的照片,會比較有說服力。就當是練習,不用太苛求。
二、選區相對應的部份:
1. 使用Bezier曲線工具將Peter的臉部形成一封閉的圖徑(path),執行[image] -> Layers -> Layers,Channels&Paths,開啟Layers,Channels&Paths的對話盒,點選Paths的浮動視窗,按下Path to Selection的按鈕,將圖徑(path)變為選取區域。
圖徑 |
選取區域 |
色頻 |
2. 執行[image] ->Select-> Save to Channel將選取區域存成一個新的色頻(Channel)。點選Channels的浮動視窗,會發現多了一個灰階的遮色片(mask),名為Selection Mask copy。
3. 將選取區域存在色頻內的優點為:藉由Channel to Selection的按鈕,可將色頻再變為選取區域。利用色頻可儲存多個選取區域。
4. 將選取區域存在色頻的目的是:做錯時,可利用色頻還原選取區域,可利用色頻合併選取區域。
5. 使用Bezier曲線工具將Spencer的臉部形成一封閉的圖徑(path),點選Paths的浮動視窗,按下Path to Selection的按鈕,將封閉的圖徑(path)變為選取區域。
圖徑 |
選取區域 |
色頻 |
6. 執行[image] ->Select-> Save to Channel將選取區域存成一個新的色頻(Channel)。
三、顏色對換:
1. 在spencer的臉部與peter的臉部是選取的情況下,對peter.xcf執行[image] -> Filters -> Color -> Map -> Sample Colorize,
2. 按下對話盒中Get Sample Colors按鈕,Peter的臉部膚色用Spencer的臉部膚色給替換掉。
3. 若你對顏色的對調方式不滿意,還可以調整對話盒中In Level與Out Level的值,若你覺得滿意了,按下Apply按鈕。
四、頭髮的顏色:
1. 仿造上面的步驟,改變Peter頭髮的顏色。
2. 使用Bezier曲線工具將Peter的頭髮形成一封閉的圖徑(path),點選Paths的浮動視窗,按下Path to Selection的按鈕,將圖徑(path)變為選取區域。將Spencer有頭髮的地方選取。
圖徑 |
選取區域 |
圖徑 |
選取區域 |
3. 在Spencer的頭髮與Peter的頭髮是選取的情況下,對peter.xcf執行[image] -> Filters -> Color -> Map -> Sample Colorize,按下對話盒中Get Sample Colors按鈕,Peter的髮色用Spencer的髮色給替換掉。
五、不完美的地方:
1. 比較原本就是彩色的大頭照與將黑色的影像彩色化的兩個影像,發現黑色的影彩色化後的影像Peter的頭髮有一些灰色。灰色的部分是選取區域沒有涵蓋到的部分,可藉由更精確的選取來改善。
2. 眼睛有膚色的感覺。可用上面的方法使用Sample Colorize濾鏡改善眼睛的顏色。
3. 若覺得背景顏色不好,衣服顏色不好,可將這些部分選取後換上你喜歡的顏色。
|
|
原本就是彩色的大頭照 |
將黑色的影像彩色化 |
六、消除眼睛的膚色:
還有許多方法可以消除眼睛的膚色,其中之一如下所述。
1. 利用Bezier曲線工具將Peter的右眼形成一選取區域。
2. 執行[image] -> Image -> Colors -> Hue-Saturation,將Saturation設-40。降低飽和度的目的在於除去純色的部分張顯出黑色與白色的效果。
3. 一像素的飽和度(Saturation)代表該像素色彩純與不純的分別。在HSV的色彩模型中,飽和度最大時表示能發揮其固有色相或色度(hue)之特性,其中毫無黑白色之混入,達飽和度之色稱為純色。
|
|
眼睛有膚色 |
Saturation設-40, 眼睛的膚色減低了 |
4. 仿照上面的方法將左眼的膚色也去除。
最後要感謝Spencer與Peter,辛苦了,尤其是Peter。