• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

MATLAB实现将图像转换为素描(简笔画)风格

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

代码:

 colorgrad.m

function [VG, A, PPG] = colorgrad(f, T)
if (ndims(f)~=3) || (size(f,3)~=3)
    error(\'Input image must be RGB\');
end
sh = fspecial(\'sobel\');
sv = sh\';
Rx = imfilter(double(f(:,:,1)), sh, \'replicate\');
Ry = imfilter(double(f(:,:,1)), sv, \'replicate\');
Gx = imfilter(double(f(:,:,2)), sh, \'replicate\');
Gy = imfilter(double(f(:,:,2)), sv, \'replicate\');
Bx = imfilter(double(f(:,:,3)), sh, \'replicate\');
By = imfilter(double(f(:,:,3)), sv, \'replicate\');
 
gxx = Rx.^2 + Gx.^2 + Bx.^2;
gyy = Ry.^2 + Gy.^2 + By.^2;
gxy = Rx.*Ry + Gx.*Gy + Bx.*By;
A = 0.5*(atan(2*gxy./(gxx-gyy+eps)));
G1 = 0.5*((gxx+gyy) + (gxx-gyy).*cos(2*A) + 2*gxy.*sin(2*A));
 
A = A + pi/2;
G2 = 0.5*((gxx+gyy) + (gxx-gyy).*cos(2*A) + 2*gxy.*sin(2*A));
G1 = G1.^0.5;
G2 = G2.^0.5;
VG = mat2gray(max(G1, G2));
 
RG = sqrt(Rx.^2 + Ry.^2);
GG = sqrt(Gx.^2 + Gy.^2);
BG = sqrt(Bx.^2 + By.^2);
 
PPG = mat2gray(RG + GG + BG);
 
if nargin ==2
    VG = (VG>T).*VG;
    PPG = (PPG>T).*PPG;
end

demo.m

close all;clear all;clc;
f = imread(\'wo.jpg\');
[VG,A,PPG] = colorgrad(f);
ppg = im2uint8(PPG);
ppgf = 255 - ppg;
[M,N] = size(ppgf);
T=150;
ppgf1 = zeros(M,N);
for ii = 1:M
    for jj = 1:N
        if ppgf(ii,jj)<T %边缘区域
%             ppgf1(ii,jj)=0;
            ppgf1(ii,jj)=(T-ppgf1(ii,jj))/5;
        else %平滑区域
            ppgf1(ii,jj)=235/(255-T)*(ppgf(ii,jj)-T);
        end
    end
end
ppgf1 = uint8(ppgf1);
figure;
subplot(221);imshow(ppgf);
subplot(222);imshow(ppgf1);
subplot(223);imhist(ppgf);
subplot(224);imhist(ppgf1);
 
figure;imshow(ppgf1);

效果:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab-画地形图发布时间:2022-07-18
下一篇:
关于delphi和sqlsever开发出的管理系统运行问题发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap