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

原图

效果图

时间: 2024-09-28 15:44:37

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

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

这个算法结合高斯滤波和图层混合中的颜色减淡模式实现. 可以参考相关博客: http://blog.csdn.net/wsfdl/article/details/7610634 本文增加了一点调色,使得最终的素描效果可以不只是黑白,可以呈现不同的底色. % % % % % 将图像转换成黑白颜色 % % % % % 复制图像,并对复制后的图像反相 % % % % % 将复制后的图像做高斯模糊 % % % % % 将模糊后的图像与原图像以颜色减淡模式混合 % % % % % 设置一个底色层 % % %

PS 滤镜算法原理 ——马赛克

% method : 利用邻域的任意一点代替当前邻域所有像素点 %%%% mosaic clc; clear all; addpath('E:\PhotoShop Algortihm\Image Processing\PS Algorithm'); Image=imread('4.jpg'); Image=double(Image); size_info=size(Image); height=size_info(1); width=size_info(2); N=11;   % 控制邻域大小

Opencv——PS 图层混合算法 (二)

具体的算法原理可以参考 PS图层混合算法之二(线性加深,线性减淡,变亮,变暗) // PS_Algorithm.h #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include <iostream> #include <string> #include "cv.h" #include "highgui.h" #include "cxmat.hpp&q

PS 滤镜算法原理——照亮边缘

这个算法原理很简单,对彩色图像的R,G,B 三个通道,分别求梯度,然后将梯度值作为三个通道的值. clc; clear all; Image=imread('4.jpg'); Image=double(Image); R=Image(:,:,1); G=Image(:,:,2); B=Image(:,:,3); R_Gradient=Find_Gradient(R); G_Gradient=Find_Gradient(G); B_Gradient=Find_Gradient(B); Image_

PS 滤镜算法原理——浮雕效果

clc; clear all; Image=imread('4.jpg'); Image=double(Image); R=Image(:,:,1); G=Image(:,:,2); B=Image(:,:,3); p=3;  %% 控制浮雕的强度 %% 控制浮雕的方向 H=[0 0 p 0 0 0 -p 0 0]; Image_new=imfilter(Image,H,'conv')+128; figure, imshow(Image_new/255); 原图 效果图 PS 滤镜算法原理--浮

OpenCV——PS 滤镜, 浮雕效果

具体的算法原理可以参考: PS 滤镜, 浮雕效果 // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include <iostream> #include <string> #include "cv.h" #include "highgui.h" #include "cxmat.hpp" #inc

OpenCV——PS 滤镜, 曝光过度

算法原理可以参考: PS 滤镜,曝光过度 #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include <iostream> #include <string> #include "cv.h" #include "highgui.h" #include "cxmat.hpp" #include "cxcore.hpp"

OpenCV——PS 图层混合算法 (四)

具体的算法原理可以参考 PS图层混合算法之四(亮光, 点光, 线性光, 实色混合) // PS_Algorithm.h #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include <iostream> #include <string> #include "cv.h" #include "highgui.h" #include "cxmat.hpp

数据结构与算法二

1.课程安排表: 1. 线性表 2. 字符串 3. 栈和队列 4.树 5.查找 6.排序 7.暴力枚举法 8.广度优先搜索 9.深度优先搜索 10.分治 11.贪心 12.动态规划 13.图 14.数学方法与常见模型 15.大整数运算 16. 基础功能 2.   编程技巧: 1.把较大的数组放在main 函数(全局变量)外,作为全局变量,这样可以防止栈溢出,因为栈的大小是有限制的.GCC (C编译器) 段错误 2.如果能够预估栈,队列的上限,则不要用stack,queue,使用数组来模拟,这样速