创新实训第五周总结

2019/4/17
上周我们得出smpl模型的法线图,深度图后,我们就要进行对smpl的轮廓和原图轮廓进行匹配了
1.得到smpl的黑白轮廓图mask 和原图的黑白轮廓图mask
在这里插入图片描述
使用抠图算法和opencv库的图像分割
在这里插入图片描述
2.求出原图mask与smpl.mask的对应关系
对应关系的含义:原图中每一个像素点寻找其对应在smpl像素点中的一个f(x)

首先获取内部点集合

import matplotlib.image as mpimg # mpimg 用于读取图片
 
def getPointIn(path,outPoint):
    outPoint=list(outPoint)
    img =mpimg.imread(path)
    q=[]
    if not len(img.shape)==2:
        img= img[:,:,2]
    print (img.shape)
    w,h=img.shape
    
    for i in range(w):
        for j in range(h):
            if not img[i,j]==0 and  (not [i,j] in outPoint ):
                q.append([i,j])
         
    return q
 
data1=data1.tolist()
inyuan=getPointIn('C:/Users/hsy/Desktop/xmsx/DIna/kuli_mask1.png',data1) 
data2=data2.tolist()
insmpl=getPointIn('C:/Users/hsy/Desktop/xmsx/DIna/a.png',data2)
 
inyuan=np.array(inyuan)
insmpl=np.array(insmpl)
print(insmpl.shape)
print(inyuan.shape)
insmpl+=[35,0]
data2=np.array(inyuan)
data2+=[35,0]
data2=data2.tolist()

3.求解f(x)
在这里插入图片描述
参考论文: M. S. Floater. Mean value coordinates. Computer aided geometric design, 20(1):19–27, 2003.
其中的角度关系在这里插入图片描述
求解tan(α/2)用数学公式:
已知两个矢量,使用矢量叉乘可以得到sin α 以及cos alpha
根据半角公式 tan(α/2)=(1+cos α )/sin α
在这里插入图片描述
相应代码

 
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]) 

接下来就是求解f(x)了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值