Пример #1
0
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):
Пример #2
0
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):
Пример #3
0
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)