def __init__(self, pixelList, name): ''' Adds a list of pixels to the Kernel object, as well as calculating statistics TEST ALL OF THIS ''' self.name = '' self.pixelList = [] self.numberOfPixels = 0 self.RgbDict = {"Mean": '', "Mode": '', "2SDmean": ''} self.LabDict = { "LMean": '', "LMode": '', "L2SDMean": '', "LSD": '', "aMean": '', "aMode": '', "a2SDMean": '', "aSD": '', "bMean": '', "bMode": '', "b2SDMean": '', "bSD": '' } self.centers = [] self.pointsPerCluster0 = 0 self.pointsPerCluster1 = 0 self.plot = 0 self.name = name LList = [] aList = [] bList = [] frequencyDict = {} self.pixelList = pixelList self.numberOfPixels = len(self.pixelList) for pixel in self.pixelList: LList.append(pixel.L) aList.append(pixel.A) bList.append(pixel.B) color = "r%s,g%s,b%s" % (pixel.red, pixel.green, pixel.blue) if color in frequencyDict.keys(): frequencyDict[color] += 1 else: frequencyDict[color] = 1 mode = max(frequencyDict, key=frequencyDict.get) self.RgbDict["Mode"] = mode r = float(mode[1:mode.index("g") - 1]) g = float(mode[mode.index("g") + 1:mode.index("b") - 1]) b = float(mode[mode.index("b") + 1:]) lab = Pixel.RGBtoHunterLab(r, g, b) self.LabDict["LMode"] = lab["L"] self.LabDict["aMode"] = lab["A"] self.LabDict["bMode"] = lab["B"] LMeanSD = meanstdv(LList) aMeanSD = meanstdv(aList) bMeanSD = meanstdv(bList) LMean = float(LMeanSD[0]) aMean = float(aMeanSD[0]) bMean = float(bMeanSD[0]) LSD = float(LMeanSD[1]) aSD = float(aMeanSD[1]) bSD = float(bMeanSD[1]) self.LabDict["LMean"] = LMean self.LabDict["aMean"] = aMean self.LabDict["bMean"] = bMean self.LabDict["LSD"] = LSD self.LabDict["aSD"] = aSD self.LabDict["bSD"] = bSD self.RgbDict["Mean"] = HunterLabToRGB(self.LabDict["LMean"], self.LabDict["aMean"], self.LabDict["bMean"]) L2SDSum = 0 L2SDCount = 0 a2SDSum = 0 a2SDCount = 0 b2SDSum = 0 b2SDCount = 0 for L in LList: if (L <= (LMean + (2 * LSD))) and (L >= (LMean - (2 * LSD))): L2SDSum += L L2SDCount += 1 for a in aList: if (a <= (aMean + (2 * aSD))) and (a >= (aMean - (2 * aSD))): a2SDSum += a a2SDCount += 1 for b in bList: if (b <= (bMean + (2 * bSD))) and (b >= (bMean - (2 * bSD))): b2SDSum += b b2SDCount += 1 self.LabDict["L2SDMean"] = L2SDSum / L2SDCount self.LabDict["a2SDMean"] = a2SDSum / a2SDCount self.LabDict["b2SDMean"] = b2SDSum / b2SDCount # del self.pixelList[:] self.setCenters()