私は3 480行x 640列の画像を持っています。各画素は輝度値を保持する。Matlabのセル要素を1つのベクトルに結合する
私はこれにMATLABでそれらを読む:3パット= 1今
object_intensities = cell(1,6);
for pat=1:3
file1 = sprintf('image%d.pgm',pat-1);
dummy = double(imread(file1));
object_intensities{pat} = dummy;
end
、object_intensitiesはobject_intensitiesの各電池要素{特許}は480×640のマトリックスアレイ内の各画像を保持するようにセルアレイであります。実行する方法
structure{row 1, column 1} = [image1_intensity @ row1 column1 image2_intensity @ row1 column1 image3_intensity @ row1 column1]
structure{row 1, column2} = [image1_intensity @ row1 column2 image2_intensity @ row1 column2 image3_intensity @ row1 column2]
.
.
structure{row 480, column 640} = [image1_intensity @ row480 column640 image2_intensity @ row480 column640 image3_intensity @ row480 column640]
:
は今は必要な各セル要素は、このような単一のベクター内の各画像ピクセルの3つの強度を含むように480行×640列である単一構造でありますこれはループを使用せずにベクトル化を使用しますか?
は、RGBチャンネルのための3つの画像強度はありますか?または、「object_intensities」の各セルは実際には* 480 * -by- * 640 * -by- * 3 *行列を保持するか?実際には単一のチャンネルイメージを保持している場合( 'imread'を使用していると疑わしい場合は、最初にグレースケールに変換する必要があります)、' cat(3、object_intensities {:}) 'を試してみると、素晴らしい* 480 * -by- * 640 * -by- * 3 *行列です。しかし、基本的に画像を読むときに、ちょうどそれをやったことがあると思います。これは、通常のマトリックスと比較して動作するのは本当に難しいでしょう。 – Dan
イメージはすでにグレースケールです。 このデータ構造では、各画像ピクセルの強度シーケンスが必要なので、私はこれを説明したいと思います。 – user1431515
3Dマトリックスは依然として優れていますが、セル配列は扱うのがはるかに難しいです。また、グレースケールであるかどうかにかかわらず、 'imread'が画像RGBをデフォルトで作ることを確信しています。それでも変換は必要です。 – Dan