MATLAB实现将图像转换为素描(简笔画)风格
代码:
colorgrad.m
function [VG, A, PPG] = colorgrad(f, T)
if (ndims(f)~=) || (size(f,)~=)
error('Input image must be RGB');
end
sh = fspecial('sobel');
sv = sh';
Rx = imfilter(double(f(:,:,)), sh, 'replicate');
Ry = imfilter(double(f(:,:,)), sv, 'replicate');
Gx = imfilter(double(f(:,:,)), sh, 'replicate');
Gy = imfilter(double(f(:,:,)), sv, 'replicate');
Bx = imfilter(double(f(:,:,)), sh, 'replicate');
By = imfilter(double(f(:,:,)), sv, 'replicate'); gxx = Rx.^ + Gx.^ + Bx.^;
gyy = Ry.^ + Gy.^ + By.^;
gxy = Rx.*Ry + Gx.*Gy + Bx.*By;
A = 0.5*(atan(*gxy./(gxx-gyy+eps)));
G1 = 0.5*((gxx+gyy) + (gxx-gyy).*cos(*A) + *gxy.*sin(*A)); A = A + pi/;
G2 = 0.5*((gxx+gyy) + (gxx-gyy).*cos(*A) + *gxy.*sin(*A));
G1 = G1.^0.5;
G2 = G2.^0.5;
VG = mat2gray(max(G1, G2)); RG = sqrt(Rx.^ + Ry.^);
GG = sqrt(Gx.^ + Gy.^);
BG = sqrt(Bx.^ + By.^); PPG = mat2gray(RG + GG + BG); if nargin ==
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 = - ppg;
[M,N] = size(ppgf);
T=;
ppgf1 = zeros(M,N);
for ii = :M
for jj = :N
if ppgf(ii,jj)<T %边缘区域
% ppgf1(ii,jj)=;
ppgf1(ii,jj)=(T-ppgf1(ii,jj))/;
else %平滑区域
ppgf1(ii,jj)=/(-T)*(ppgf(ii,jj)-T);
end
end
end
ppgf1 = uint8(ppgf1);
figure;
subplot();imshow(ppgf);
subplot();imshow(ppgf1);
subplot();imhist(ppgf);
subplot();imhist(ppgf1); figure;imshow(ppgf1);
效果:


MATLAB实现将图像转换为素描(简笔画)风格的更多相关文章
- Matlab图像处理(02)-图像基础
数据类 Matlab中和IPT中支持的基本数据类型如下: 名称 描述 double 双精度浮点数,范围-10308~10308 8字节 uint8 无符号1字节整数,范围[0, 255] uint1 ...
- 使用matlab批量处理图像后在指定文件夹存储
使用matlab批量处理图像后在指定文件夹存储 clear;clc;close all; Files=dir('D:\文件及下载相关\文档\MATLAB\postgraduate\Kodak\*.jp ...
- 【转载】从零实现3D图像引擎:(2)画2D直线不简单
原文:从零实现3D图像引擎:(2)画2D直线不简单 1. 数学分析 1) 画直线的问题 本来我以为画直线会很容易,随便拿个直线公式,遍历X求Y画出来不就完了么,但事实并非如此.以2D直线为例,因为3D ...
- Qt之图形(简笔画-绘制卡通蚂蚁)
简述 关于简笔画的介绍很多,有动物.水果.蔬菜.交通工具等,通常会对绘制一步步进行拆分.组合.然后绘制为我们想要的结果. 下面来介绍另外的一个种类:昆虫类-卡通蚂蚁. 简述 绘制 效果 源码 绘制 效 ...
- Qt之图形(简笔画-绘制漂亮的西瓜)
简述 Summer is coming-我们呢,为大家准备了丰盛的佳果-西瓜,清爽解渴,甘味多汁. 一笔一划学简笔画,分分钟让你掌握一门新技能,下面我们来绘制一个"盛夏之王"-西瓜 ...
- CSS如何将图像转换为模糊图像?
在CSS中,可以使用filter属性来模糊处理图像:filter属性用于将图像转换为模糊图像.该属性主要用于设置图像的视觉效果. 语法: filter: blur() 属性值: ● blur():给图 ...
- 在C#中将图像转换为BASE64
本教程说明如何在C#.NET Windows Forms Application中将图像转换为base64字符串,以及将base64字符串转换为图像.您可以创建一个新的Windows窗体应用程序项目来 ...
- Python代码阅读(第21篇):将变量名称转换为蛇式命名风格
Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码 本篇阅读的代码实现将变量名称转换为蛇式命名风格(snake case)的功能. 本篇阅读的代码片段来自于30-second ...
- matlab在处理图像时为什么把数据转换为double型?
1 有些函数支持double型,而不支持uint8的数据类型,所以要转换 2 精度问题了,因为uint8进行数据处理的时候,容易造成数据溢出或精度不够. 为了节省存储空间,matlab为图像提供了特殊 ...
随机推荐
- js 正则 以字母开头必须有 大小写字母数字组成 可以有“@"或 ”.“
js 正则 以字母开头必须有 大小写字母数字组成 可以有“@"或 ”.“ var reg = /^[a-zA-Z]{1}(?=.*[a-z])(?=.*[A-Z])[a-zA-Z\d_@ ...
- C++(MFC)中WebBrowser去除3D边框的方法(实现IDocHostUIHandler接口)控制 WebBrowser 控件的外观和行为
在 CSDN 上经常看到以下两个问题:1.在 MFC 应用程序中,如果创建了一个 WebBrowser 控件(包括 CHtmlView 在内),如何可以把该控件的三维边框禁止掉?2.在 MFC 应用程 ...
- JNI Local Reference Changes in ICS
[This post is by Elliott Hughes, a Software Engineer on the Dalvik team. — Tim Bray] If you don’t wr ...
- Android中ListView异步加载图片错位、重复、闪烁问题分析及解决方案
我们在使用ListView异步加载图片的时候,在快速滑动或者网络不好的情况下,会出现图片错位.重复.闪烁等问题,其实这些问题总结起来就是一个问题,我们需要对这些问题进行ListView的优化. 比如L ...
- [转] mhvtl虚拟磁带库的安装与应用
转自:candon123 -- http://candon123.blog.51cto.com/704299/388192/ 1.获取mhvtl: 官方网站:http://mhvtl.nimsa.u ...
- Servlet实现定时刷新到另外一个页面response.setHeader("refresh", "3;url=/...")
想要实现,访问Responsedemo11的时候,3秒钟后,跳转到ResponseDemo10 用 response.setHeader("refresh", "3; ...
- Unity3D手游开发日记(8) - 运动残影效果
2D游戏的残影很简单,美术做序列帧图片就行了,那么3D游戏的残影美术做不了,得靠程序员动态创建模型来处理. 实现原理也很简单: 1.间隔一定时间创建一个残影模型 GameObject go = Gam ...
- 遇到的check the manual that corresponds to your MySQL server version for the right syntax错误
遇到的check the manual that corresponds to your MySQL server version for the right syntax错误. 结果发现是SQL关键 ...
- iOS 1 到 iOS 10 ,我都快老了
iOS 1:iPhone诞生 虽然很难想像,但初代iPhone在问世时在功能方面其实远远落后于那时的竞争对手,比如Windows Mobile.Palm OS.塞班.甚至是黑莓.它不支持3G.多任务. ...
- SublimeText为啥选择Python开发extension
真正优秀的软件是靠优秀的程序员开发出来的,反过来也一样,优秀的语言,平台,工具只有在优秀的程序员的手中才能显现出它的威力. 比如,Jon Skinner开发的SublimeText.桌面应用一般支持二 ...