2017-02-01 6 views
0

イメージを9個の同等またはほぼ等しいパーティションに分割し、それぞれのパーティションをアレイに格納する必要があります。したがって、最終的な結果は、配列の各要素が画像のパーティションを表す2x2配列である配列の配列のようになります。これまでのところ、私は次のコードを考え出しました。パーティションイメージを9個の等しいまたはほぼ等しいパーティションに分割:Matlab

function [ outputImageRectangles ] = getImagePartitions(inputImage) 
%Write the code to partition image into 9 equal or nearly equal size 
%rectangles 
[height, width] = size(inputImage); 
partitions = zeros(3,3); 
for i=0:2 
    for j=0:2 
     loweri = floor(i*height/3)+1; 
     higheri = floor((i+1)*height/3); 
     lowerj = floor(j*width/3)+1; 
     higherj = floor((j+1)*width/3); 
     x = i+1; 
     y = j+1; 
     loweri 
     higheri 
     lowerj 
     higherj 

     partitions(x,y,:,:) = inputImage(loweri:higheri, lowerj:higherj); 
    end 
end 
outputImageRectangles = partitions; 

end 

私はパーティショニングのプロセスはうまくいくと思っていますが、各パーティションを配列要素に格納するのに問題があります。私は非常にmatlabには新しく、ちょうどそれを把握しようとしています。私は配列要素として別の配列を含むことができるセル配列についても少し読んでいます。これまでのところ、このコードでは、配列の寸法の不一致があるため、明らかに、このコードでエラーが表示されます。

partitions(x,y,:,:) = inputImage(loweri:higheri, lowerj:higherj); 

私の質問は、パフォーマンスをあまり低下させずにこのタスクを実行する方法です。この機能は12000を超えるイメージに対して呼び出されるため、パフォーマンスが重要です。

+0

私は 'partitions'の4Dインデックス作成の目的を理解していません、あなたはさらに説明できますか?最終的な結果は、潜在的に異なるサイズの9画像ではないでしょうか?これを保存する最良の方法は、 'partitions {x、y} = ...'のようなセル配列です。ただし、4Dが意味するところがない場合は、 –

+0

その4Dは正しい方法を知らないので意味がありません。私は 'パーティション(x、y、:)'を試したが、まだエラーが出た。 –

+0

あなたは私が提案したものを試しましたか? –

答えて

3

これを試してみることができます。あなたのサブブロックは同じサイズではないので、データを格納するための最良のオプションです。

partitions{x,y} = inputImage(loweri:higheri, lowerj:higherj); 
-1

あなただけのセル配列を使用し

function [ outputImageRectangles ] = getImagePartitions(inputImage) 
[height, width] = size(inputImage); 
for i=0:2 
    for j=0:2 
     loweri = floor((i*height)/3)+1; 
     higheri = floor((i+1)*height/3); 
     lowerj = floor(j*width/3)+1; 
     higherj = floor((j+1)*width/3); 
     x = i+1; 
     y = j+1; 

     partitions{x,y} = inputImage(loweri:higheri, lowerj:higherj); 
    end 
end 
outputImageRectangles = partitions; 
+0

@downvoter、コメントを残してください。 –

+0

私はdownvoteをしませんでしたが、 'partitions 'は今この答えが2D配列のようなセル配列にインデックスを付ける4Dセル配列です。このコードは 'partiions {x、y}'が実行されて初めてクラッシュします。 – rayryeng

+0

私はdownvoted havent、しかしこれは文字通り私の答えとOPsコードのコピー貼りです、あなたは余分な情報を追加しませんでした –

関連する問題