matlab实现photoshop,photoshop图像滤镜——素描算法(含matlab代码)

二、photoshop图像滤镜——素描算法

素描的算法,网络上有多种,但是效果并不是特别理想。熟悉photoshop的朋友都知道,把彩色图片打造成素描的效果仅仅需要几步操作:1、去色;2、复制去色图层,并且反色;3、对反色图像进行高斯模糊;4、模糊后的图像叠加模式选择颜色减淡效果。

0818b9ca8b590ca3270a3433284dd417.png

图像的去色较为简单,就不多解释。假设原图像为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);

处理后图像如下:

0818b9ca8b590ca3270a3433284dd417.png

欢迎朋友们多多指教,欢迎分享,请注明出处-----(wsfdl)!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值