evalsS, evecsS = eigsh(CotanS, 50, sigma=-1e-8, M=MS) evalsT, evecsT = eigsh(CotanT, 50, sigma=-1e-8, M=MT) times = np.logspace(np.log(0.1), np.log(10), num=100) hksS = heat_kernel_siugnature(evalsS[1:], evecsS[:, 1:], trisS, pointsS, -times) hksT = heat_kernel_siugnature(evalsT[1:], evecsT[:, 1:], trisT, pointsT, -times) coefS = get_coef(evecsS[:, 1:], hksS) coefT = get_coef(evecsT[:, 1:], hksT) funcMap = get_funcMap(coefS, coefT) evecsS_mapped = (funcMap.dot(evecsS[:, 1:].T)).T from_mean, to_mean, rot, points_from_deformed = compute_best_rigid_deformation( evecsS_mapped, evecsT[:, 1:], evecsS[:, 1:], evecsT[:, 1:]) deltaS = np.zeros(pointsS.shape[0]) deltaS[0] = 1 coefS_delta = evecsS[:, 1:].T.dot(deltaS) rec_deltaS = evecsS[:, 1:].dot(coefS_delta) plot(trisS, pointsS, scalars=rec_deltaS) plot(trisT, pointsT, scalars=evecsT[:, 1:].dot(funcMap.dot(coefS_delta))) corrsS = points_from_deformed corrsT = evecsT[:, 1:] for i in range(0, 4):
MT, CotanT = get_cotan_Laplacian(trisT,pointsT) evalsS, evecsS = eigsh(CotanS,50,sigma=-1e-8,M=MS) evalsT, evecsT = eigsh(CotanT,50,sigma=-1e-8,M=MT) times = np.logspace(np.log(0.1),np.log(10),num=100) hksS = heat_kernel_siugnature(evalsS[1:],evecsS[:,1:],trisS,pointsS,-times) hksT = heat_kernel_siugnature(evalsT[1:],evecsT[:,1:],trisT,pointsT,-times) coefS = get_coef(evecsS[:,1:],hksS) coefT = get_coef(evecsT[:,1:],hksT) funcMap = get_funcMap(coefS,coefT) evecsS_mapped = (funcMap.dot(evecsS[:,1:].T)).T from_mean, to_mean, rot, points_from_deformed = compute_best_rigid_deformation(evecsS_mapped,evecsT[:,1:],evecsS[:,1:],evecsT[:,1:]) deltaS = np.zeros(pointsS.shape[0]) deltaS[0] = 1 coefS_delta = evecsS[:,1:].T.dot(deltaS) rec_deltaS = evecsS[:,1:].dot(coefS_delta) plot(trisS,pointsS,scalars=rec_deltaS) plot(trisT,pointsT,scalars=evecsT[:,1:].dot(funcMap.dot(coefS_delta))) corrsS = points_from_deformed corrsT = evecsT[:,1:] for i in range(0,4):
hksT = get_hks(eivalT,eivecT,triT,verT,times) wksS = get_wks(eivecS, eivalS,num_steps=100) wksT = get_wks(eivecT, eivalT,num_steps=100) #plot(triS,verS,scalars=hksS[:,0]) #plot(triS,verS,scalars=wksS[:,0]) coefhS = get_coef(eivecS,matMS,hksS) coefhT = get_coef(eivecT,matMT,hksT) coefwS = get_coef(eivecS,matMS,wksS) coefwT = get_coef(eivecT,matMT,wksT) funcMap = get_funcMap(coefhS,coefhT,eivalS,eivalT) #funcMap = get_funcMap(coefhS,coefhT,coefwS,coefwT,eivalS,eivalT) eivecS_mapped = (funcMap.dot(eivecS.T)).T from_mean, to_mean, rot, points_from_deformed = compute_best_rigid_deformation(eivecS_mapped,eivecT,eivecS,eivecT) corrsS = points_from_deformed corrsT = eivecT for i in range(0,8): mapped_from_to_to = extract_mapping_original(funcMap,corrsS, corrsT) corrsS = points_from_deformed[mapped_from_to_to,:] _, _, funcMap, _ = compute_best_rigid_deformation(corrsS,corrsT,eivecS,eivecT) print i base_ver = 2000 delta = np.zeros(verS.shape[0]) delta[base_ver] = 1 coefS_delta = eivecS.T.dot(delta) coefT_delta = funcMap.dot(coefS_delta) recS_delta = eivecS.dot(coefS_delta)