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 ...
随机推荐
- 手动添加SSH支持、使用c3p0
之前做的笔记,现在整理一下:大家有耐心的跟着做就能成功: SSH(struts2.spring.hibernate) * struts2 * 充当mvc的角色 * hibernate ...
- 视频编码器评测系统:VideoCodecRank
视频编码器领域一直有个比较复杂的问题:mpeg2.divx.xvid.mpeg4.vp8.vp9.x264.openh264.x265等等这一系列编码器到底哪个好?而对于同一种视频编码器,又包括了各种 ...
- Django 表单校验 表单字段设置 自定义表单校验规则
今天看到了一篇非常好的博文,拿来和大家分享一下. 内容包括了: 用户注册时输入数据的校验 使用widget进行字段设置 实现自定义的校验规则 参考自下面的这篇文章
- FFmpeg源代码简单分析:configure
===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...
- Android简易实战教程--第十四话《模仿金山助手创建桌面Widget小部件》
打开谷歌api,对widget小部件做如下说明: App Widgets are miniature application views that can be embedded in otherap ...
- Android初级教程反射+AIDL+内容观察者监控黑名单号码代码模板
对于想要拦截一些莫名的陌生号码,就需要电话拦截功能与删除其电话记录功能.拦截的主要业务逻辑,分别是在一个服务里面进行:1.注册电话监听:2.取消注册电话监听(当然注册于取消是在服务里面建立一个广播接收 ...
- Android 5.x 权限问题解决方法
android 5.x开始,引入了非常严格的selinux权限管理机制,我们经常会遇到因为selinux权限问题造成的各种avc denied困扰. 本文结合具体案例,讲解如何根据log来快速解决9 ...
- 安卓banner图片轮播
之前写过一篇关于首页图片广告轮播的demo:http://blog.csdn.net/baiyuliang2013/article/details/45740091,不过图片轮播的指示器(小白点)处操 ...
- J2EE学习从菜鸟变大鸟之八 企业级项目开发的思考
什么是企业级项目开发 "企业级项目".企业级项目开发,Java也是企业级项目开发,这个我们到处说.听,每天被我们挂在嘴边,可是到底什么项目才算是"企业级"?自己 ...
- 【一天一道LeetCode】#116. Populating Next Right Pointers in Each Node
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 来源:http ...