【问题标题】:Matlab: paste RGB image into bigger imageMatlab:将RGB图像粘贴到更大的图像中
【发布时间】:2013-10-01 05:12:32
【问题描述】:

我正在尝试读取图像并将其粘贴到更大的图像中,稍后我将在其中粘贴其他图像(相同的高度和宽度)。我不得不说我没有使用 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)

【问题讨论】:

    标签: image matlab rgb paste


    【解决方案1】:

    一些图像函数对数据类型很敏感。 imread 为您提供 uint8 类型的矩阵,而默认情况下,zeros 为您提供 double 类型的矩阵。 imshow(或imageimagesc)可以对所有双精度数据进行操作,但他们希望它是$\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); 
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-21
      • 1970-01-01
      • 1970-01-01
      • 2011-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-15
      相关资源
      最近更新 更多