实际上我正在尝试在以下网站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;
你可以帮我解决这个问题吗?
答案 0 :(得分: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
我没有测试过,所以你可能需要调整一下才能使尺寸完美,比如尺寸(I2,2) - 尺寸(I1,2)+ 1而不是尺寸(I2,2) - 大小(I1,2),那种事。
但是你需要首先找出你想要做的事情的逻辑。使用零填充可能在您的应用程序中没有意义。另外我的代码填充在底部和左侧,但您可能想要一直填充,以便您的图像位于新图像的中心。