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

%%% 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. Ant简介

    Ant,apache开源项目,基于Java的构建工具,是一个小程序.它通过自动完成所有的编译代码,运行测试以及 打包重新部署等繁琐费力的任务来帮助软件团队开发大程序: Ant的目标是自动完成所有的构建 ...

  2. Retrofit2.0 ,OkHttp3完美同步持久Cookie实现免登录(二)

    原文出自csdn: http://blog.csdn.net/sk719887916/article/details/51700659: 通过对Retrofit2.0的<Retrofit 2.0 ...

  3. shell入门之函数应用

    最近在学习shell编程,文中若有错误的地方还望各位批评指正. 先来看一个简单的求和函数 #!/bin/bash #a test about function f_sum 7 8 function f ...

  4. java中hashCode()与equals()详解

    首先之所以会将hashCode()与equals()放到一起是因为它们具备一个相同的作用:用来比较某个东西.其中hashCode()主要是用在hash表中提高 查找效率,而equals()则相对而言使 ...

  5. Android简易实战教程--第一话《最简单的计算器》

    转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/51707931 从今天开始,本专栏持续更新Android简易实战类博客文章.和以往专 ...

  6. 后端分布式系列:分布式存储-HDFS NameNode 设计实现解析

    接前文 分布式存储-HDFS 架构解析,我们总体分析了 HDFS 架构的主要构成组件包括:NameNode.DataNode 和 Client.本文首先进一步解析 HDFS NameNode 的设计和 ...

  7. ubuntu14.04使用root用户登录桌面

    ubuntu安装好之后,默认是不能用root用户登录桌面的,只能使用普通用户或者访客登录.怎样开启root用户登录桌面呢? 先用普通用户登录,然后切换到root用户,然后执行如下命令: vi /usr ...

  8. Beanstalkd 一个高性能分布式内存队列系统

    需要一个分布式内存队列,能支持这些特性:任务不重不漏的分发给消费者(最基础的).分布式多点部署.任务持久化.批量处理.错误重试..... 转载:http://rdc.taobao.com/blog/c ...

  9. (一)php的基本知识和一些注意点

    注意:任何程序,包括php,在运行时都在内存中进行,php代码需要被读取到内存中才能执行. [php的运行方式] 1.通过服务器(例如apache)调用. 2.通过命令行调用(不需要服务器参与,因为没 ...

  10. DB 查询分析器 6.04 发布 ,本人为之撰写的相关技术文章达78篇

    DB查询分析器 6.04 发布,本人为之撰写的相关技术文章达78篇 中国本土程序员马根峰(CSDN专访马根峰:海量数据处理与分析大师的中国本土程序员 http://www.csdn.net/artic ...