2011-06-01 87 views
6

我正在嘗試使用NumPyscipy執行圖像處理。我有一個與背景相對應的模板圖像,我想找出輸入圖像中出現的所有位置,並將輸出中相應的陣列位置設置爲1,否則將它們設置爲0.我該怎麼做?NumPy/SciPy:將掩碼移到圖像上並檢查相等性

+0

更正了問題標題中的拼寫錯誤。無論如何,你的模板圖像相對於輸入圖像有多大,是一個粗略的平均值?你想爲精確匹配做圖像處理,還是希望能夠檢測縮放版本,稍微不同的版本等? – JAB 2011-06-01 14:40:03

+0

與圖像相比,我的模板不大,約100像素。除了精確匹配之外,我想要做±x,其中x是小擾動以適應圖像強度的較小變化。 – Xolve 2011-06-01 15:30:22

回答

3

您可以使用scipy.ndimage.correlate將您的模板與圖像相關聯。然後尋找亮點,這會給你你的比賽。例如:

import scipy.ndimage 
from numpy import mean, std 

# a, b contain image and template in numpy arrays 
correlation = scipy.ndimage.correlate(a, b) 
matches = (correlation-mean(correlation)) > 5*std(correlation) # tune depending on level of noise 
+0

「然後尋找可以讓你找到你想要的比賽的亮點。」我是使用numpy的新手,我將如何實現這一目標。 – Xolve 2011-06-01 18:32:49

+0

@Xolve就是這個例子中最後一行的想法 - 基本上查找平均圖像值以上的標準偏差數。您可以使用命令imshow快速查看結果並調整您的案例,或者如果您發佈了一些示例圖片的鏈接,我會試一試。 – so12311 2011-06-01 18:41:01