def vec2mtrx(opt,p):
O = util.toTorch(np.zeros([opt.batchSize],dtype=np.float32))
I = util.toTorch(np.ones([opt.batchSize],dtype=np.float32))
if opt.warpType=="translation":
tx,ty = torch.unbind(p,dim=1)
pMtrx = torch.stack([torch.stack([I,O,tx],dim=-1),
torch.stack([O,I,ty],dim=-1),
torch.stack([O,O,I],dim=-1)],dim=1)
if opt.warpType=="similarity":
pc,ps,tx,ty = torch.unbind(p,dim=1)
pMtrx = torch.stack([torch.stack([I+pc,-ps,tx],dim=-1),
torch.stack([ps,I+pc,ty],dim=-1),
torch.stack([O,O,I],dim=-1)],dim=1)
if opt.warpType=="affine":
p1,p2,p3,p4,p5,p6,p7,p8 = torch.unbind(p,dim=1)
pMtrx = torch.stack([torch.stack([I+p1,p2,p3],dim=-1),
torch.stack([p4,I+p5,p6],dim=-1),
torch.stack([O,O,I],dim=-1)],dim=1)
if opt.warpType=="homography":
p1,p2,p3,p4,p5,p6,p7,p8 = torch.unbind(p,dim=1)
pMtrx = torch.stack([torch.stack([I+p1,p2,p3],dim=-1),
torch.stack([p4,I+p5,p6],dim=-1),
torch.stack([p7,p8,I],dim=-1)],dim=1)
return pMtrx
# convert warp matrix to parameters
评论列表
文章目录