【发布时间】:2020-07-23 15:07:01
【问题描述】:
我被要求在具有给定内核的一维数组上创建一个 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 等。
不要为此任务使用内置卷积函数"
我真的不知道如何做到这一点。你能建议点什么吗?线索将不胜感激。
【问题讨论】:
-
不清楚在这种情况下“平均过滤器”是什么意思。但看起来
shift方法至少在这里对你有用。 -
@Chris 我已经添加了均值滤波器的含义。另外,我不明白 shift 会有什么帮助。
标签: python image-processing mean smoothing