2

を使用して画像のセル配列を一緒に追加したいのですがimaddimadd2 つの引数しか取りません。MATLAB に、for ループを記述せずにこれらの画像をすべて追加できる reduce 関数はありますか?

images = {im1, im2, im3};
sum = reduce(@imadd, images);
4

2 に答える 2

1

余分な次元を持つ配列を使用できます。例: 2-d (グレースケール画像)

images = {im1, im2, im3};
imarr = cat(3, images{:});
imsum = sum(imarr, 3);

もちろん、そもそもセル配列を作成する必要はありません。あなたはまっすぐ行くことができます

imarr = cat(3, im1, im2, im3);
imsum = sum(imarr, 3);

あるいは

imsum = sum(cat(ndims(im1)+1, im1, im2, im3),ndims(im1)+1);

これは、より一般的に任意の次元行列を結合します。

于 2012-07-27T19:27:09.737 に答える
0

Image Processing Toolbox を使用しているため、IMLINCOMB関数 (イメージの線形結合) も使用できます。すべての係数を 1 つとして与えるだけです。

imsum = imlincomb(1,im1, 1,im2, 1,im3)
于 2012-07-29T19:46:56.973 に答える