用符号替换像素

时间:2015-03-29 19:26:23

标签: matlab matlab-figure

我正在尝试编写一个将索引图像作为输入的函数,并将用符号或字符替换所有像素。

图像的价值超过1000字:这是所需的外观输出。每个符号代表图像的唯一颜色值。

enter image description here

我的问题是我不知道如何在屏幕上打印正确位置的符号。我的第一个方法是使用" Wingdings"字体并在文本上放置文本,但不能按预期工作。文本在缩放时会改变大小,并且不会与绘图的其余部分相对应。

我在这里留下一小段代码,创建一个小网格并使用示例图像。

function drawChars (img)
if nargin==0
    load mandrill
    img=X(1:4:end,1:4:end);
end


chars=randperm(numel(unique(img)));

[h,w]=size(img);
% Form a grid
figure
hold on
for ii=0:h
   plot([ii ii],[0 w],'k');
end
for ii=0:w
   plot([0 h],[ii ii],'k');
end
axis equal;
axis([0 h 0 w])

%% This does not work as expected
for ii=1:h
    for jj=1:w
        text(ii, jj, char(chars(img(ii,jj))), 'fontname', 'Wingdings', 'fontsize',10);
    end
end

end

简短的问题:您将采用什么方法来解决问题?

注意:chars的选择也存在问题,但暂时忽略它(如果char {被选中不能很好地工作)

1 个答案:

答案 0 :(得分:0)

figure更改为f=figure

r=size(img).*16;
set(f,'paperunits','points')
set(f,'papersize',r)
set(f,'paperposition',[0 0 r]);
print(f,'example.png','-dpng');

将创建的图形打印到足够大小的png。