1

Matlabで8つのTIFF画像を平均しようとしていますが、適切な結果を得ることができませんでした。画像を読み込んで一定数(読み取った画像数)で割ると、明るさが均一な「平均的な画像」ではなく、非常に暗い画像になってしまいます。私が使用したコードは次のとおりです。

i = 0;
R = 0;
A=imread('1.tif');
B=imread('2.tif');
R = imdivide((imadd(A,B)),2);

for i = 3:8
    TEMP = imadd(R,imread(sprintf('%d.tif' ,i)));
    R = imdivide(TEMP,8);
end

imshow(R);
imwrite(R,'AVG.tif','tif');

この平均化スキームを修正する方法はありますか?ありがとう!

4

3 に答える 3

3

あなたの問題は、画像を合計するとオーバーフローが発生することです(imaddオーバーフローが発生したときに飽和演算を使用するRichanteは正しいです)。損失なく合計を保持できるデータ型に変更する必要があります。

例えば

A = double(imread('1.tif'));

for i = 2:8
    A = A + double(imread(sprintf('%d.tif' ,i)));
end

...

R = uint8(A / 8);

もちろん、元のデータ型に戻す必要があります。

于 2012-04-09T15:28:07.807 に答える
0

行う方が良いかもしれません:

R = imdivide(imread('1.tif'), 8);
for i = 2:8
    R = imadd(R,imdivide(imread(sprintf('%d.tif' ,i)), 8));
end

これにより、飽和が回避され、正しい方法で追加されます(使用方法は、画像8を優先して平均的に強く重み付けされます)。

于 2012-04-09T15:30:25.320 に答える