python numpy创建矩阵、并归一化_每通道以numpy为单位对一批图像进行归一化处理...

我有大量的形状[批次大小,宽度,高度,通道数](它们不是RGB图像,而是类似的2D字段概念)。在

我想对每个频道的图像进行归一化处理。有没有比下面这些更性感的方式来做这件事?特别是我不喜欢的是频道上的循环,我发现必须这样做很奇怪np.min.最小值以及np.最大值在切片上。同样,这是硬编码,只工作在张量与排名4,它如何适应有动态排名,或通道在一个动态轴上?在def get_img_ch_min_max(imgs):

'''return minimum and maximum for each channel of [batch, width, height, channels]'''

if len(imgs.shape)==3: imgs = np.expand_dims(imgs, axis=-1)

# iterate each channel

ch_min = np.array([np.min(imgs[:,:,:,i]) for i in range(imgs.shape[-1])])

ch_max = np.array([np.max(imgs[:,:,:,i]) for i in range(imgs.shape[-1])])

return ch_min, ch_max

def normalise_per_channel(imgs):

'''normalise batch of images per channel, [batch, width, height, channels]'''

if len(imgs.shape)==3: imgs = np.expand_dims(imgs, axis=-1)

ch_min, ch_max = get_img_ch_min_max(imgs)

ch_range = ch_max - ch_min

imgs_ret = np.copy(imgs)

for i in range(imgs.shape[-1]): # iterate each channel

if ch_range[i] > 0: # avoid divide by zero

imgs_ret[:,:,:,i] = (imgs[:,:,:,i] - ch_min[i]) / ch_range[i]

imgs_ret = np.squeeze(imgs_ret)

return imgs_ret

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值