Esempio n. 1
0
 def __init__(self,fileName):
     self.mask = imread(fileName) > 0
     self.notMask = logical_not(self.mask)
     self.positives = count_nonzero(self.mask)*1.0
     self.negatives = (self.mask.size - self.positives)*1.0
Esempio n. 2
0
        tp = count_nonzero(logical_and(self.mask,binary))
        return fp,tp

def getBlackWhiteFromBinary(img):
    return dstack((img,img,img))

if __name__ == '__main__':
    seterr(all='warn')
    skindata, nonskindata = loadmat('data/skin.mat')['sdata'].reshape((-1, 3)).astype(float128), loadmat('data/nonskin.mat')['ndata'].reshape((-1, 3)).astype(float128)
    iters = 10
    show = False
    usekmeans = False
    gmmskin, gmmnonskin = gmmEM(skindata, 2, iters,show,usekmeans), gmmEM(nonskindata, 2, iters,show,usekmeans)
    img = imread('data/image.png').astype(float128) / 255.0
    imshape = img.shape
    img = img.reshape((-1, 3))
    skinp, nonskinp = gmmskin.getP(img), gmmnonskin.getP(img)
    res = skinp > nonskinp
    res = res.reshape((imshape[0],imshape[1]))
    res = logical_not(res)
    
    gt = GroundTruth('data/mask.png')
    fp, tp = gt.checkClassification(res)
    print "false positive ratio: ", fp*1.0/gt.negatives
    print "true positive ratio: ", tp*1.0/gt.positives
    
    res = getBlackWhiteFromBinary(res)
    pylab.figure()
    pylab.imshow(res)
    pylab.show()