首页/文章/ 详情

matlab 实现名字作画

3年前浏览2697

image.png

 过冷水诚挚邀请你加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载,群号:927550334 

QQ图片20210424105303.png

    我们经常会看见一下美术生为了想自己喜欢的女生表达情感,用女生的名字作画。本期过冷水就和大家分享一下如何用Matlab实现类似的效果。

689_1614751570000.png

实现原理

    对于一幅图像而言,总是可转换成取值范围在[0, 255]之间灰度图像,将灰度图用最大灰度值作归一化处理,归一化后的值作为像素点所在位置的灰度密度;对于汉字而言,往往具有不同数量和形状的笔画,若在一个固定的区域内使用同一种字体书写汉字,则不同汉字所占的区域面积一般是不同的,将每个汉字所占区域面积与总区域面积作比,并把对应的比值作为汉字密度。若将图像灰度密度与汉字密度建立一一对应关系,即可把相同位置的像素点用对应像素密度的汉字来占据,这样就可以完成从像素图到字符化图的转换。不难看出,算法主要包括两个部分:一是建立一个汉字密度库,包含汉字与其密度;二是实现汉字密度与图像灰度密度之间的转换。

二、实现过程

创建汉字密度库

clc;clear;

str=['户田惠梨香'];

N = size(str,2);

strR =zeros(N,1);

fig = figure('color',[1 1 1]);

hold on;

xlim([0,0.5]);ylim([0,0.5]);

set(gcf,'Position',[488 342 375 420]);

set(gca,'Position',[0.0 0.0 1 1]);

ax = gca;

F = getframe;

strd = F.cdata;

aS = size(strd,1)*size(strd,2);

axis off;

for k = 1:N

    text(ax,0,0,str(k),'FontUnits','normalized','FontSize',0.9,'verticalAlignment','bottom');

    F = getframe;

    strd = F.cdata;

    strdm = mean(strd,3);

    strdm = uint8((strdm ~= 255));

    aC = sum(strdm(:));

    strR(k) = aC/aS;

    cla;

end


    经过上述处理,我们会得到一个strR 的字符密度数据,根据文字密度与图像灰度关系就可以完成图像得到字符化过程。就可以得到下图所示。


142.jpg

就这样过冷水和大家分享了图像的字符化实现方法,应用该方法可以做一下放在ppt上的简图,增加你ppt的档次。

图片

过冷水发表于 仿真秀 平台原创文章,未经授权禁止私自转载,如需转载请需要和作者沟通表明授权声明,未授权文章皆视为侵权行为,必将追责。如果您希望加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载均可加群:927550334。

精品回顾

 matlab绘制农夫过河动态图

分子动力学的原子空间运动轨迹演示编程

过冷水带你用matlab制作演示动画

python批量移动文件&重命名代码分享

过冷水和你分享 matlab读取存储各种文件的方法 文末有独家金曲分享

image.png

理论科普代码&命令其他软件
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2021-04-25
最近编辑:3年前
过冷水
博士 | 讲师 讨论号:927550334
获赞 361粉丝 184文章 107课程 11
点赞
收藏
作者推荐

¥5 5.0
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈