图像水彩画处理

这个水彩画效果是在写另外一篇算法的过程中无意实现的,当然肯定有些问题,不能适用于所有的图片,但是很多效果还不错,在此记录下,以后弄到这方面再补充。

WaterColor.m

%for k=1:50%对某文件夹中所有文件
%    imageName=strcat('image_jpg\',num2str(k),'.jpg');
%    imageNameWater=strcat('temp\',num2str(k),'-watercolor.jpg');
A=imread(imageName);%读入原图,命名为A
[h,w,~]=size(A);
%B1=rgb2gray(A);
B=rgb2hsv(A);
I=B;
J=B;

for i=2:w-1         %中间区域改变亮度值
for j=2:h-1
    max=B(j-1,i-1,3);
    for m=i-1:i+1
    for n=j-1:j+1
    if(B(n,m,3)>max)
    max=B(n,m,3);
    end
    end
    end
I(j,i,:)=max;
end
end
for j=1:w           %四条边改变亮度值
    I(1,j,:)=I(2,j,:);
    I(h,j,:)=I(h-1,j,:);
end
for i=1:h
    I(i,1,:)=I(i,2,:);
    I(i,w,:)=I(i,w-1,:);
end

%figure,imshow(A),xlabel('原始图像');
%figure,imshow(B1),xlabel('原始图像的灰度图Iv');
%figure,imshow(I),xlabel('亮通道I');

wb=B;
for i=1:w           %计算wb和新图像J的亮通道
for j=1:h
   J(j,i,:)=(power(I(j,i,3),0.3)*55+200)/255;
    if(B(j,i,3)<=0.3||B(j,i,2)<=0.3)
        wb(j,i,:)=exp(B(j,i,3)-0.3+B(j,i,2)-0.3);
    else
        wb(j,i,:)=1;
    end
    
end
end

%figure,imshow(wb),xlabel('黑暗权重wb');
%figure,imshow(J),xlabel('J的亮通道');

a=B;
for i=1:w           %计算相对曝光a
    for j=1:h
        a(j,i,:)=wb(j,i,3)*(J(j,i,3)/I(j,i,3));
    end
end
%figure,imshow(a),xlabel('相对曝光a');

J1=B;
for i=1:w
    for j=1:h
        J1(j,i,3)=a(j,i,3)*double(B1(j,i,1))/255;
    end
end
WaterColor=hsv2rgb(J1);
%imwrite(WaterColor,imageNameWater);%保存图像
imshow(WaterColor),xlabel('水彩画');


原图 效果图




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值