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()
row = rows.flatten() col = cols.flatten() return map( lambda x: Vector( x[0], x[1] ), zip( row, col ) ) def coordOffset( pt, n ): y = pt.y #row x = pt.x #col return x - ( n - 1)/2, y - (n-1)/1 #def run( ): i = 20 tr = 500 out = "C:\\Users\\Valerie\\Desktop\\output\\20-500-1" 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()
return map(lambda x: Vector(x[0], x[1]), zip(row, col)) def coordOffset(pt, n): y = pt.y #row x = pt.x #col return x - (n - 1) / 2, y - (n - 1) / 1 #def run( ): i = 20 tr = 500 out = "C:\\Users\\Valerie\\Desktop\\output" fh = FileHelper(i, tr, out, True, True) 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])
from helpers.DrawFace import DrawFace from shapes.ActiveShape import ActiveShape from active_shape_models.ActiveShapeModel import ActiveShapeModel from active_shape_models.ApplyASM import ApplyASM from shapes.Vector import Vector from matplotlib import pyplot as plt from matplotlib import gridspec import numpy as np import math from image_processing.TemplateMatcher import TemplateMatcher i = 20 tr = 500 out = "C:\\Users\\Valerie\\Desktop\\output\\ASMTraining-MessingAround\\20-500-1" fh = FileHelper( i, tr, out, False, False ) ebenFace = fh.readInImage() ebenPoints = fh.readInOneDude( '000_1_1.pts') ebenShape = ActiveShape( ebenPoints ) ## draw indices DrawFace( ebenShape, plt).labelIndices() plt.imshow( ebenFace ) plt.set_cmap( "gray" ) plt.gca().axes.xaxis.set_ticks([]) plt.gca().axes.yaxis.set_ticks([]) plt.show() fh = FileHelper( i, tr, out, True, False )
i = 0 study = "%d-%d-%d" % (iters, training, i) if not os.path.exists(os.path.join(output, study)) and (train or align): os.mkdir(os.path.join(output, study)) output = os.path.join(output, study) else: while os.path.exists(os.path.join(output, study)): i += 1 study = "%d-%d-%d" % (iters, training, i) if train or align: os.mkdir(os.path.join(output, study)) else: study = "%d-%d-%d" % (iters, training, i) output = os.path.join(output, study) fh = FileHelper(iters, training, output) if train: asm = ActiveShapeModel([36, 31]) asm = fh.readInPoints(asm) ### Align Shapes if align: asm = ShapeAligner(asm, iters, output).alignTrainingSet() fh.writeOutASM(asm) #write out to read in later d = map(lambda x: x.shapeDist(asm.normMeanShape), asm.allShapes) d1 = np.mean(d, 1) min = np.min(d1) mn = np.mean(d1)