1

MatLab で画像減算を試みましたが、画像に大きな青いパッチがあることに気付きました。詳しくは画像をご覧ください。

ここに画像の説明を入力 青いパッチがほぼどこまでカバーするかを示す別の画像。 ここに画像の説明を入力

上の 2 枚の画像の左の写真は減算後の写真です。上の 2 枚の画像の右の写真は無視してかまいません。これは元の画像の 1 つです。 ここに画像の説明を入力

これが私が減算している背景です。 ここに画像の説明を入力

目的は、前景画像を取得してブロブし、続いてブロブの数を数えて、側面から垂直に積み重ねられた本の数を確認することです。ブロブメソッドがmatlabでどのように機能するかを実験しています。

誰にもアイデアはありますか?以下は、バックグラウンド減算を実行して表示する方法に関するコードです。ありがとう。

[filename, user_canceled] = imgetfile;
fullFileName=filename;
rgbImage = imread(fullFileName);


folder = fullfile('C:\Users\Aaron\Desktop\OPENCV\Book Detection\Sample books');
baseFileName = 'background.jpg'; 
fullFileName = fullfile(folder, baseFileName);

backgroundImage =imread(fullFileName);
rgbImage= rgbImage - backgroundImage;

%display foreground image after background substraction%%%%%%%%%%%%%%

subplot( 1,2,1);
imshow(rgbImage, []);
4

2 に答える 2

1

2 つのカラー RGB イメージを減算しているため、青いパッチが得られます。理想的には、差分画像では、背景ピクセルにゼロを取得し、前景ピクセルに非ゼロを取得することを期待しています。RGB を使用しているため、前景ピクセルに変な色が付く場合がありますが、これは問題ではありません。気にするのは、差の絶対値が 0 より大きいことだけです。

ところで、あなたの画像はおそらく unsigned の uint8 です。im2double減算を行う前に、を使用して double に変換することをお勧めします。

于 2013-10-20T15:42:22.763 に答える