通過(guò)使用GLSL語(yǔ)言我們可以實(shí)現(xiàn)圖片濾鏡的各種效果镶苞。當(dāng)然想要實(shí)現(xiàn)一些酷炫的濾鏡效果葛超,你需要有強(qiáng)大的數(shù)學(xué)能力颁井。馬賽克也屬于圖片的一種濾鏡相對(duì)其他來(lái)說(shuō)濾鏡的算法來(lái)說(shuō)還是相對(duì)簡(jiǎn)單一些淫奔。本文中推薦2種馬賽克的算法和實(shí)現(xiàn)原理津畸。
首先我們要了解一下馬賽克濾鏡的原理振定。馬賽克效果就是把圖片的一個(gè)相當(dāng)大小的區(qū)域用同一個(gè)點(diǎn)的顏色來(lái)表示∪馔兀可以認(rèn)為是大規(guī)模的降低圖像的分辨率后频,而讓圖片的一些細(xì)節(jié)隱藏起來(lái)。
1.正方形馬賽克暖途。正方形馬賽克就是在獲取像素點(diǎn)顏色的時(shí)候不去獲取當(dāng)前像素點(diǎn)的顏色卑惜,而是使用周邊的顏色對(duì)這個(gè)像素點(diǎn)進(jìn)行覆蓋。如圖所示:
圖中有1234 四個(gè)像素點(diǎn)驻售。在我們進(jìn)行馬賽克處理的時(shí)候露久。會(huì)用2號(hào)色塊的顏色去覆蓋134號(hào)色塊的顏色。其次在我們進(jìn)行馬賽克處理的時(shí)候覆蓋的顏色 不是憑空產(chǎn)生的 是通過(guò)像素點(diǎn)中原有的色塊進(jìn)行覆蓋欺栗。正方形馬賽克片元著色器代碼如下:
2.六邊形馬賽克毫痕,六邊形馬賽克 顧名思義。就是馬賽克的圖形是一個(gè)六邊形組成迟几。我們?cè)佾@取像素點(diǎn)的顏色的時(shí)候 是已這個(gè)像素點(diǎn)距離六邊形中心點(diǎn)距離更近的那一個(gè)像素點(diǎn)的顏色消请。如圖所示:
在此圖中。由于紅色的點(diǎn)距離中間綠色的那個(gè)中心點(diǎn)更近类腮。所以在做馬賽克的時(shí)候紅色的像素點(diǎn)要用中心點(diǎn)的綠色的顏色值進(jìn)行覆蓋臊泰。具體代碼如下: