Пример #1
0
def process(fPts, fImgs, train, method, maxPx, fSize):
    params = {
        "nIters": 7,
        "nTrain": 500,
        "filterPts": fPts,
        "filterImgs": fImgs,
        "trainASM": train,
        "writePCA": False,
        "maxPx": maxPx,
        "fSize": fSize,
        "method": method
    }

    params = OrderedDict(sorted(params.items(), key=lambda t: len(t[0])))
    ##Methods: "SSD", "NCorr", or "grad"
    ASMout = getASMfolder(params)
    appASMout = getMethodSubFolder(params, ASMout)

    fh = FileHelper(params["nIters"], params["nTrain"], ASMout,
                    params["filterPts"], params["filterImgs"])

    if params["filterPts"]:
        asm = ActiveShapeModel([43, 35])
    else:
        asm = ActiveShapeModel([36, 31])

    if params["trainASM"]:
        asm = fh.readInPoints(asm)
        asm = ShapeAligner(asm, params["nIters"], ASMout).alignTrainingSet()
        fh.writeOutASM(asm)  #write out to read in later
    else:
        asm = fh.readInASM(asm)

    ### Calculate Principal components

    asm.PCA()

    if params["trainASM"] or params["writePCA"]:
        ### Draw PCA stuffs
        if not os.path.exists(os.path.join(ASMout, "PCA")):
            os.mkdir(os.path.join(ASMout, "PCA"))
        wu = WriteUp(asm, fh)
        wu.PCAresults()

    if not params["trainASM"]:
        ### Apply ASM to image
        img = cv2.imread(
            "C:\Users\Valerie\Desktop\MicroExpress\CASME2\CASME2_RAW\CASME2-RAW\sub01\EP02_01f\img1.jpg"
        )
        img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        appASM = ApplyASM(asm, params["nIters"], params["nTrain"], appASMout,
                          img, params['method'], params['maxPx'],
                          params['fSize'], params["filterPts"])
        appASM.applyASM()
def process( fPts, fImgs, train, method, maxPx, fSize ):
    params ={ "nIters" : 7, 
              "nTrain" : 500,
              "filterPts" : fPts,
              "filterImgs" : fImgs,
              "trainASM" : train, 
              "writePCA" : False,
              "maxPx" : maxPx,
              "fSize" : fSize,
              "method" : method
              }


    params = OrderedDict( sorted( params.items(), key = lambda t : len(t[0]) ) )
    ##Methods: "SSD", "NCorr", or "grad"
    ASMout = getASMfolder( params )
    appASMout = getMethodSubFolder( params, ASMout )

    fh = FileHelper( params["nIters"], params["nTrain"], ASMout, params["filterPts"], params["filterImgs"] )

    if params["filterPts"]:
        asm = ActiveShapeModel( [43,35] ) 
    else: 
        asm = ActiveShapeModel( [36,31] )    

    if params["trainASM"]:
        asm = fh.readInPoints( asm )
        asm = ShapeAligner( asm, params["nIters"], ASMout ).alignTrainingSet( )
        fh.writeOutASM( asm ) #write out to read in later
    else: 
        asm = fh.readInASM( asm )

    ### Calculate Principal components

    asm.PCA()

    if params["trainASM"] or params["writePCA"]:
        ### Draw PCA stuffs
        if not os.path.exists( os.path.join( ASMout, "PCA" ) ) :
            os.mkdir( os.path.join( ASMout, "PCA" ) )
        wu = WriteUp( asm, fh )
        wu.PCAresults()

    if not params["trainASM"] :
        ### Apply ASM to image
        img = cv2.imread( "C:\Users\Valerie\Desktop\MicroExpress\CASME2\CASME2_RAW\CASME2-RAW\sub01\EP02_01f\img1.jpg")
        img =  cv2.cvtColor( img, cv2.COLOR_BGR2GRAY)
        appASM = ApplyASM( asm, params["nIters"], params["nTrain"],
                          appASMout, img, params['method'], 
                          params['maxPx'], params['fSize'], params["filterPts"]  )
        appASM.applyASM()
ebenFace  =  fh.readInImage()
ebenPoints = fh.readInOneDude( '000_1_1.pts')  
ebenShape = ActiveShape( ebenPoints )
 
#### MATCHING PROCESS

# Read in image
I = cv2.imread( "C:\Users\Valerie\Desktop\MicroExpress\CASME2\CASME2_RAW\CASME2-RAW\sub01\EP02_01f\img1.jpg")
I = cv2.cvtColor( I, cv2.COLOR_BGR2GRAY)

# Align shape
asm = ActiveShapeModel( [36,31] )
asm = fh.readInASM( asm )
asm.PCA()  
appASM = ApplyASM( asm, i, tr, out, I )
m, tdict = appASM.initialPosition( )

def genTemplateArr( ):
    templates = []
    for pt in ebenShape.shapePoints:
        templates.append( slice( ebenFace, 5, pt ) )
    return templates

def genTemplateDict( ):
    templates = {}
    ix = 0
    for pt in ebenShape.shapePoints:
        templates.update( { ix : slice( ebenFace, 5, pt ) } ) 
        ix += 1
    return templates
ebenShape = ActiveShape( ebenPoints 

## draw indices
DrawFace( ebenShape, plt).labelIndices()
plt.imshow( ebenFace )
plt.set_cmap( "gray" )
plt.set_cmap( "gray" )
plt.gca().axes.xaxis.set_ticks([])
plt.gca().axes.yaxis.set_ticks([])

plt.show()




 
#### MATCHING PROCESS

# Read in image
I = cv2.imread( "C:\Users\Valerie\Desktop\MicroExpress\CASME2\CASME2_RAW\CASME2-RAW\sub01\EP02_01f\img1.jpg")
I = cv2.cvtColor( I, cv2.COLOR_BGR2GRAY)

# Align shape
asm = ActiveShapeModel( [36,31] )
asm = fh.readInASM( asm )
asm.PCA()  
appASM = ApplyASM( asm, i, tr, out, I, "SSD", 5,5 )
m, tdict = appASM.initialPosition( )

TM = TemplateMatcher( 'SSD', 5, True )
TM.performMatching(I, m)