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(or imageor imagesc) 可以对所有双精度数据进行操作,但他们希望它是 $\in [0,1]$ 而不是 $\in [0,255]$。

尝试这个:

[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); 

您可以使用命令检查 im1 的类型whos,或查看 GUI 的工作区部分。如果不是 uint8,则zeros相应地调整命令。

于 2013-09-30T21:12:32.617 回答