1

画像を読み取って、後で他の画像 (同じ高さと幅) を貼り付ける大きな画像に貼り付けようとしています。私はMatlabの経験がないと言わざるを得ないので、どんな提案も大歓迎です。

現在、より大きなゼロのマトリックスを作成し、画像の要素 (RGB) を貼り付けています。しかし、私が望むように表示されていません。ほとんど白い画像が表示されます。

Bigger は、より大きな画像の名前です。

[im1 map1] = imread('/12937.png');
[height width rgbsize]=size(im1)
bigger=zeros(height+200,width+200,3);
figure('name','original');imshow(im1) %displays my image correctly
bigger(1:height,1:width,:)=im1(:,:,:); 
figure('name','after');imshow(bigger); %displays a mostly white image with dark right and bottom borders (the extra size)
4

1 に答える 1

1

一部のイメージ関数は、データ型の影響を受けます。 imreadは uint8 型の行列を返しますが、デフォルトでzerosは double 型の行列を返します。 imshow(またはimageor imagesc) はすべて double データで操作できますが、$\in [0,255]$ ではなく $\in [0,1]$ を期待しています。

これを試して:

[im1 map1] = imread('/12937.png');
[height width rgbsize]=size(im1)

% note: initialise the data type as well as the size
bigger=zeros(height+200,width+200,3, 'uint8');

figure('name','original');imshow(im1) 
bigger(1:height,1:width,:)=im1(:,:,:); 
figure('name','after');imshow(bigger); 

whosコマンドを使用するか、GUI のワークスペース部分を調べると、im1 のタイプを確認できます。uint8 でない場合は、それzerosに応じてコマンドを調整します。

于 2013-09-30T21:12:32.617 に答える