How to numerically optimize affine transformations?

2018-10-05 21:21:26

I need to optimize affine transformations for of a set of triangles using energy function based on the connectivity.

The energy of an edge $e_j$ between triangles $T_a, T_b$ is given by

$$

E_j = \left[(A_a v_{a,1} + t_a) - (A_b v_{1,b} + t_b) \right]

\left[(A_a v_{a,2} + t_a) - (A_b v_{2,b} + t_b) \right]

$$

where $(A_a, t_a)$ and $(A_b, t_b)$ are affine transformations on the triangles adjacent to the edge and $v_1$ and $v_2$ are the vertices of the edge. The solution $v_i \equiv 0$ is prevented by an additional deformation energy on the triangles, like the conformal energy.

After the optimization, we want to have

$$v_{a,1}=v_{b,1}, \quad v_{a,2}=v_{b,2} \quad \Rightarrow E_j = 0$$

My problem is, that this is a non-linear problem, which is hard for solvers. I am using Google Ceres with line-search, but it often fails to find a valid line-search stepsize when optimizing

$$

\begin{pmatrix}

a_1 & a_2 \\

a_3 & a_4

\end{pmatrix}, \begin{pmatrix}t_1 \\ t_2\end{pmatrix}