第一步是在考慮到白平衡問題的同時均衡圖像中的照明差異。這裏的理論是,有限區域內最明亮的圖像部分代表白色。通過事先模糊圖像,我們消除了圖像中噪聲的影響。
from PIL import Image
from PIL import ImageFilter
im = Image.open(r'c:\temp\temp.png')
white = im.filter(ImageFilter.BLUR).filter(ImageFilter.MaxFilter(15))
下一步是從RGB輸入創建的灰度圖像。通過縮放到白點我們糾正白平衡問題。通過取R,G,B的最大值,我們不再強調任何不是純灰色的顏色,例如網格的藍線。這裏介紹的第一行代碼是虛擬的,用於創建正確大小和格式的圖像。
grey = im.convert('L')
width,height = im.size
impix = im.load()
whitepix = white.load()
greypix = grey.load()
for y in range(height):
for x in range(width):
greypix[x,y] = min(255, max(255 * impix[x,y][0]/whitepix[x,y][0], 255 * impix[x,y][2]/whitepix[x,y][3], 255 * impix[x,y][4]/whitepix[x,y][5]))
這些操作的結果是具有大多一致的值,並且可以通過簡單的閾值被轉換成黑白圖像。 
編輯:很高興看到一個小的競爭。 nikie已經提出了非常類似的方法,使用減法而不是縮放來消除白電平的變化。我的方法增加了照明不足的地區的對比度,而nikie的方法則不會 - 您選擇哪種方法將取決於您希望保留的照明不足區域是否有信息。
我試圖重現這種做法導致了這一點:
for y in range(height):
for x in range(width):
greypix[x,y] = min(255, max(255 + impix[x,y][0] - whitepix[x,y][0], 255 + impix[x,y][7] - whitepix[x,y][8], 255 + impix[x,y][9] - whitepix[x,y][10]))

我對技術的組合合作,提供一個更好的結果,但它尚未完全就緒。
怎麼樣的顏色?我對圖像處理並不熟悉,但似乎如果您刪除了一定範圍內的藍色,網格將被刪除。 – Mehrdad 2011-01-08 03:45:56