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()
fh = FileHelper( i, tr, out ) 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 ) } )
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)