我正在做一个代码,部分归一化强度的输入图像。因为我找不到相应的函数Numpy库,我做了一个代码如下:
def arealNorm(img,kernel_size = 7): #Img should me gray
img_norm = np.zeros(img.shape)
for v in range(kernel_size,img.shape[0]-kernel_size):
for u in range(kernel_size,img.shape[1]-kernel_size):
MaxV = np.max(img[v-kernel_size:v+kernel_size,u-kernel_size:u+kernel_size])
minV = np.min(img[v-kernel_size:v+kernel_size,u-kernel_size:u+kernel_size])
newval = (img[v,u]-minV)/(MaxV-minV)
img_norm[v,u] = newval
return img_norm
因为它应该访问图像的每个像素,所以这段代码运行得非常慢。
有没有类似 numpy 方法来转换我的代码,使其工作得更快?
2条答案
按热度按时间csbfibhn1#
一种加快代码速度的方法是使用内置函数scipy.ndimage.filters.generic_filter,该函数将用户定义的函数应用于输入图像中的每个邻域。
下面是一个使用generic_filter的示例实现:
gv8xihay2#
感谢@Michael Butscher,我将代码最终确定为: