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

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

可以参考相关博客:

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

原图

效果图

效果图

时间: 2024-10-09 20:23:27

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

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(

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;   % 控制邻域大小

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

PS 滤镜——染色玻璃

%%%% 完成PS 中的染色玻璃滤镜特效 clc; clear all; close all; Image=imread('4.jpg'); Image=double(Image); Gray_Image=rgb2gray(Image/255); [row,col]=size(Gray_Image); S_filter=fspecial('sobel'); G=sqrt(imfilter(Gray_Image, S_filter, 'replicate').^2+... imfilter(Gra

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