0

私は画像処理に取り組んでいます。2つの画像のピクセルの違いを追加したいと思います。

2つの画像AとBがあるとします。両方の画像の最初のピクセルを選択し、差の値を保存します。この差の値を次のピクセル差に追加したいと思います。このコードを使用してみましたが、機能しません。どうすればいいですか?

A = imread('sub2.jpg');
B = imread('sub1.jpg');
tic
[rows cols] = size(A);
diff1 = 0;
for x = 1:rows
   for y = 1:cols
       diff = A(x,y)-B(x,y);
       diff1 = diff1+diff;
   end
end
disp(diff1);
toc
4

2 に答える 2

2

次のように1行で実行できます。

sum(sum(imsubtract(A-B)))

imsubtract2つの画像を減算し、差を。と同じサイズの行列に保存しAます。次に、sum結果の合計を取ります。

絶対差が必要な場合は、imabsdiffの代わりに使用できますimsubtract

差の値は0と255であることに注意してください。負のインスタンスが必要な場合は、行列を直接減算する必要がありますA-B

于 2012-10-30T10:31:24.137 に答える
0

見た目は大丈夫ですが、次の方法をお勧めします。

diff1 = sum(sum(A-B));

または:Bより大きい場合A

diff1 = sum(sum(A-B(1:size(A,1),1:size(A,2))));

これは(あなたのコードがそうであるように)たった1つの値を与えます、それが本当にあなたが望むものであるかどうかはわかりません。

于 2012-10-30T10:33:16.623 に答える