【发布时间】:2011-07-17 23:56:05
【问题描述】:
我正在尝试使用 PIL 和 Numpy 在 Python 中实现最简单的高斯滤波器。一切正常,但速度很慢:(不知道如何加快速度。你能帮忙吗?
import os, sys
import Image, ImageEnhance
import numpy as np
if (len(sys.argv) > 1):
im = Image.open(sys.argv[1])
data = np.array(im.resize((200,200)))
out_data = np.array(data)
chs = len(data[0][0])
kernel = np.array([[1.,2,1],
[2,3,2],
[1,2,1]])
ctr = 1
kernel = kernel/np.sum(kernel)
for x in xrange(data.shape[0]):
for y in xrange(data.shape[1]):
for c in xrange(chs):
acc = 0
for i in xrange(kernel.shape[0]):
for j in xrange(kernel.shape[1]):
m = x + i - ctr
n = y + j - ctr
if (m >= 0 and n >= 0 and m < data.shape[0] and n < data.shape [1]):
acc += data[m][n][c]*kernel[i][j]
out_data[x][y][c] = acc
out = Image.new(im.mode, (data.shape[0], data.shape[1]))
out = Image.fromarray(out_data)
out.show()
else:
print "no file was passed"
【问题讨论】:
-
scipy 看起来很有用,这应该是实际实现还是学习练习?
标签: python numpy python-imaging-library