2016-07-04 50 views
6

編輯:NumPy的最大彙集卷積

我其實想做的是找到當地的最大值,這將在下文好解釋的,同樣的解決方案還解釋這裏:

http://scikit-image.org/docs/dev/auto_examples/plot_peak_local_max.html




看來你可以在Numpy中做linear卷積。

是否有可能做非線性最大池卷積?使用NxM補丁並跨越輸入圖像,將當前像素置零,如果它不是附近的最大值?

所以非線性最大卷積是這樣工作的,這裏是我的形象

3 4 5 2 3 
    3 5 1 2 7 
    2 2 5 1 7 

,並給予2x2的最大池給出了這樣的輸出

0 0 5 0 0 
    0 5 0 0 7 
    0 0 5 0 7 

您必須跨過一個2x2的補丁圖像,並將所有內容歸零,只保留最大值。

+0

[窗最大的numpy的(可能的重複http://stackoverflow.com/questions/18645013/windowed-maximum -in-numpy) – Lanting

+0

增加了一個例子,@說明你引用的問題不是卷積 – user1506145

+1

輸出'(2,2)'不應該爲零,因爲那個滑動補丁中有一個更大的'6'? – Divakar

回答

6

你可以使用Scipy's maximum_filer -

from scipy.ndimage.filters import maximum_filter 

arr*(arr == maximum_filter(arr,footprint=np.ones((3,3)))) 

採樣運行 -

In [19]: arr 
Out[19]: 
array([[3, 4, 5, 2, 3], 
     [3, 5, 1, 2, 7], 
     [2, 2, 5, 6, 7]]) 

In [20]: arr*(arr == maximum_filter(arr,footprint=np.ones((3,3)))) 
Out[20]: 
array([[0, 0, 5, 0, 0], 
     [0, 5, 0, 0, 7], 
     [0, 0, 0, 0, 7]]) 
+0

完美!面具很聰明,否則圖像將由高原組成。你的解決方案提取當地的最大值,正是我需要的:) – user1506145