我现在正在使用numpy和scipy进行图像处理。我有一段代码可以放大图像,但不确定它是如何工作的。
因此,希望一些精通python中scipy/numpy的专家能够逐行解释给我听。我非常渴望学习。
import numpy as N
import os.path
import scipy.signal
import scipy.interpolate
import matplotlib.pyplot as plt
import matplotlib.cm as cm
def enlarge(img, rowscale, colscale, method='linear'):
x, y = N.meshgrid(N.arange(img.shape[1]), N.arange(img.shape[0]))
pts = N.column_stack((x.ravel(), y.ravel()))
xx, yy = N.mgrid[0.:float(img.shape[1]):1/float(colscale),
0.:float(img.shape[0]):1/float(rowscale)]
large = scipy.interpolate.griddata(pts, img.flatten(), (xx, yy), method).T
large[-1,:] = large[-2,:]
large[:,-1] = large[:,-2]
return large
非常感谢。
griddata
不是最有效的选项,因为网格始终是矩形的。更有效的选项是:scipy.interpolate.RectBivariateSpline
和scipy.ndimage.zoom
。 - pv.