Python 究竟是什么;反映;scipys ndimage过滤器的工作模式?

Python 究竟是什么;反映;scipys ndimage过滤器的工作模式?,python,image-processing,scipy,filtering,Python,Image Processing,Scipy,Filtering,我无法准确理解反射模式如何处理我的数组。我有一个非常简单的数组: import numpy as np from scipy.ndimage.filters import uniform_filter from scipy.ndimage.filters import median_filter vector = np.array([[1.0,1.0,1.0,1.0,1.0],[2.0,2.0,2.0,2.0,2.0],[4.0,4.0,4.0,4.0,4.0],[5.0,5.0,5.0,5.

我无法准确理解反射模式如何处理我的数组。我有一个非常简单的数组:

import numpy as np
from scipy.ndimage.filters import uniform_filter
from scipy.ndimage.filters import median_filter

vector = np.array([[1.0,1.0,1.0,1.0,1.0],[2.0,2.0,2.0,2.0,2.0],[4.0,4.0,4.0,4.0,4.0],[5.0,5.0,5.0,5.0,5.0]])

print(vector)
[[1.1.1.1.1] [ 2. 2. 2. 2. 2.] [ 4. 4. 4. 4. 4.] [5.5.5.5.5.]

应用窗口大小为3的均匀(平均)过滤器,我得到以下结果:

filtered = uniform_filter(vector, 3, mode='reflect')

print(filtered)
[[1.33333333 1.33333333 1.33333333 1.33333333 1.33333333] [ 2.33333333 2.33333333 2.33333333 2.33333333 2.33333333] [ 3.66666667 3.66666667 3.66666667 3.66666667 3.66666667] [4.666667 4.666667 4.666667 4.666667 4.666667 4.66666 7]]

如果我试着用手复制这个练习,我就能得到这个结果。原始矩阵为绿色,窗口为橙色,结果为黄色。白色是“反射”的观察结果

结果是:

但当我尝试4或5的窗口大小时,我无法复制结果

filtered = uniform_filter(vector, 4, mode='reflect')

print(filtered)
[[1.51.51.51.51.51.5] [ 2. 2. 2. 2. 2. ] [ 3. 3. 3. 3. 3. ] [4.4.4.4.4.]

手工操作:

我得到:


如果窗口大小均匀,如何处理?但无论如何,如果我试图复制一个大小为5的窗口和模式反射的结果,我也不能。即使我认为这种行为类似于3号的行为。

假设一个轴上的数据是
12345678
。下表显示了每个模式的数据扩展方式(假设
cval=0
):


对于一个偶数窗口大小<代码> n>代码>,考虑大小窗口<代码> n+1 ,然后不包括右下和右边。(可以使用

origin
参数更改窗口的位置。)

在下面的“手动操作:”图像中,您没有正确填充扩展数组的顶行。您只需垂直复制值
1
。使用
mode='reflect'
,在主(亮黄色)数组上方的顶行中应该有
2个
s。这正是我想知道的,你能帮我确切地了解模式是如何工作的吗?对于窗户尺寸n=2,3,…,等等?我愿意接受,作为答案,我特别感兴趣的是,当维度是偶数时,窗口是如何工作的。所以这在每个维度都会发生?因此,对于n=3(当您在第一列中使用“reflect”时,第一列中的“reflect”将是“1”,左上角“1”旁边的对角线会发生什么情况?这里的doc在哪里?我在这里找到了doc:@JEquihua对角线也会被反射,因此您的左上角=1,左上角=2。当前文档比旧文档解释得更好:
    mode       |   Ext   |         Input          |   Ext
    -----------+---------+------------------------+---------
    'mirror'   | 4  3  2 | 1  2  3  4  5  6  7  8 | 7  6  5
    'reflect'  | 3  2  1 | 1  2  3  4  5  6  7  8 | 8  7  6
    'nearest'  | 1  1  1 | 1  2  3  4  5  6  7  8 | 8  8  8
    'constant' | 0  0  0 | 1  2  3  4  5  6  7  8 | 0  0  0
    'wrap'     | 6  7  8 | 1  2  3  4  5  6  7  8 | 1  2  3