只需 4 步,手把手教你如何实现滤镜功能
源地址:http://zihua.li/2014/06/implement-instagram-like-filters/
濾鏡對于照片而言,起到的是雪中送炭和錦上添花的作用。優(yōu)秀的濾鏡,能讓隨手之作顯得別有風(fēng)味,又能為已經(jīng)絕色的照片畫龍點睛。現(xiàn)在幾乎凡是和照片相關(guān)的應(yīng)用程序都有濾鏡功能,而相較而言介紹濾鏡原理和實現(xiàn)的文章又少之又少,為此我專門寫了這篇文章來系統(tǒng)地講解濾鏡是如何實現(xiàn)的。
什么是濾鏡
濾鏡最初是指安裝在相機鏡頭前過濾自然光的附加鏡頭,用來實現(xiàn)調(diào)色和添加效果。一些數(shù)字圖像處理軟件(最著名的如 Adobe Photoshop)提供了一些特定的預(yù)設(shè)工具用來實現(xiàn)相機濾鏡的效果,這些工具也就自然而然地被稱作“濾鏡”。軟件實現(xiàn)的濾鏡可以模擬大部分的鏡頭濾鏡,如色溫變換濾鏡(LB)和強調(diào)濾鏡等,但由于無法再現(xiàn)拍攝環(huán)境,軟件濾鏡無法復(fù)原照片中未包含的信息,進而也難以實現(xiàn)偏光鏡和紫外線濾色鏡(UV)的效果。
實現(xiàn)濾鏡的步驟
就模擬鏡頭濾鏡而言,實現(xiàn)軟件濾鏡無外乎是對照片中的色彩進行映射的過程。然而軟件濾鏡并不止于此,復(fù)雜的軟件濾鏡還需要為照片增加光線變化(如 LOMO 的暗角效果)、材質(zhì)和相框等,最近美圖秀秀針對國內(nèi)環(huán)境問題推出的“去霧霾”濾鏡正是復(fù)雜的軟件濾鏡的一種體現(xiàn)。不過再復(fù)雜的軟件濾鏡,實現(xiàn)起來也不外乎如下幾個步驟。
1. 顏色映射
昏黃的顏色讓人聯(lián)想到古老與質(zhì)樸,淡綠的顏色讓人感到柔和與舒適:顏色是一張照片的靈魂,而實現(xiàn)濾鏡最重要的一步就是顏色映射。顏色映射是指將原來照片中的每一種顏色,通過某種映射方法轉(zhuǎn)換成另一種顏色。最常見也最簡單的映射方法是查表法。
查表法的原理是在一張表中為每種顏色記錄一個對應(yīng)的映射目標(biāo)顏色,當(dāng)用查表法對一張照片做顏色映射時,只需要遍歷照片的每個像素點,然后在表中找到該像素顏色對應(yīng)的目標(biāo)顏色,最后將該像素設(shè)置為目標(biāo)顏色即可。查表法實現(xiàn)的前提是顏色的映射與周圍的顏色無關(guān),即一種顏色無論周圍的顏色為何、無論其位于照片的哪個位置,其目標(biāo)顏色都應(yīng)該是相同的。
RGB 可以表示的顏色數(shù)量為256*256*256 = 16,777,216,如果要記錄每種顏色的映射結(jié)果,那么顏色表需要 一千六百多萬條記錄,這顯然無法應(yīng)用到實際的工程中。為了簡化起見,一般每相近的 4 種顏色采用一條記錄存儲,這樣顏色表只需要64 * 64 * 64 = 262,144條記錄。
這里以Lev Zelensky首先發(fā)表的一個基準(zhǔn)顏色表為例:
上表將 262,144 種顏色分為 8 個塊,每塊64 * 64格,每一格的顏色都不同。進行顏色映射時,首先使用數(shù)字圖像處理軟件對該基準(zhǔn)顏色表應(yīng)用要模擬的濾鏡來生成映射表(如下圖),然后對要處理的照片的每個像素,從基準(zhǔn)顏色表中找到該像素顏色的位置,然后在映射表的相應(yīng)位置就可以得到目的顏色。
Lev Zelensky 為 iOS/OS X 上著名的圖像處理庫GPUImage加入了GPUImageLookupFilter)方法來實現(xiàn)上述過程。
2. 疊加材質(zhì)
只進行顏色映射就可以實現(xiàn)大部分簡單的濾鏡,然而復(fù)雜的濾鏡需要更多的步驟來完成。其中最為典型的就是LOMO效果了。要實現(xiàn) LOMO 效果,除了通過顏色映射讓顏色更加鮮艷外,還需要為照片增加四周的暗角。首先需要一張暗角素材:
然后將該素材疊在照片上,并應(yīng)用Overlay混合算法。
要注意的是根據(jù)材質(zhì)不同,可以選擇不同的混合算法。只是對暗角這一材質(zhì)而言,Overlay 可以帶來最好的效果。另外一點就是先進行顏色映射還是先疊加材質(zhì)并沒有固定的規(guī)則,需要根據(jù)實際效果進行選擇。就 LOMO 暗角而言,先疊加材質(zhì)的效果更好。
3. 應(yīng)用相框
嚴(yán)格來說相框并不屬于濾鏡的一部分,但是考慮到好的相框可以為照片提色不少,這里也順便提一句。根據(jù)相框的不同,應(yīng)用的照片上的方法也不同,有的相框可以直接蓋在照片上,有的則需要按照某種混合算法和照片進行混合,但無論哪種方式,應(yīng)用相框都算是整個濾鏡最簡單的部分了。與相框類似的就是照片裝飾物,比如一顆桃心或用戶可以自定義的文字,實現(xiàn)照片裝飾物并沒有任何技術(shù)難度,唯一要記住的點就是不要胡亂的為你的濾鏡加入裝飾物,否則會讓濾鏡落入俗套。
4. 反復(fù)
最終的濾鏡效果可能需要反復(fù)應(yīng)用上面的步驟才能實現(xiàn),比如 Instagram 的濾鏡很多都是應(yīng)用了多種材質(zhì)才得以完成。這一過程需要設(shè)計者的保留充分的耐心,一點一點地琢磨,一款優(yōu)秀的濾鏡才能得以誕生。
總結(jié)
以上是生活随笔為你收集整理的只需 4 步,手把手教你如何实现滤镜功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。