Matlab:如何绘制多边形图并获得指定大小的图像矩阵?

时间:2016-10-10 11:30:38

标签: matlab matrix geometry matlab-figure polygons

今天我想在Matlab中试验半透明多边形(特别是三角形)。我需要做的是绘制几个(半透明的)多边形(可以重叠)到图中,然后得到RGB像素值的矩阵(大小为H x W)。

到目前为止我所做的

示例

H = 100; % Desired height (in pixels)
W = 150; % Desired width  (in pixels)

f = figure('Position',[0,0,W,H],'Resize', 'off', 'DockControls', 'off','PaperUnits','inches','PaperPosition',[0,0,W,H]);
axis off; 
hold on;

% Background
fill([0,W,W,0,0], [0,0,H,H,0], 'black', 'FaceAlpha',1, 'EdgeColor', 'none'); 

% Other polygons
fill([20,60,95], [40,80,10], 'r', 'FaceAlpha',0.5, 'EdgeColor', 'none');
fill([10,45,80], [10,90,25], 'g', 'FaceAlpha',0.5, 'EdgeColor', 'none');
% ... there will be more of them

set(gca,'Position',[0,0,1,1]) % This seems to be a problem

pixels = print('-RGBImage','-r1'); % Get RGB matrix

% Try to show the result
figure
imshow(pixels)

当图f可见时,我可以看到:

this

这是期望的输出。但是一旦我调用print(...)并显示像素,我就会看到:

this

右侧有白色区域,这是不受欢迎的。

我想,问题在于:

set(gca,'Position',[0,0,1,1])

但由于我对Matlab不太熟悉,我不知道如何修复它。有什么想法吗?

注意:另一种方法可能是直接使用矩阵。我找到了一个函数poly2mask,可以为我填充三角形,但是使用它,我需要自己计算覆盖三角形的所有RGB(A)值。此外,poly2mask不会给出流畅的过渡和#39;围绕三角形的边缘(因为输出是布尔0/1)。 是否有一些函数类似于poly2mask,但在interval [0,1]中返回值,这应该在边缘上给出一些平滑度?

P.S。:我正在使用Matlab R2015b开发Ubuntu 14.04。

1 个答案:

答案 0 :(得分:0)

看来,替换

axis tight;

@Autowired

以某种方式解决了这个问题。