PS 滤镜——素描算法(二)
利用另外一种算法完成素描特效的生成。
%%% 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 滤镜——素描算法(二)的更多相关文章
- PS 滤镜——素描算法(一)
这个算法结合高斯滤波和图层混合中的颜色减淡模式实现. 可以参考相关博客: http://blog.csdn.net/wsfdl/article/details/7610634 本文增加了一点调色,使得 ...
- Python: PS 滤镜--素描
本文用 Python 实现 PS 滤镜中的素描特效,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/386 ...
- OpenCV——PS 图层混合算法 (二)
具体的算法原理可以参考 PS图层混合算法之二(线性加深,线性减淡,变亮,变暗) // PS_Algorithm.h #ifndef PS_ALGORITHM_H_INCLUDED #define PS ...
- OpenCV——PS 滤镜, 浮雕效果
具体的算法原理可以参考: PS 滤镜, 浮雕效果 // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITH ...
- OpenCV——PS 滤镜, 曝光过度
算法原理可以参考: PS 滤镜,曝光过度 #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include <io ...
- Python: PS 滤镜--旋涡特效
本文用Python 实现 PS 滤镜的旋涡特效,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/42215 ...
- Python: PS 滤镜--USM 锐化
本文用 Python 实现 PS 滤镜中的 USM 锐化效果,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/detail ...
- Python: PS 滤镜--表面模糊
本文用 Python 实现 PS 滤镜中的表面模糊,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/528 ...
- Python: PS 滤镜--旋转模糊
本文用 Python 实现 PS 滤镜中的旋转模糊,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/392 ...
随机推荐
- XMPP(三)-安卓即时通讯客户端
由于时间原因,所以更新比较慢 ,还请大家谅解,此次是对上篇文章中的安卓客户端初级版本进行的一次更新优化,在这次更新后,就有那么一点样子了,可以拿的出手了,呵呵,还在关注的同学也可以及时下载更新.此次主 ...
- 【移动开发】binder阻塞/非阻塞与单向/双向的问题
The client thread calling transact is blocked by default until onTransact has finishedexecuting on t ...
- The Ultimate Guide To iPhone Resolutions
备忘:http://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutionshttp://appicontemplate.com/
- 插件占坑,四大组件动态注册前奏(一) 系统Activity的启动流程
转载请注明出处:http://blog.csdn.net/hejjunlin/article/details/52190050 前言:为什么要了解系统Activity,Service,,BroadCa ...
- scala学习笔记2(类,继承,抽象类)
class Person{ // _ 是占位符; var name : String = _ val age : Int = 27 // private[this] 定义的内容无法外部使用,起到保护作 ...
- Android开发学习之路--数据持久化之初体验
上班第一天,虽然工作上处于酱油模式,但是学习上依旧不能拉下,接着学习android开发吧,这里学习数据持久化的 知识. 其实数据持久化就是数据可以保存起来,一般我们保存数据都是以文件,或者数据库的形式 ...
- 《java入门第一季》之集合框架TreeSet存储元素自然排序以及图解
这一篇对TreeSet做介绍,先看一个简单的例子: * TreeSet:能够对元素按照某种规则进行排序. * 排序有两种方式 * A:自然排序: 从小到大排序 * B:比较器排序 Comp ...
- OC语言编写:为视图添加丝滑的水波纹
先看一下最终效果图: 首先我们可以把如此丝滑的水波纹拆分一下下: 一条规律的曲线. 曲线匀速向右移动. 曲线下方的位置用颜色填充. 于是先来一条曲线吧. 对于需要产生波动如此规律的曲线,我们首先想到的 ...
- EBS DBA指南笔记(一)
第一章 ORACLE APPLICATIONS 的组件与架构 1.ebs组件的几大构成:客户端,form server,web server,concurrent processor,数据库.每个组 ...
- 【IOS 开发】Object-C 运算符
博客地址 : http://blog.csdn.net/shulianghan/article/details/41624613 1. 算术运算符 算术运算符 : 加(+), 减(-), 乘(*), ...