今日は、Matlabで半透明のポリゴン(特に三角形)を試したかったのです。私がする必要があるのは、いくつかの(半透明の)ポリゴン(重なることができる)をFigureに描画し、RGBピクセル値のマトリックス(サイズH x W)を得ることです。私はこれまで行われているもののMatlab:ポリゴンを描画して指定されたサイズのイメージ行列を得るにはどうすればいいですか?
例:
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
が表示されている場合、私が見ることができる。
所望の出力です。しかし、すぐに、私はプリント(...)を呼び出し、ピクセルを表示するように、私は以下を参照してください。
好ましくない右側、上 白いエリアがあり。私が思う
は、その問題がの呼び出しである:
set(gca,'Position',[0,0,1,1])
が、私がそのようにMATLABに経験したわけではないとして、私はそれを修正する方法を、知りません。何か案は?
注:別の方法として、行列を直接使用する方法があります。私は三角形を塗りつぶす関数poly2maskを見つけましたが、それを使って、重ねて表示する三角形のRGB(A)値をすべて計算する必要があります。さらに、ポリ2マスクは、出力がブール値0/1であるため、三角形のエッジの周りに「流動的な遷移」を与えません。 関数はpoly2maskと似ていますが、端点に滑らかさを与えるべき区間[0,1]の値を返しますか?
P .:私はUbuntu 14.04でMatlab R2015bを使用しています。