二、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 代码如下: 
 
[plain] view plaincopy 
1.  I=imread('a1.jpg','jpg');   
2.  imshow(I);   
3.  figure();   
4.  info_size=size(I);   
5.  height=info_size(1);   
6.  width=info_size(2);   
7.  N=zeros(height,width);   
8.  g=zeros(height,width);   
9.  imggray=rgb2gray(I);   
10. out=zeros(height,width);   
11.    
12. spec=zeros(height,width,3);   
13. for i=1:height   
14.     for j=1:width   
15.            
16.         N(i,j)=255-imggray(i,j);   
17.            
18.     end   
19. end   
20.    
21. for i=2:height-1   
22.     for j=2:width-1   
23.         sum=0;   
24.         sum=1*double(N(i-1,j-1))+2*double(N(i-1,j))+1*double(N(i-1,j+1));   
25.         sum=sum+2*double(N(i,j-1))+4*double(N(i,j))+2*double(N(i,j+1));   
26.         sum=sum+1*double(N(i+1,j-1))+2*double(N(i+1,j))+1*double(N(i+1,j+1))
;   
27.         sum=sum/16;   
28.         g(i,j)=sum;   
29.     end   
30. end   
31.    
32. for i=1:height   
33.     for j=1:width   
34.         b=double(g(i,j));   
35.         a=double(imggray(i,j));   
36.         temp=a+a*b/(256-b);   
37.         out(i,j)=uint8(min(temp,255));   
38.            
39.     end   
40. end   
41. imshow(out/255);   
 
处理后图像如下: 
 
 
C 代码如下: 
[plain] view plaincopy 
1.  void rgb2gray(unsigned char r[1000][1000],unsigned char g[1000][1000],unsign
ed char b[1000][1000],unsigned char gray[1000][1000],int height,int width)   
2.  {   
3.    int i,j;   
4.    for(i=0;i
5.        for(j=0;j
44.         for(j=0;j