1. 程式人生 > >photoshop影象濾鏡——素描演算法(含matlab程式碼)

photoshop影象濾鏡——素描演算法(含matlab程式碼)

二、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)!