我已經嘗試了MatLab中的圖像減法,但意識到圖像上有一個很大的藍色補丁。請參閱圖像瞭解更多詳情。在減去MATLAB中的圖像背景後出現藍色補丁
另一張圖片顯示了藍色補丁大致覆蓋的位置。
前2張圖片左側的圖片顯示減法後的圖片。您可以忽略前2張圖片右側的圖片。這是原始圖像之一:
這是我減去的背景。
其目的是獲得前景圖像和blob它,然後計算blob的數量,看看有多少書從他們的側面垂直堆疊。我正在試驗blob方法如何在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, []);
圖片有幫助,但代碼現在沒有幫助。你能否更詳細地解釋一下數據來自哪裏? 'rgbImage'是從一個文件讀入的,'backgroundImage'也是如此?這些數據來自哪裏?你是否做過任何形式的健全檢查,以確保問題出現在代碼中而不是數據本身中? – nispio
另外,很可能直接減法不是正確的答案。例如,假設rgb值分別介於0和255之間。如果給定像素的藍色值爲25,並且背景圖像中相應的藍色值爲200,那麼期望的結果是什麼?新的像素值應該是-175?很明顯不是。這很可能是你在這裏看到的。 – nispio
嗨,感謝您關於代碼的建議。我編輯了這個問題以包含更多的代碼。請看一下。我不確定問題出在代碼中還是數據中。我只使用了MatLab大約5天,因此與語法沒有太多相似之處。關於爲什麼我使用直接減法,我發現該方法來自:http://stackoverflow.com/questions/3008326/background-subtracting-in-matlab/3008840#3008840,在該問題中給出的答案之一。 – rockinfresh