photoshop影象濾鏡——素描演算法(含matlab程式碼)
阿新 • • 發佈:2019-02-17
二、photoshop影象濾鏡——素描演算法
素描的演算法,網路上有多種,但是效果並不是特別理想。熟悉photoshop的朋友都知道,把彩色圖片打造成素描的效果僅僅需要幾步操作:1、去色;2、複製去色圖層,並且反色;3、對反色影象進行高斯模糊;4、模糊後的影象疊加模式選擇顏色減淡效果。
影象的去色較為簡單,就不多解釋。假設原影象為X,處理後的影象為Y ,也就是說,對於座標為(i,j)點,反色為Y(i,j)=255-X(i,j)。高斯模糊相當與一個低通濾波器,朋友們可以找找和高斯模糊有關的資料。顏色減淡的演算法是這樣的:C
=MIN( A +(A×B)/(255-B),255),其中C為混合結果,A為源畫素點,B為目標畫素點。
matlab程式碼如下:
I=imread('a1.jpg','jpg'); imshow(I); figure(); info_size=size(I); height=info_size(1); width=info_size(2); N=zeros(height,width); g=zeros(height,width); imggray=rgb2gray(I); out=zeros(height,width); spec=zeros(height,width,3); for i=1:height for j=1:width N(i,j)=255-imggray(i,j); end end for i=2:height-1 for j=2:width-1 sum=0; sum=1*double(N(i-1,j-1))+2*double(N(i-1,j))+1*double(N(i-1,j+1)); sum=sum+2*double(N(i,j-1))+4*double(N(i,j))+2*double(N(i,j+1)); sum=sum+1*double(N(i+1,j-1))+2*double(N(i+1,j))+1*double(N(i+1,j+1)); sum=sum/16; g(i,j)=sum; end end for i=1:height for j=1:width b=double(g(i,j)); a=double(imggray(i,j)); temp=a+a*b/(256-b); out(i,j)=uint8(min(temp,255)); end end imshow(out/255);
處理後圖像如下:
歡迎朋友們多多指教,歡迎分享,請註明出處-----(wsfdl)!