将alpha形状导出/栅格化为位图

时间:2017-08-22 17:21:02

标签: matlab bitmap export shape rasterize

我从某些点(代码中给出的示例)构建alpha形状,并希望将形状导出为光栅图形格式。我只需要形状,而不是绘图标记(轴,刻度等)。

我只需要在白色地面上得到的三角形作为位图。 比例需要为1个单位= 1个像素。

x = [0 10 20 30 30 30 15];
y = [0 0 0 0 15 30 15];

shape = alphaShape (x',y');

plot (shape, 'FaceColor', 'black');

alpha shape plotted

我还没有找到有关如何导出形状或如何栅格化它们的任何信息。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

运行以下代码。

imgwidth = max(1, ceil(max(x) - min(x)));
imgheight = max(1, ceil(max(y) - min(y)));
ax = gca;
ax.Visible = 'off';
ax.XTickMode = 'manual';
ax.YTickMode = 'manual';
ax.ZTickMode = 'manual';
ax.XLimMode = 'manual';
ax.YLimMode = 'manual';
ax.ZLimMode = 'manual';
ax.Position = ax.OuterPosition;
af = gcf;
figpos = getpixelposition(af);
resolution=get(0, 'ScreenPixelsPerInch');
set(af, 'paperunits','inches', ....
    'papersize',[imgwidth imgheight]/resolution, ....
    'paperposition',[0 0 [imgwidth imgheight]/resolution]);
print(af,'out.png','-dpng',['-r',num2str(resolution)],'-opengl')

完成的事情:

  • 获取数据范围并转换为图像尺寸。
  • 关闭轴和刻度。
  • 最小化/删除实际内容周围的填充空间。
  • 将数据中的1个单位映射到输出图像中的1个像素。

未完成的事情:

  • 保证宽高比。 (应该可以工作)

此屏幕截图显示非统一宽高比输出:

example screenshot

参考

Mathworks - Save Figure at Specific Size and Resolution

MATLAB Central - saving a figure at a set resolution

Mathworks - print

Mathworks - Save Figure with Minimal White Space