【问题标题】:error in MATLAB regarding dimensions mismatchMATLAB 中关于尺寸不匹配的错误
【发布时间】:2012-04-17 06:58:39
【问题描述】:

实际上,我正在尝试在以下网站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; 

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

【问题讨论】:

    标签: image matlab


    【解决方案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) 之类的。

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

    【讨论】:

    • +1 以获得很好的解释。另一种选择是将较大的图像裁剪为较小的图像。
    • 是的,裁剪是一种可能性,但由于它会丢失信息,因此似乎不太可能。但是还有其他选项,例如填充但不使用零。也许在边缘反映图像或其他形式的外推。但这完全是上下文相关的。
    • 有了图片处理工具箱,可以改用padarray
    猜你喜欢
    • 2015-06-24
    • 2014-12-14
    • 2017-09-12
    • 1970-01-01
    • 2018-01-29
    • 2011-07-28
    • 2013-12-23
    • 2017-10-28
    • 1970-01-01
    相关资源
    最近更新 更多