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

可以参考相关博客:

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);

    

   

   

    原图

效果图

效果图

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

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

    利用另外一种算法完成素描特效的生成. %%% Sketch clc; clear all; Image=imread('4.jpg'); Image=double(Image); [row,col,l ...

  2. Python: PS 滤镜--素描

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. Python: PS滤镜--径向模糊

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

随机推荐

  1. Android简易实战教程--第二十四话《画画板》

    今天完成一个画画板. 首先来个布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android ...

  2. spring 的OpenSessionInViewFilter简介

    假设在你的应用中Hibernate是通过spring 来管理它的session.如果在你的应用中没有使用OpenSessionInViewFilter或者OpenSessionInViewInterc ...

  3. 【美工设计 - Adobe Illustrator】基本设置 (图像显示 | 图像缩放 | 置入导出 | 标尺 | 网格 | 参考线 | 画板)

    作者 : 韩曙亮 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/50232767 一. 基础操作 1. 设置图像显示效果 (1) ...

  4. 从一个简洁的进度刻度绘制中了解自定义View的思路流程

    先看效果(原谅我的渣像素),进度的刻度.宽度.颜色可以随意设定: [项目github地址: https://github.com/zhangke3016/CircleLoading] 实现起来并不难, ...

  5. ROS(indigo)ABB机器人MoveIt例子

    ROS(indigo)ABB机器人例子 参考网址: 1  http://wiki.ros.org/Industrial 2  http://wiki.ros.org/abb 3  https://gi ...

  6. java 之容器

    在Java中,我们想要保存对象可以使用很多种手段.我们之前了解过的数组就是其中之一.但是数组具有固定的尺寸,而通常来说,程序总是在运行时根据条件来创建对象,我们无法预知将要创建对象的个数以及类型,所以 ...

  7. ROS(indigo)swarm_robot 群机器人示例Gazebo

    ROS(indigo)swarm_robot 群机器人示例Gazebo 参考网址:https://github.com/yangliu28/swarm_robot_ros_sim 安装提示:catki ...

  8. Chapter 2 User Authentication, Authorization, and Security(4):限制SA帐号的管理权限

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/38817915,专题目录:http://blog.csdn.net/dba_huangzj ...

  9. Linux多线程实践(8) --Posix条件变量解决生产者消费者问题

    Posix条件变量 int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *cond_attr); int pthread_co ...

  10. javascript之DOM编程增加附件

    在开始这个案例之前,需要学习一下有关于根据子关系节点获取标签的几个方法.罗列如下 /*通过关系(父子关系.兄弟关系)找标签.parentNode 获取当前元素的父节点.childNodes 获取当前元 ...