这个算法结合高斯滤波和图层混合中的颜色减淡模式实现。

可以参考相关博客:

http://blog.csdn.net/wsfdl/article/details/7610634


本文增加了一点调色,使得最终的素描效果可以不只是黑白,可以呈现不同的底色。


% % % % % 将图像转换成黑白颜色 
% % % % % 复制图像,并对复制后的图像反相
% % % % % 将复制后的图像做高斯模糊 
% % % % % 将模糊后的图像与原图像以颜色减淡模式混合
% % % % % 设置一个底色层
% % % % % 做素描 

clc;
clear all;
addpath('E:\PhotoShop Algortihm\Image Processing\PS Algorithm');
Image=imread('9.jpg');
Image=double(Image)/255;

    I=(Image(:,:,1) + Image(:,:,2) + Image(:,:,3))/3;
    I_invert=1-I;
    F_size=20;
    F_gaussian = fspecial('gaussian',F_size,F_size/6);  
    I_gaussian = imfilter(I_invert,F_gaussian,'conv'); 
   
    delta=0.001;
    I_Dodge=(I+delta)./(1-I_gaussian+delta);
    
    Max_value=max(I_Dodge(:));
    [row, col]=size(I);
    Threshold=0.95;
    for i=1:row
        for j=1:col
            if(I_Dodge(i,j)>Threshold)
                I_Dodge(i,j)=Threshold+I_Dodge(i,j)/Max_value*(1-Threshold);
            end
        end
    end
               
    Image_Dodge(:,:,1)=I_Dodge;
    Image_Dodge(:,:,2)=I_Dodge;
    Image_Dodge(:,:,3)=I_Dodge;
    %%% figure, imshow(Image_Dodge);
    
    Base_layer=Image_Dodge;
    Base_layer(:,:,1)=210/255;
    Base_layer(:,:,2)=225/255;
    Base_layer(:,:,3)=105/255;
    
    alpha=0.7;
    Image1=alpha*Image_Dodge+(1-alpha)*Base_layer;
    R=Image1(:,:,1);
    G=Image1(:,:,2);
    B=Image1(:,:,3);
    %%% figure, imshow(Image1);
    
    Image3=Image_Dodge.*Image1;
    figure, imshow(Image3);
    
   
   
    原图


效果图


效果图


posted on 2014-09-12 15:17  未雨愁眸  阅读(189)  评论(0编辑  收藏  举报