Exemplo n.º 1
0
def filterPeakList(pixels, peaks, separationDist, dropFactor):    
    numPeaks = len(peaks)

    # now filter the list
    tolose = []
    for i in range(numPeaks):
        for j in range(i+1, numPeaks):
            dropLower = False

            # don't keep both if too close
            posi = (peaks[i][0], peaks[i][1])
            posj = (peaks[j][0], peaks[j][1])
            if Util.radialDistance(posi[0], posi[1], posj[0], posj[1]) < separationDist:
                dropLower = True
                   
            # don't keep both if not significant drop
            mean = (pixels[posi[0]][posi[1]] + pixels[posj[0]][posj[1]])/dropFactor
            saddle = dropBetween(pixels, posi[0], posi[1], posj[0], posj[1])
            if(saddle > mean*1):
                dropLower = True

            # if we don't keep both, lose the lower one
            if dropLower:
                if pixels[posi[0]][posi[1]] > pixels[posj[0]][posj[1]]:
                    tolose.append(j)
                else:
                    tolose.append(i)
                
    returnedPeaks = []
    for i in range(numPeaks):
        if i not in tolose:
            returnedPeaks.append(peaks[i])

    # print returnedPeaks
    return returnedPeaks
Exemplo n.º 2
0
def dropBetween(pixels, x, y, a, b):
    distance = Util.radialDistance(x, y, a, b)
    distance = int(distance/2)

    minVal = pixels[x][y]
    
    for i in range(1, distance):
        pixX = (a-x)/(i*distance)
        pixY = (b-y)/(i*distance)
        pixVal = pixels[int(pixX)][int(pixY)]
        if pixVal < minVal:
            minVal = pixVal

    return minVal
Exemplo n.º 3
0
def calculateGridSize(pixels, lowerLimit, sepDist, dropFact, gridFactor):
    print("Calculating grid size...")
    peaks = findPeaks(pixels, lowerLimit)
    # print("filtering " + str(len(peaks)) + " peaks")
    peaks = filterPeakList(pixels, peaks, sepDist, dropFact)
    # print(str(len(peaks)) + " peaks remaining; calculating grid size")
    minDist = 1280
    numPeaks = len(peaks)
    # print numPeaks
    for i in range(numPeaks):
        for j in range(i+1, numPeaks):
            posi = (peaks[i][0], peaks[i][1])
            posj = (peaks[j][0], peaks[j][1])
            dist = Util.radialDistance(posi[0], posi[1], posj[0], posj[1])
            # print(posi, posj, dist)
            if dist < minDist:
                minDist = dist

    print "Minimum distance is " + str(minDist)
    gridSep = int(minDist/gridFactor)
    return gridSep