使用Python 3中的scikit-image
包并给出RGB图像,我们如何计算值大于0.5的像素的平均像素值(归一化的值,范围从0到1)?
我认为我设法掩盖了我希望计算平均值的像素,然后我们应该如何进行?
from skimage.io import imread, imshow
from skimage.transform import resize
imgData = data.imread(dataFilepath, as_grey=True)
imgData = resize(imgData, (256,256))
imgMask = imgData < 0.5
imgData[imgMask] = 0
imshow(imgData) # correctly shows the pixels that we want selected. the unwanted pixels are blacked out (value = 0)
答案 0 :(得分:1)
您可以将NumPy的boolean indexing和mean()
方法一起用于多维数组:
imgData = imread(dataFilepath, as_gray=True)
imgMask = imgData > 0.5
imgAvg = imgData[imgMask].mean()
在imgAvg
上方的代码段中,是在强度值大于0.5的像素上计算出的平均强度。如果要涂黑值小于或等于0.5的图像像素,然后计算整个图像的平均值,则可以使用以下代码:
imgAvg = imgData[imgMask].sum()/imgData.size