【发布时间】:2018-02-27 05:03:47
【问题描述】:
我正在尝试创建一个 5x5 均值过滤器以从图像中去除一些椒盐噪声。我将图像读入一个 numpy 数组。并尝试进行一些更改来计算像素邻居的平均值。我得到的结果很糟糕,我似乎无法弄清楚为什么我的图像结果中有差距。
from PIL import Image
import numpy
image1 = 'noisy.jpg'
save1 = 'filtered.jpg'
def average(path, name):
temp=Image.open(path)
image_array = numpy.array(temp)
new_image = []
for i in range(0, len(image_array)):
new_image.append([])
n = 0
average_sum = 0
for i in range(0, len(image_array)):
for j in range(0, len(image_array[i])):
for k in range(-2, 3):
for l in range(-2, 3):
if (len(image_array) > (i + k) >= 0) and (len(image_array[i]) > (j + l) >= 0):
average_sum += image_array[i+k][j+l]
n += 1
new_image[i].append(int(round(average_sum/n)))
average_sum = 0
n = 0
x = Image.fromarray(numpy.array(new_image), 'L')
x.save(name)
print("done")
average(image1, save1)
---------------------输入图像-----------------
---------------------输出图像-----------------
【问题讨论】:
标签: python-3.x numpy image-processing noise-reduction