Processing math: 100%

[Reference] Constant-length energy function -- revisited

December 19, 2013

My earlier derivation of the constant-length energy function was flawed, because it pooled the individual lengths before comparing them to the pooled index-spacing. Thus, this energy function enforces the sum of squared lengths but not the individual lengths. Chalk it up to trying to be too clever in avoiding a square root.

In what follows, I derive a new energy function and its gradient. The Jacobians of μ and z are re-used from the earlier treatment.

Let μ be the maximum posterior curve, given an index set, x, arranged as a single column in "xyzxyz" format. Let μ(3) be the 3 by N/3 matrix obtained by rearranging the points of μ into column vectors. That is, the i-th column μ(3)i is the i-th reconstructed point.

Let η be the vector of absolute distances between adjacent points in mu3. Formally, ηi=μ(3)iμ(3)i1.

Note that ηη=η2=μDDμ, where D is the adjacent differences matrix, adapted to operate on column vectors in the "xyzxyz" format.

The constant width energy function is defined as

E=12(Dxη)2=12xDDx+12ηηxDη=12xDDx+12μDDμxDη

Gradient is given by

Ex=xDD+μDDJμηDxDJη

where Jz is the Jacobian of z w.r.t. x.

The Jacobian of z and μ are derived in this earlier post. It remains to find the Jacobian of η.

Note the identity η2i=μ(3)iμ(3)i12 can be rewritten in terms of the full vector η as ηη=sum3x1(DμDμ)
where sumkx1 implements k-way blockwise summation over columns of a matrix. Formally, it is the function f:RNxMR(N/k)xM (for any N divisible by k), such that (f(A))ij=i×ks=(i1)×k+1Asj

The Jacobian of η can then be given by

ηxi=xi(ηη)12=xi(sum3x1(DμDμ))12=12(ηη)12xi(sum3x1(DμDμ))=12η(1)(sum3x1(xiDμDμ))Jμ=12η(1)(sum3x1(2DμDJμ))=η(1)(sum3x1(DμDJμ))
where x(1)=(1xij) is the Hadamard (i.e. element-wise) inverse, and x12 is the Hadamard root.
Posted by Kyle Simek