素描濾鏡的實現

2021-08-15 21:04:29 字數 2039 閱讀 5912

期望圖:

參考鏈結2

直接對每乙個畫素乘於乙個灰度的乘子即可得到當前畫素的灰度:

vec3 greyscale(vec3 inputcolor)
效果圖如下:

直接相減即可

vec3 invertcolor(vec3 inputcolor)
效果圖如下:

對每個畫素乘於乙個5*5的核之後乘於0.4即可:

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

效果圖如下:

final_color為第三步模糊化之後的結果。

base_color為第一步取灰度圖之後的結果。

float base_color = greyscale(texture2d(texture, coord).rgb).r;

final_color = vec3( min(base_color + basecolor * final_color.r/(1.0-final_color.r) , 1.0) );

即:

final_color =

min ( base_color * (1

/ (1

-final_color)) , 1.0 );

若沒有第三步,那麼final_color = base_color*(1/base_color) = 1,則結果全部為白色。

第三步的作用相當於是提取邊框。

效果圖:

上圖中人手的部分完全是白色,也就是說,只有邊緣有灰色黑色,這是模糊變換的結果。

要想人手的部分是灰色,需要將模糊變換替換為別的濾鏡,比如:

半徑為2的最小值。

final_color =min(final_color,invertcolor(greyscale(texture2d(texture, coord)).rgb) ) );

...

這個的效果圖如下:

仔細對比效果圖與期望圖的差別之後,我們發現在人物的背景牆中出現了斜向的筆刷樣式。

在背景的反色效果中,其顏色值明顯小於乙個值。可以依據這個提取出背景,然後畫出筆刷。

但是效果很差,筆刷太過於規整:

//實現背景條紋失敗

matalb編寫程式實現ps的「素描濾鏡」

ps的各種濾鏡都可以用matlab 來進行實現,今天給出乙個例子 素描濾鏡 原圖如圖 實驗步驟如下 1.首先原圖就是灰度圖,我們不需要進行去色處理,直接讀取 即可,並對影象的灰度級歸一化到 0 255 2.對原圖進行反色得到影象b。3.對影象b進行高斯模糊得到圖c。4.最後將影象c與影象b進行顏色減...

matlab素描演算法實現

處理一幅影象,生成實際的素描影象,基本原理見 photoshop影象濾鏡 素描演算法 實現 如下 n zeros height,width 取反之後值 g zeros height,width 濾波之後值 三通道 rc i 1 gc i 2 bc i 3 選擇乙個通道進行處理 channel gc ...

素描 山 您需要的5個素描課程

素描 山 sketch是用於數字設計的出色應用程式。它的工具集非常適合那些為web,ui或移動裝置設計的人,並且對圖示設計也很有用。對於那些對軟體不熟悉的新手,或者正在尋找有關其功能的全面指南,這是第一門課程。在繼續使用高階功能 如共享樣式,符號和草圖映象 之前,adi將帶您導覽所有基本功能。如果您...