当前位置: 首页 > 面试题库 >

scipys ndimage过滤器的“反射”模式究竟是如何工作的?

徐鸿文
2023-03-14
问题内容

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

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.]]

Applying a uniform (mean) filter with a window size of 3 I get the following:

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.66666667 4.66666667 4.66666667
4.66666667 4.66666667]]

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

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

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

print(filtered)

[[ 1.5 1.5 1.5 1.5 1.5] [ 2. 2. 2. 2. 2. ] [ 3. 3. 3. 3. 3. ] [ 4. 4. 4. 4. 4.
]]

如果窗口大小均匀,如何处理?但不管怎样,如果我试着
复制大小为5的窗口的结果,模式反射我也不能。
尽管我认为它的行为和3号差不多。


问题答案:

假设一个轴上的数据是‘1 2 3 4 5 6 7 8’。下表显示
如何为每个模式扩展数据(假设“cval=0”):

    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

对于偶数大小的窗口“n”,请考虑大小为“n+1”的窗口,然后不要
包括下边缘和右边缘。(车窗的位置可以改变
使用“origin”参数。)



 类似资料:
  • 我一直在弄清楚口译员的确切工作方式,在谷歌上搜索了一下,得出了一些结论,只是希望有人能纠正一下,让我更好地了解口译员的工作。 所以我的理解是: 解释器是一种将代码从高级语言转换为机器格式的软件程序 现在我仍然不清楚中间发生的子过程,即。 解释器产生中间代码 然后优化解释的代码 然后生成目标代码 并最终执行 还有一些问题: 那么解释器是否单独负责生成目标代码?并执行它? 执行是否意味着它在JVM或底

  • 我写了下面的测试代码在Java使用ReentantReadWriteLock来了解公平和不公平模式之间的区别。然而,我看到在两种模式下,结果和输出总是相同的。它似乎总是在公平模式下工作。谁能解释一下,在何种情况下,公平和不公平模式会导致不同的行为? 输出总是: 当我将锁创建更改为公平模式时,上面的输出是我期望看到的: 对于非公平模式,我希望看到以下输出:

  • 我试图理解过滤器链接。正如这个问题所定义的 所有过滤器都被链接(按照它们在web.xml中定义的顺序)。chain.doFilter()正在进行到链中的下一个元素。链的最后一个元素是目标资源/servlet。 我很想知道容器中的场景背后,容器是如何处理过滤器链接的。有人能解释一下过滤器链接是如何在容器内处理的吗?

  • 我试图将CORS过滤器添加到SpringWeb应用程序中,但该过滤器未被执行。我在这里遵循了相关步骤:https://spring.io/guides/gs/rest-service-cors/无济于事。我没有用Spring靴。我正在3.0 servlet规范容器中使用Spring的WebApplicationInitializer引导我的应用程序。 我的应用程序中的其他一切都在工作:配置类、控制

  • 主要内容:实现,Person.java,Criteria.java,CriteriaMale.java,CriteriaFemale.java,CriteriaSingle.java,AndCriteria.java,OrCriteria.java,CriteriaPatternDemo.java过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)是一种设计模式,这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型

  • 过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)是一种设计模式,这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。 实现 我们将创建一个 Person 对象、Criteria 接口和实现了该接口的实体类,来过滤 Person 对象的列表。CriteriaP