2012-04-17 4 views
0

実際に私は次のウェブサイトhttp://www.mathworks.com/matlabcentral/fileexchange/28300にコードを実装しようとしていますが、これは2つの画像の寸法が同じである場合にのみ機能します。寸法不一致に関する

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

あなたは私のためにこれを解決することができます:私は、現在のコードでこれを行う場合、いくつかの他の寸法を有し、それは27行目のエラーに

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

を与えますか?

答えて

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)、そのようなもの。

しかし、まず自分がしようとしていることの論理を理解する必要があります。あなたのアプリケーションでゼロで埋めても意味がないかもしれません。また、私のコードパッドは下部と左にありますが、あなたのイメージが新しいイメージの中心にくるように、パッドをしっかりとしたいかもしれません。

+0

+1。他の選択肢は、より大きな画像をより小さな画像のサイズに切り出すことである。 –

+0

ええ、作付けは可能ですが、情報が失われている可能性は低いです。しかし、他のオプションがあります。たとえば、パディングは0にはなりません。画像をエッジや他の形の外挿に反映させるかもしれません。しかし、それは完全に文脈上のものです。 – Dan

+1

画像処理ツールボックスでは、代わりに 'padarray'を使うことができます。 – Jonas

関連する問題