1
今天我想在Matlab中對半透明多邊形(特別是三角形)進行實驗。我需要做的是繪製幾個(半透明)多邊形(可以重疊)到圖中,然後得到RGB像素值的矩陣(大小爲H×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)值。此外,poly2mask不會給出三角形邊緣的「流暢轉換」(因爲輸出是布爾0/1)。 有沒有一些功能類似於poly2mask,但返回間隔[0,1]的值,這應該給邊緣一些平滑?
P.S .:我正在使用Matlab R2015b在Ubuntu 14.04上工作。