Python中没有循环的均值过滤器

问题描述 投票:1回答:1

我被要求在给定内核的一维数组上创建一个mean_filter函数,假设填充为零。

平均滤波器是一种旨在消除噪声的算法。它使用一个数组,一个内核(例如K),并用周围的K值(包括两端值)的平均值替换该数组的每个值。

此算法用于图像处理。

我能够做到这一点-

def mean_filter(arr, k):
    # applies mean filter to 1-d array with the kernel size 2k+1 . Write your code here
    p=len(arr)
    arr2=np.zeros(2*k+p, dtype=float)
    arr3=np.zeros(2*k+p, dtype=float)
    arr4=np.zeros(p, dtype=float)

    for i in range(p):
        arr2[k+i]=arr[i]

    for i in range(k,k+p):
        sum=0
        for j in range(-k,k+1):
            sum+=arr2[i+j]
        arr3[i]=sum/float(2*k+1)

    for i in range(p):
        arr4[i]=arr3[k+i]

    return arr4

但是他们对我的期望是做到这一点而没有任何循环。

该指令显示为-“ 此任务应在没有任何循环,理解或功能的情况下完成例如np.vectorize等

请勿为此任务使用内置的卷积函数

我实际上不知道如何执行此操作。你能建议点什么吗?线索将不胜感激。

python image-processing mean smoothing
1个回答
0
投票

例如:

import numpy as np
k=2
kern=np.ones(2*k+1)/(2*k+1)
arr=np.random.random((10))
out=np.convolve(arr,kern, mode='same')
© www.soinside.com 2019 - 2024. All rights reserved.