2011-07-18 165 views
4

我有兩個圖像。第一個是背景噪音+內容,第二個是背景噪音。我想從第一個圖像中減去第二個圖像以消除內容中的噪點。圖像灰度。從圖像中刪除背景噪音

我很在處理這個問題的各種方式以及在mathematica中處理灰度值時感到困惑。

1)首先,我們可以使用ImageSubtract[imageOne, imageTwo]

2)通過使用ImageDifference[imageOne, imageTwo],我們避免了負像素值,但是在使用ImageSubtract時我們必須具有負像素的位置處圖像是人造的。

3)我們使用ImageData獲得每個像素的值,減去每個相應的值,然後使用Image顯示結果。

這些方法都會產生不同的結果。

+3

請上傳您的圖片在某個地方... –

回答

6

對於具有真實數據類型的圖像,像素值可以是負的,並且這三個操作是等效的:

real1 = Image[RandomReal[1, {10, 10}]]; 
real2 = Image[RandomReal[1, {10, 10}]]; 

ImageData[ImageDifference[real1, real2]] == 
[email protected][ImageSubtract[real1, real2]] == 
Abs[ImageData[real1] - ImageData[real2]] 

Out[4]= True 

但它不與整數數據類型的圖像的情況下。這是因爲只有正值可以存儲在這樣的圖像,並且從減法負結果在輸出圖像中裁剪到零:

int1 = Image[RandomInteger[255, {10, 10}], "Byte"]; 
int2 = Image[RandomInteger[255, {10, 10}], "Byte"]; 

這仍然True是:

ImageData[ImageDifference[int1, int2]] 
== Abs[ImageData[int1] - ImageData[int2]] 

但是這兩個因剪裁不同而不同:

ImageData[ImageDifference[int1, int2]] 
== [email protected][ImageSubtract[int1, int2]] 

將兩個輸入圖像轉換爲「Real」或「Real32」數據類型時,會出現較少令人費解的結果。

+1

比我的更完整,我現在已經刪除爲多餘。 – acl