Python 大于零的像素值的Numpy ndarray图像像素平均值:规格化图像
我正在尝试在numpy中读取并规范化3通道图像。对于图像中的每个通道,我想计算大于零的像素值的平均值 我从以下几点开始:Python 大于零的像素值的Numpy ndarray图像像素平均值:规格化图像,python,image,numpy,scipy,normalization,Python,Image,Numpy,Scipy,Normalization,我正在尝试在numpy中读取并规范化3通道图像。对于图像中的每个通道,我想计算大于零的像素值的平均值 我从以下几点开始: from scipy import misc img = misc.imread('test.png') print(type(img) ) #<type 'numpy.ndarray'> print(img.shape) #(512, 512, 3) 来自scipy导入杂项 img=misc.imread('test.png') 打印(类型(img))# 打印
from scipy import misc
img = misc.imread('test.png')
print(type(img) ) #<type 'numpy.ndarray'>
print(img.shape) #(512, 512, 3)
来自scipy导入杂项
img=misc.imread('test.png')
打印(类型(img))#
打印(图像形状)#(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.
img_mean=mean(img[img>0])#正像素的通道平均值
img_std=std(img[img>0])#正像素的通道标准偏差
img_标准=(img-img_平均值)/img_标准
img_norm[img_norm<-1]=0#设置小于1到0的像素值。
下面是我正在处理的一个图像示例
最简单的方法是将所有零屏蔽为NaN,然后使用
np.nanmean
和np.nanstd
基本上忽略计算中的零,如下所示-
imgn = np.where(img>0,img,np.nan)
img_norm = (img - np.nanmean(imgn,axis=(0,1)))/np.nanstd(imgn,axis=(0,1))