0

实际上,我正在尝试在以下网站http://www.mathworks.com/matlabcentral/fileexchange/28300上实现代码,但这仅在给定的两个图像具有相同尺寸时才有效,我想让此代码在一个图像中工作有一些维度,其他有一些其他维度,如果我用当前代码这样做,它会给出错误

??? Sub scripted assignment dimension mismatch. Error in ==> example2 at 27

第 27 行:

I(:,1:size(I1,2),:)=I1; I(:,size(I1,2)+1:size(I1,2)+size(I2,2),:)=I2; 

你能为我解决这个问题吗?

4

1 回答 1

1

您可以尝试用零填充较小的图像,使其具有与较大图像相同的尺寸。例如

%Start with rows:    
if size(I1,1) > size(I2,1) %I1 has more rows so pad I2
        pad = zeros (size(I1,1) - size(I2,1), size(I2,2));
        I2 = [I2 ; pad]; %Append the rows of zeros to the bottom of I2
else %I2 has more rows so pad I1
        pad = zeros (size(I2,1) - size(I1,1), size(I1,2));
        I1 = [I1 ; pad]; %Append the rows of zeros to the bottom of I1

%Pad the columns    
if size(I1,2) > size(I2,2) %I1 has more rows so pad I2
        pad = zeros (size(I2,1), size(I1,2) - size(I2,2));
        I2 = [I2 , pad]; %Append the columns of zeros to the left of I2
else %I2 has more rows so pad I1
        pad = zeros (size(I1,1), size(I2,2) - size(I1,2));
        I1 = [I1 , pad]; %Append the columns of zeros to the left of I1

我还没有测试过,所以你可能需要摆弄一下才能得到完美的尺寸,比如 size(I2,2) - size(I1,2) + 1 而不是 size(I2,2) - size(I1 ,2),诸如此类。

但是您需要首先弄清楚您正在尝试做的事情的逻辑。在您的应用程序中使用零填充可能没有意义。我的代码垫也在底部和左侧,但您可能想要一直填充,以便您的图像位于新图像的中心。

于 2012-04-17T07:11:25.620 回答