像素值大于零的 Numpy ndarray 图像像素均值:归一化图像
Numpy ndarray image pixel mean for pixel values greater than zero: Normalizing image
我正在尝试在 numpy 中读取和规范化 3 通道图像。对于图像中的每个通道,我想计算大于零的像素值的平均值。
我开始于:
from scipy import misc
img = misc.imread('test.png')
print(type(img) ) #<type 'numpy.ndarray'>
print(img.shape) #(512, 512, 3)
但我首先不确定 1.) 如何索引正值并保留维度并且不展平数组。和 2.) 如何采用所选正值的通道明智平均值。
我的完整规范化过程是这样的:
img_mean = mean(img[img >0])#channel wise mean of positive pixels
img_std = std(img[img>0]) #channel wise std. deviation of positive pixels
img_norm = (img - img_mean)/img_std
img_norm[img_norm < -1] = 0 #setting pixel values less than 1 to 0.
这是我正在使用的图像示例
最简单的方法是将所有零屏蔽为 NaN,然后使用 np.nanmean
和 np.nanstd
基本上忽略计算中的 zeros
,就像这样 -
imgn = np.where(img>0,img,np.nan)
img_norm = (img - np.nanmean(imgn,axis=(0,1)))/np.nanstd(imgn,axis=(0,1))
我正在尝试在 numpy 中读取和规范化 3 通道图像。对于图像中的每个通道,我想计算大于零的像素值的平均值。
我开始于:
from scipy import misc
img = misc.imread('test.png')
print(type(img) ) #<type 'numpy.ndarray'>
print(img.shape) #(512, 512, 3)
但我首先不确定 1.) 如何索引正值并保留维度并且不展平数组。和 2.) 如何采用所选正值的通道明智平均值。
我的完整规范化过程是这样的:
img_mean = mean(img[img >0])#channel wise mean of positive pixels
img_std = std(img[img>0]) #channel wise std. deviation of positive pixels
img_norm = (img - img_mean)/img_std
img_norm[img_norm < -1] = 0 #setting pixel values less than 1 to 0.
这是我正在使用的图像示例
最简单的方法是将所有零屏蔽为 NaN,然后使用 np.nanmean
和 np.nanstd
基本上忽略计算中的 zeros
,就像这样 -
imgn = np.where(img>0,img,np.nan)
img_norm = (img - np.nanmean(imgn,axis=(0,1)))/np.nanstd(imgn,axis=(0,1))