Cómo calcular la energía de flujo del vector gradiente

Hola a todos, solo para elaborar mi pregunta:

El flujo vectorial de gradiente (GVF) generalmente utilizado en el método Snakes es un campo vectorial X (x, y) = (u (x, y), v (x, y)), que minimiza la energía funcional:

Mi pregunta se refiere al cálculo práctico real de esto para obtener un único número discreto (uso Matlab). Cuando trato de calcular esta energía en varias iteraciones, según el algoritmo GVF, mi energía aumenta y converge después de un tiempo; lo cual sería genial si se supone que maximice la energía, pero se supone que minimice la energía. Así que supongo que debo estar haciendo algo mal.

Aquí está mi código de Matlab, espero que pueda ser de alguna utilidad:

f es mi EdgeMap (es decir, el gradiente de mi imagen)

[matemáticas] [fx, fy] = gradiente (f ^ 2); [/ matemáticas]

[matemáticas] para n = 1: N [/ matemáticas]

[matemáticas] [ux, uy] = gradiente (u); [/ matemáticas]

[matemáticas] [vx, vy] = gradiente (v); [/ matemáticas]

[matemáticas] Fterm = (ux ^ 2 + uy ^ 2 + vx ^ 2 + vy ^ 2); [/ matemáticas]

[matemáticas] Sterm = gradiente (f ^ 2) ^ 2 * (((u – fx) + (v – fy)). ^ 2); [/ matemáticas]

[matemáticas] Energía = suma (suma (mu * Fterm + Sterm)); [/ matemáticas]

[matemáticas] final [/ matemáticas]

Espero que esto tenga sentido..

Muchas gracias por adelantado.