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