这周的目标是求出mask内所有点对应smpl中点的坐标。通过这个对应关系,可求出论文中对应的(2),(3),(5)
读了MF的Mean value coordinates
主要使用如下公式
主要代码如下
result=[]
for pos,j in enumerate(list_in_contours):
tan=[]
for i in range(1,len(data1)):
tan.append(getTan(data1[i-1],j,data1[i]))
tan.append(getTan(data1[-1],j,data1[0]))
w=[]
sum=0
for i in range(len(data1)):
w.append( (tan[i]+tan[i-1])/np.sqrt((data1[i][0]-j[0])*(data1[i][0]-j[0])+(data1[i][1]-j[1])*(data1[i][1]-j[1])))
sum=sum+w[-1]
w=w/sum
a=0
b=0
for q in range(len(data1)):
a=a+w[q]*data2[ (int)( lis[len1-1-q][1]) ][0]
b=b+w[q]*data2[ (int)( lis[len1-1-q][1]) ][1]
result.append((list_in_contours[pos],[a,b]))
if(pos%1000==0):
print(pos,result[-1])
运行速度较慢,准备重新改写一遍提高运算速度