def MedianImageColor(InputImage, Ignore=None):
	InputImage = InputImage.convert('L')
	InputImagePixels = InputImage.load()

	# flatten the image so that we can take the median
	ColoredImage = PILToCV2(InputImage)
	GreyImage = cv2.cvtColor(ColoredImage, cv2.COLOR_BGR2GRAY)
	FlatImage = GreyImage.flatten()

	if Ignore != None:
		PrunnedImage = []
		for Item in FlatImage:
			if Item != Ignore:
				PrunnedImage.append(Item)
		return Statistics.Median(PrunnedImage)
	else:
		# take the median
		return Statistics.Median(FlatImage) 
示例#2
0
def MedianArray(Array, SampleSize, FillerValue=255):
    if SampleSize % 2 != 0:
        raise ValueError("SampleSize must be even.")

    ReturnArray = []
    ValuesArray = []

    for i in range(0, len(Array)):
        ValuesArray.append([])

        # we keep the array the same size, so sometimes the sample size will be smaller
        HalfSampleSize = int(SampleSize / 2.0)

        # +1 because of how range() works
        for p in range(-HalfSampleSize, HalfSampleSize + 1):
            if (i + p) < 0 or (i + p) >= len(Array):
                ValuesArray[i].append(FillerValue)
            else:
                ValuesArray[i].append(Array[i + p])

    for Items in ValuesArray:
        ReturnArray.append(Statistics.Median(Items))

    return ReturnArray