过冷水诚挚邀请你加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载,群号:927550334
我们经常会看见一下美术生为了想自己喜欢的女生表达情感,用女生的名字作画。本期过冷水就和大家分享一下如何用Matlab实现类似的效果。
一、实现原理
对于一幅图像而言,总是可转换成取值范围在[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 的字符密度数据,根据文字密度与图像灰度关系就可以完成图像得到字符化过程。就可以得到下图所示。
就这样过冷水和大家分享了图像的字符化实现方法,应用该方法可以做一下放在ppt上的简图,增加你ppt的档次。
过冷水发表于 仿真秀 平台原创文章,未经授权禁止私自转载,如需转载请需要和作者沟通表明授权声明,未授权文章皆视为侵权行为,必将追责。如果您希望加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载均可加群:927550334。
精品回顾
过冷水和你分享 matlab读取存储各种文件的方法 文末有独家金曲分享