利用另外一种算法完成素描特效的生成。

%%% Sketch

clc;

clear all;

Image=imread('4.jpg');

Image=double(Image);

[row,col,layer]=size(Image);



Filter_size=30;

sigma=Filter_size/6;

F_gaussian=fspecial('gaussian', Filter_size, sigma);



for i=1:row

    for j=1:col

        I(i,j)=max(Image(i,j));

    end

end

I=I/255;

p=1;

Gradient_X=[-1 -p -1

            0   0  0

            1   p  1];

        

Gradient_Y=[-1 0 1

            -p 0 p

            -1 0 1];

Image_y=imfilter(I, Gradient_Y, 'conv');        

Image_x=imfilter(I, Gradient_X, 'conv');



alpha=0.5;

% Image_edge=(abs(Image_x)*alpha+(1-alpha)*abs(Image_y));

Image_edge=(abs(Image_x)+abs(Image_y));



F_image=imfilter(Image,F_gaussian,'conv');

[L,a,b]=Rgb2Lab(F_image);

I=sqrt(L.*L+a.*a+b.*b);

I_mean=mean(mean(I));

F_S=I;

for i=1:row

    for j=1:col

        if(I(i,j)<I_mean)

            F_S(i,j)=(1-I(i,j)/I_mean).^2;

        else

            F_S(i,j)=0;

        end

    end

end



Image_out=(1-Image_edge).*(0.8-F_S);



%% 设置底色层

    Image_Dodge(:,:,1)=Image_out;

    Image_Dodge(:,:,2)=Image_out;

    Image_Dodge(:,:,3)=Image_out;

    Base_layer=Image_out;

    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;

   Image3=Image_Dodge.*Image1;

   figure, imshow(Image3);

 



%%%  Rgb2Lab

%%%  

function [L,a,b]=Rgb2Lab(Image)

Image=double(Image)/255;

R=Image(:,:,1);

G=Image(:,:,2);

B=Image(:,:,3);



X=0.5767309*R + 0.1855540*G + 0.1881852*B;

Y=0.2973769*R + 0.6273491*G + 0.0752741*B;

Z=0.0270343*R + 0.0706872*G + 0.9911085*B;

[row, col]=size(R);



L=R;

a=R;

b=R;



for i=1:row

    for j=1:col        

        L(i,j)=116*F_Correction(Y(i,j))-16;

        a(i,j)=500*(F_Correction(X(i,j))-F_Correction(Y(i,j)));

        b(i,j)=200*(F_Correction(Y(i,j))-F_Correction(Z(i,j)));

    end

end

原图

效果图

PS 滤镜——素描算法(二)的更多相关文章

  1. PS 滤镜——素描算法(一)

    这个算法结合高斯滤波和图层混合中的颜色减淡模式实现. 可以参考相关博客: http://blog.csdn.net/wsfdl/article/details/7610634 本文增加了一点调色,使得 ...

  2. Python: PS 滤镜--素描

    本文用 Python 实现 PS 滤镜中的素描特效,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/386 ...

  3. OpenCV——PS 图层混合算法 (二)

    具体的算法原理可以参考 PS图层混合算法之二(线性加深,线性减淡,变亮,变暗) // PS_Algorithm.h #ifndef PS_ALGORITHM_H_INCLUDED #define PS ...

  4. OpenCV——PS 滤镜, 浮雕效果

    具体的算法原理可以参考: PS 滤镜, 浮雕效果 // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITH ...

  5. OpenCV——PS 滤镜, 曝光过度

    算法原理可以参考: PS 滤镜,曝光过度 #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include <io ...

  6. Python: PS 滤镜--旋涡特效

    本文用Python 实现 PS 滤镜的旋涡特效,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/42215 ...

  7. Python: PS 滤镜--USM 锐化

    本文用 Python 实现 PS 滤镜中的 USM 锐化效果,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/detail ...

  8. Python: PS 滤镜--表面模糊

    本文用 Python 实现 PS 滤镜中的表面模糊,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/528 ...

  9. Python: PS 滤镜--旋转模糊

    本文用 Python 实现 PS 滤镜中的旋转模糊,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/392 ...

随机推荐

  1. XMPP(一)-openfire服务端的安装和搭建

    XMPP全称:可扩展通讯和表示协议 简介:可扩展通讯和表示协议 (XMPP) 可用于服务类实时通讯.表示和需求响应服务中的XML数据元流式传输.XMPP以Jabber协议为基础,而Jabber是即时通 ...

  2. Linux下yum安装MySQL yum安装MySQL指定版本

    yum安装MySQL 1. 查看有没有安装过     yum list installed MySQL* (有存在要卸载yum remove MySQL*)     rpm -qa | grep my ...

  3. (一二四)tableView的多组数据展示和手动排序

    最近在写一个轻量级的网络游戏,遇到了技能优先顺序手动排序的需求,我就想到了iOS自带的tableView编辑功能,对其进行了初步探索,最后做出的效果如下图所示: 点击左边可以删除,拖住右边可以手动排序 ...

  4. H3C数据中心虚拟化解决方案技术白皮书

    缩略语清单: 缩略语 英文全名 中文解释 IDC Internet Data Center 互联网数据中心 VRF Virtual Router Forwarding 虚拟路由器转发 SMP Symm ...

  5. RAMCloud:内存云存储的内存分配机制

    现在全闪存阵列已经见怪不怪了,EMC的XtremIO,还有VNX-F(Rockies),IBM FlashSystem.全闪存真正为效率而生,重新定义存储速度.凭借极致性能,高可用性,为您极大提高企业 ...

  6. 论文系统Step1:从日志记录中提取特定信息

    论文系统Step1:从日志记录中提取特定信息 前言 论文数据需要,需要实现从服务器日志中提取出用户的特定交互行为信息.日志内容如下: 自己需要获取"请求数据包一行的信息"及&quo ...

  7. Linux Debugging(六): 动态库注入、ltrace、strace、Valgrind

    实际上,Linux的调试方法非常多,针对不同的问题,不同的场景,不同的应用,都有不同的方法.很难去概括.本篇文章主要涉及本专栏还没有涵盖,但是的确有很重要的方法.本文主要包括动态库注入调试:使用ltr ...

  8. 【一天一道LeetCode】#97. Interleaving String

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given s ...

  9. Java创建柱状图及饼状图

    Java创建图表其实还是很方便的,但是要引入相关的jar包.如下 jfreechart.jar jcommon,jar gnujaxp.jar 其中最主要的是jfreechart.jar. 下面就让我 ...

  10. 11.1、Libgdx的音频之音效

    (官网:www.libgdx.cn) 音效通常是比较小的音频文件,通常是几秒钟的长度.通常用在特定的游戏事件中,比如跳跃或者射击. 音效可以保存为多种格式.Libgdx支持MP3.OGG和WAV文件. ...