2016-10-10 11 views
1

今日は、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が表示されている場合、私が見ることができる。

this

所望の出力です。しかし、すぐに、私はプリント(...)を呼び出し、ピクセルを表示するように、私は以下を参照してください。

好ましくない右側、上 白いエリアがあり

this

。私が思う

は、その問題がの呼び出しである:

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

が、私がそのようにMATLABに経験したわけではないとして、私はそれを修正する方法を、知りません。何か案は?

注:別の方法として、行列を直接使用する方法があります。私は三角形を塗りつぶす関数poly2maskを見つけましたが、それを使って、重ねて表示する三角形のRGB(A)値をすべて計算する必要があります。さらに、ポリ2マスクは、出力がブール値0/1であるため、三角形のエッジの周りに「流動的な遷移」を与えません。 関数はpoly2maskと似ていますが、端点に滑らかさを与えるべき区間[0,1]の値を返しますか?

P .:私はUbuntu 14.04でMatlab R2015bを使用しています。

答えて

0

それはそう、

axis tight; 

axis off; 

を交換すると何とか問題を解決していること。

関連する問題