所謂濾鏡,最初是指安裝在相機鏡頭前過濾天然光的附加鏡頭,用來實現調色和添加效果。咱們作的濾鏡算法又叫作軟件濾鏡,是對大部分鏡頭濾鏡進行的模擬,固然,偏差也就再所不免,咱們的宗旨只是無限逼近。也是這個緣由,咱們沒法再現真實的拍攝場景,沒法復原照片中未包含的信息,進而也難以實現某些特殊濾鏡效果,諸如偏光鏡和紫外線濾色鏡(UV)的效果等等。php
目前濾鏡已經成爲各類圖像處理軟件中必備功能,不一樣的濾鏡效果,讓咱們的娛樂生活更加豐富多彩,對於任何一款軟件濾鏡效果的實現,咱們能夠歸結爲如下幾個部分:css
1,基本變換html
這是濾鏡效果的第一步,咱們能夠根據喜愛,設計各類圖像效果,這裏全部的圖像效果能夠統一使用以下公式表示:算法
F(r,g,b,a)=f(r,g,b,a);網絡
這個公式包含四個變換,即RGB顏色空間中RGB三個份量的變換以及透明度Alhpa的變換,這裏咱們簡寫爲A的變換。post
舉個灰度變換的例子,它對應的F——f變換以下:網站
F(r) = b * 0.114 + g * 0.587 + r * 0.299;google
F(g) = b * 0.114 + g * 0.587 + r * 0.299;spa
F(b) = b * 0.114 + g * 0.587 + r * 0.299;.net
F(a) = a;
這個灰度化也就是一個基本變換。有了這個基本變換,圖像也就達到了必定的效果,可是,一些複雜的濾鏡,並不是簡單的基本變換,而是一些複雜的效果疊加,於是也就有了 下面幾個步驟。
2,暈影材質模板疊加
打開Instagram應用,咱們會發現好多效果都有一些暈影,主要表現爲圖像四個角偏暗,中間正常或者偏亮,這個其實就是疊加了必定的材質的緣由,這裏咱們介紹Instagram中經典的暈角材質模板,以下圖所示:
像這樣的材質咱們如何疊加呢?這裏就會使用一些疊加的算法,其中最經常使用的仍是Photoshop中的混合圖層算法,這些混合算法我在前面開始的博客中已經介紹,你們能夠仔細研究,這一步主要是使用這些混合圖層算法將材質模板和咱們第一步基本變換獲得的效果圖進行混合,從而得出各類暈角效果。固然,這些混合算法並不是惟一 ,你徹底可本身嘗試設計本身喜歡的混合圖層算法。
這裏給出Photoshop混合圖層算法的連接http://blog.csdn.net/trent1985/article/details/40891661
3,風格模板疊加
這裏的風格疊加與2中的材質疊加算法差很少,這裏是說主要是個步驟問題,舉個例子,爲了實現老照片這個效果,咱們第一步經過顏色基本變換,能夠達到老照片的泛黃效果,可是還不逼真,由於老照片每每還有一些圖像噪聲,以及裂紋裂痕,這些效果若是你的算法沒法實現,那麼,你能夠把這些經過PS作成一個模板,在這一步中疊加到圖像上面,這樣也就實現了更爲逼真的效果。這裏放上一個Instagram濾鏡的風格模板圖像以下所示:
4,相框模板疊加
有了1-3的步驟,一款濾鏡效果就已經基本完成了,但有時候,你還會想要更加美觀,那麼你可使用PS製做一些 精美的相框模板,疊加到濾鏡效果上面,豈不是更加美觀呢?
上面4個步驟也就是一款濾鏡開發的步驟,固然這幾個步驟不必定是一款濾鏡必須的,能夠是其中一個步驟,或者多個步驟,可是,歸根結底,任何一款軟件 濾鏡的實現,應該都逃不出這幾個步驟了吧。 只要咱們掌握了這 幾個步驟 ,那麼屢次嘗試以後 ,總會開發出你 所 喜歡的濾鏡效果的。
5,針對第一個步驟,介紹個快速實現方法:
對於任何一款濾鏡,若是有基本變換這個步驟,那麼咱們均可以經過顏色映射構建一個映射表,而後經過查表來快速實現該變換效果,這樣能夠大大提升濾鏡的速度,提高用戶的體驗。
顏色映射查表法的基本原理:在一張表中爲每種顏色記錄一個對應的映射目標顏色,當用查表法對一張照片作顏色映射時,只須要遍歷照片的每一個像素點,而後在表中找到該像素顏色對應的目標顏色,最後將該像素設置爲目標顏色便可。查表法實現的前提是顏色的映射與周圍的顏色無關,即一種顏色不管周圍的顏色爲什麼、不管其位於照片的哪一個位置,其目標顏色都應該是相同的。
好比,RGB 能夠表示的顏色數量爲 256*256*256 = 16,777,216
,若是要記錄每種顏色的映射結果,那麼顏色表須要 一千六百多萬條記錄,這顯然沒法應用到實際的工程中。爲了簡化起見,Lev Zelensky發表了一個基準顏色表,將每相近的 4 種顏色採用一條記錄存儲,這樣顏色表只須要64 * 64 * 64 = 262,144
條記錄。這個表以下:
注意:上表將 262,144 種顏色分爲 8 個塊,每塊 64 * 64
格,每一格的顏色都不一樣。進行顏色映射時,首先使用數字圖像處理軟件對該基準顏色表應用要模擬的濾鏡來生成映射表(以下圖),而後對要處理的照片的每一個像素,從基準顏色表中找到該像素顏色的位置,而後在映射表的相應位置就能夠獲得目的顏色。
使用這種方法,你的濾鏡速度能夠大大提高。
以上5個步驟就是我結合網絡資源和我的總結的部分,喜歡濾鏡開發的朋友們能夠試試。
最後,介紹一個萬能濾鏡破解方法:
對於一款濾鏡,咱們構建一個模板,這個模板大小自定,能夠看到濾鏡效果便可,好比Instagram,它指定的圖像大小是530*530,那麼咱們構建一個530*530大小的空白模板圖像,假如咱們要破解Hudson效果,那麼,通過 咱們分析,這個效果不只包括基本變換,並且還有 暈影 ,甚至有 與位置相關的梯度模板,這個是破解的 難點,如何 破解,咱們可使用以下步驟:
1,構建256個530*530大小的模板,分別填充0-255種顏色,即灰度顏色;
2,將每一個模板 進行Hudson效果處理,獲得相應的映射模板庫,這個庫也就記錄了全部的Hudson效果設置,包括基本變換,暈影,梯度等;
3,對於任何一張530*530大小的原始圖像,咱們只要從2中的模板庫中找到對應顏色,對應位置的像素值,那麼 這個值就是Hudson的效果;
這1-3步,示意圖以下所示:
你們仔細想一下是否是這個道理,有得必有失,這話一點不錯,這個方法能夠破解 任何 一款濾鏡,可是,犧牲的倒是濾鏡的效率,想一下,是否是呢?
好了 ,今天的介紹就到此結束了,你們有什麼疑問能夠聯繫我 :
本人郵箱dongtingyueh@163.com, QQ: 1358009172