輪郭プロットの内容を画像マトリックスとして取得する方法はありますか?図全体の軸、ラベル、および空きスペースではなく、コンテンツのみをラスタライズしたい。
私の目標は、透明な色付きの等高線図をグレースケール画像にオーバーレイすることですが、MATLABには図ごとに1つのカラーマップしかないため、別の方法はわかりません。
輪郭プロットの内容を画像マトリックスとして取得する方法はありますか?図全体の軸、ラベル、および空きスペースではなく、コンテンツのみをラスタライズしたい。
私の目標は、透明な色付きの等高線図をグレースケール画像にオーバーレイすることですが、MATLABには図ごとに1つのカラーマップしかないため、別の方法はわかりません。
frame2im
ドキュメントからの例:
Create and capture an image using getframe and frame2im:
peaks %Make figure
f = getframe; %Capture screen shot
[im,map] = frame2im(f); %Return associated image data
if isempty(map) %Truecolor system
rgb = im;
else %Indexed system
rgb = ind2rgb(im,map); %Convert image data
end
質問に対する直接の答えではありませんが、これがあなたがあなたの目標を達成できると私が思う方法です:
%# load in grayscale image
gray_im = rgb2gray(imread('peppers.png'));
%# converting n x m grey image to n x m x 3 rgb gray image
rgb_gray_im = cat( 3, gray_im, gray_im, gray_im );
%# displaying this image
imshow( rgb_gray_im );
%# plotting contourf on top with arbitrary colourmap
hold on
h = axes('position', [0.5, 0.5, 0.2, 0.2]);
z = peaks;
contourf(h, z, [min(z(:)), -6 : 8]);
結果は次のようになります。
図のカラーマップは、contourfプロットに使用されています。背景画像はカラーマップに依存せず、代わりにトゥルーカラーで表示されます。つまり、各ピクセルはrgb_gray_imで定義されたRGB値として表示されます。
MATLABカラーマップの制限を回避する方法は他にもあります。たとえば、このブログ投稿またはこれらの回答を参照してください。