2014-03-14 61 views
1

我正在編寫一個腳本來查找更大圖像中的圖像剪切位置(類似於here中描述的問題)。爲此,我正在使用match_template,它是skimage的一部分。我也想看看相關值(我想它應該是一個矩陣,並且match_template取最大值);我怎麼能得到它們?來自match_template的相關值

這是我使用的代碼:

cutout = np.loadtxt(filename_cutout.txt) 
image = np.loadtxt(filename_image.txt) 
array_cutout = np.array(cutout) 
array_image = np.array(image) 
result = match_template(image, cutout) 
ij = np.unravel_index(np.argmax(result), result.shape) 
x, y = ij[::-1] 
ran = array_cutout.shape 
ran_y = ran[1] 
ran_x = ran[0] 
x_center = x + (ran_x/2) 
y_center = y + (ran_y/2) 

回答

0

skimage.features.match_template需要你的形狀的圖象(M,N)和形狀(M,N)的模板,並返回一個響應圖像包含形狀(M-m + 1,N-n + 1)的相關係數。該響應中的最高值對應於圖像中最可能的匹配。

ij = np.unravel_index(np.argmax(result), result.shape) 

np.argmax(result)回報響應圖像的最高值,這應該符合您的模板的位置。

是否有你從.txt文件加載圖像的原因?當我使用match_template時,我通常使用skimage.io.imread()將圖像加載到數組中。然後我可以對它進行二值化處理,或者將其灰度化,這有時會返回更好的結果。