為黑白照片上色(一)

作者:李旬政

emailsclee@eagle.ee.ntu.edu.tw

 

        本文要教你如何將黑白照片上色。原本我是要拿我自己的大頭照當範例,將高中時的黑白大頭照變成彩色的大頭照。但後來我覺得以下這個點子更好。

        本文是以感謝與崇敬的心情在寫的,若SpencerPeter看到本文,希望不要計較肖像權的問題。

 

        照片來源為Carey Bunks 所寫的一書「Grokking the GIMP」,在其前言的誌謝(Acknowledgements)這一段文字的前頭,主要是要感謝對Gimp有卓越貢獻的兩個大人物-Spencer KimbalPeter Mattis

試試這網址http://gimp-savvy.com/BOOK/index.html ,「Grokking the GIMP」這本書有網頁版而且可下載,你也可以在天瓏書局買到書的印刷版。這本書是不錯的入門書,裡面把影像處理的觀念大部分都說了,而且它不太講filter濾鏡的功能,讓初學者能更專注在影像處理的基本觀念,我覺得它的色彩理論與混色模式寫得很好。

        Spencer KimbalPeter Mattis可以說是Gimp的父親,沒有他們兩人的努力就沒有Gimp1995年當他們還是加州大學柏克萊分校的大學生時,因修編譯器的課而開始Gimp這一套影像處理軟體的實作。19962月釋出0.56版的Beta版本,19967月釋出0.6版,0.6版最大的變革是捨棄商業版的Motif函式庫所定義的視窗介面,自行定義並實作一套開放原始碼的視窗介面GTKGimp Toolkit)與GDKGimp Drawing Kit)。

19972月釋出0.99版,0.99版有許多新的特徵,新的APIPDBprocedure database)使得plug-insscript-fus的寫作更容易,這使得新的功能要加到Gimp裡更為容易,此時Gimp已經有150個以上的plug-ins19977Spencer KimbalPeter Mattis大學畢業開始工作,Gimp的主要發展工作便轉移到別人身上。19986Gimp 1.0正式版釋出。

        GTK後來又進展為GTK+19979GTK+的發展從Gimp的計畫獨立出來成為新的計畫,而GTK+是整個Gnome計畫的基石,所以Spencer KimbalPeter Mattis在開放原始碼的世界裡是很重要的人物。

 

一、準備工作:

1. 原圖為GIF檔。將SpencerPeter的大頭照分別剪下存檔為spencer.xcfpeter.xcfColor ModeRGB

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 LevelOut 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. 仿照上面的方法將左眼的膚色也去除。

 

最後要感謝SpencerPeter,辛苦了,尤其是Peter