Esempio n. 1
0
    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()