Example #1
0
def my4diffEdge(img, coarseImgs, labelMap):
    '''MY4
    add different from Edge 
    '''
    img = sk.color.rgb2lab(img)
    # 获得4+4维  distance
    degreeVectors, Ws = getVectors(img, labelMap)
    weightSumVectors = getWeightSum(labelMap, degreeVectors, Ws)

    diffEdges, diffNeighbors = getAllDiffEdgeAndNeighbor(labelMap, Ws)

    vectors = np.append(weightSumVectors, diffEdges, 1)
    #    vectors = np.append(vectors,diffNeighbors,1)

    vectorsTrains = []
    coarseTrains = []
    for coarseImg in coarseImgs:
        coarseTrain, vectorsTrainTag = getCoarseTrain(coarseImg, labelMap)
        vectorsTrains += list(vectors[vectorsTrainTag])
        coarseTrains += list(coarseTrain)

    elm = getElm(np.array(vectorsTrains), np.array(coarseTrains))
    refined = elm.predict(vectors)[:, 0]
    refinedImg = valueToLabelMap(labelMap, normalizing(refined))
    mask = grabCut(sk.color.lab2rgb(img), refinedImg)
    refinedImg = normalizing(mask * refinedImg)
    return refinedImg
Example #2
0
def precisionRecallCurve(imgGt, refinedImg, maxPoints=256):
    '''
    maxPoints: 返回多少个点
    手写求PR线 
    '''
    _refinedImg = normalizing(refinedImg).ravel()
    _imgGt = imgGt.ravel()
    l = zip(_refinedImg, _imgGt)
    l.sort(key=lambda x: x[0])
    n = len(_refinedImg)
    step = 1. / maxPoints
    P = imgGt.sum()
    _l = [0] * n
    summ = 0
    for i in range(n):
        summ += l[-i - 1][1]
        _l[-i - 1] = summ
    index = 0
    pl, rl = [], []
    for i in range(maxPoints):
        thre = 0. + i * step
        for j in range(index, n):
            if l[j][0] >= thre:
                break
        index = j
        TP = float(_l[j])
        _P = n - index
        p, r = TP / _P, TP / P
        pl += [p]
        rl += [r]
    pl = np.array(pl)
    rl = np.array(rl)
    return pl, rl, None
Example #3
0
def mergeImgs(imgName, mergeMethods):
    '''
    生成合并图像
    '''
    if isinstance(imgName, int):
        imgName = IMG_NAME_LIST[imgName]
    print 'img index:%d/%d' % (IMG_NAME_LIST.index(imgName),
                               len(IMG_NAME_LIST))
    img = io.imread(IMG_DIR + imgName) / 255.
    imgGt = io.imread(IMG_DIR + imgName[:-3] + 'png') / 255.

    coarseDic = getCoarseDic(imgName, mergeMethods)
    sumCoarseImg = sum(coarseDic.values())
    sumCoarseImg = sumCoarseImg / sumCoarseImg.max()

    mulImg = reduce(lambda x, y: x * y, coarseDic.values())
    mulImg = normalizing(mulImg)

    integratImg = integratImgsBy3way(coarseDic.values())

    coarsePath = COARSE_DIR + ('%s_ME1.png' % imgName[:imgName.rindex('.')])
    io.imsave(coarsePath, sumCoarseImg)
    coarsePath = COARSE_DIR + ('%s_ME2.png' % imgName[:imgName.rindex('.')])
    io.imsave(coarsePath, mulImg)
    coarsePath = COARSE_DIR + ('%s_ME3.png' % imgName[:imgName.rindex('.')])
    io.imsave(coarsePath, integratImg)

    show([img, imgGt], lab=False)
    print 'mergeMethods: ', ' || '.join(mergeMethods)
    show(map(lambda k: coarseDic[k], mergeMethods))
    print 'resoult: ', ' || '.join(['ME1', 'ME2', 'ME3'])
    show([sumCoarseImg, mulImg, integratImg])
Example #4
0
def getRefindImgsOneElmAddLabAndLbp(img, coarseImgs, labelMap):
    '''MY3
    use all coarse imgs to train one elm, than, predict one refinedImg
    add Lab
    '''
    img = sk.color.rgb2lab(img)
    #show([mark_boundaries(img,labelMap),imgGt])
    # 获得4+4维  distance
    degreeVectors, Ws = getVectors(img, labelMap)
    weightSumVectors = getWeightSum(labelMap, degreeVectors, Ws)
    '''add lab lbp'''
    labVectors = getColorVector(img, labelMap)
    lbpVectors = getLbp(img, labelMap)
    vectors = np.c_[weightSumVectors, labVectors, lbpVectors]
    #    print 'weightSumVectors labVectors vectors.shape',weightSumVectors.shape,labVectors.shape,vectors.shape

    vectorsTrains = []
    coarseTrains = []
    for coarseImg in coarseImgs:
        coarseTrain, vectorsTrainTag = getCoarseTrain(coarseImg, labelMap)
        vectorsTrains += list(vectors[vectorsTrainTag])
        coarseTrains += list(coarseTrain)

    elm = getElm(np.array(vectorsTrains), np.array(coarseTrains))
    refined = elm.predict(vectors)[:, 0]
    refinedImg = valueToLabelMap(labelMap, normalizing(refined))
    return refinedImg
Example #5
0
def getBgNoElm(img, coarseImgs=None, labelMap=None):
    '''BG1
    '''
    img = sk.color.rgb2lab(img)
    #show([mark_boundaries(img,labelMap),imgGt])
    # 获得4+4维  distance
    degreeVectors, Ws = getVectors(img, labelMap)
    vectors = getWeightSum(labelMap, degreeVectors, Ws)
    if not coarseImgs:
        bg = norma(vectors2labelMap(vectors, labelMap).sum(-1))
        return bg
        show(bg)
        pblue('befor Classifier!')
        coarseImgs = [bg]
    vectorsTrains = []
    coarseTrains = []
    for coarseImg in coarseImgs:
        coarseTrain, vectorsTrainTag = getCoarseTrain(coarseImg, labelMap)
        vectorsTrains += list(vectors[vectorsTrainTag])
        coarseTrains += list(coarseTrain)

    g()
    elm = getElm(np.array(vectorsTrains), np.array(coarseTrains))
    refined = elm.predict(vectors)[:, 0]
    refinedImg = valueToLabelMap(labelMap, normalizing(refined))
    return refinedImg
Example #6
0
def showpr(imgName=1,
           methods=["MY4", "ME1", "MEAN", "DRFI", "QCUT", "DISC2"],
           lab=False):
    if isinstance(imgName, int):
        imgName = IMG_NAME_LIST[imgName]
    img = io.imread(IMG_DIR + imgName) / 255.
    imgGt = io.imread(IMG_DIR + imgName[:-3] + 'png') != 0
    coarseDic = getCoarseDic(imgName, methods)
    imgs = []
    methods = []
    for k, coarseImg in coarseDic.items():
        imgs += [mark_boundaries(normalizing(coarseImg), imgGt)]
        methods += [k]
    print '=' * 40
    print IMG_NAME_LIST.index(imgName), imgName
    print 'methods:', ' || '.join(methods)
    show(imgs)
    show(mark_boundaries(img, imgGt))
    from analysis import plotImgPr
    plotImgPr(imgGt, coarseDic)
Example #7
0
def integratImgsBy3way(refinedImgs):
    def f(refinedImg):
        h, w = refinedImg.shape[:2]
        a, b, c, d = int(0.25 * h), int(0.75 * h), int(0.25 * w), int(0.75 * w)
        center = refinedImg[a:b, c:d].sum()
        ratio = float(center) / (refinedImg.sum() - center)

        m, n = refinedImg.shape
        distribut = 1. / mapp(
            lambda x, i, j: float(x) *
            ((i - m / 2)**2 + (j - n / 2)**2), refinedImg, True).sum()

        var = np.var(refinedImg)
        return ratio, distribut, var

    l = np.array(map(f, refinedImgs))
    l = l / l.max(0)
    l = l.sum(1)
    mergeImg = sum(map(lambda x: x[0] * x[1], zip(refinedImgs, l)))
    mergeImg = normalizing(mergeImg)
    return mergeImg
Example #8
0
def getRefindImgsOneElm(img, coarseImgs, labelMap):
    '''MY1
    use all coarse imgs to train one elm, than, predict one refinedImg
    '''
    img = sk.color.rgb2lab(img)
    #show([mark_boundaries(img,labelMap),imgGt])
    # 获得4+4维  distance
    degreeVectors, Ws = getVectors(img, labelMap)
    vectors = getWeightSum(labelMap, degreeVectors, Ws)

    vectorsTrains = []
    coarseTrains = []
    for coarseImg in coarseImgs:
        coarseTrain, vectorsTrainTag = getCoarseTrain(coarseImg, labelMap)
        vectorsTrains += list(vectors[vectorsTrainTag])
        coarseTrains += list(coarseTrain)

    elm = getElm(np.array(vectorsTrains), np.array(coarseTrains))
    refined = elm.predict(vectors)[:, 0]
    refinedImg = valueToLabelMap(labelMap, normalizing(refined))
    return refinedImg
Example #9
0
def getRefindImgsManyElm(img, coarseImgs, labelMap):
    '''MY2
    for each coarse img train a elm, each elm predict a refinedImg
    merge refinedImgs and normalizing to one refinedImg
    '''
    img = sk.color.rgb2lab(img)
    #show([mark_boundaries(img,labelMap),imgGt])
    # 获得4+4维  color and texture scatter degree
    degreeVectors, Ws = getVectors(img, labelMap)
    #
    vectors = getWeightSum(labelMap, degreeVectors, Ws)
    refinedImgs = []
    for coarseImg in coarseImgs:
        coarseTrain, vectorsTrainTag = getCoarseTrain(coarseImg, labelMap)
        elm = getElm(vectors[vectorsTrainTag], coarseTrain)
        refined = elm.predict(vectors)[:, 0]
        refinedImg = valueToLabelMap(labelMap, normalizing(refined))
        refinedImgs += [refinedImg]

    # 合并 归一
    refinedImgSum = integratImgsBy3way(refinedImgs)
    return refinedImgSum