# Método de Horn–Schunck

El método de Horn–Schunck para estimar flujo óptico es un método global que introduce una condición de suavidad para resolver el problema de apertura (ver imagen). El método se califica como global porque determina el vector de movimiento del flujo óptico en cada píxel de la imagen, en contraposición de los métodos locales que sólo actúan sobre algunas pocas coordenadas discretas elegidas por su aspecto.

## Principio de suavidad

La suavidad en el flujo óptico se refiere a las transiciones en zonas de las imágenes: una transición de una zona clara a una oscura debe ocurrir suavemente, pasando por las intensidades intermedias. De la misma manera el cambio de intensidad de un píxel en cualquier coordenada al correspondiente de la imagen consecutiva, debe ser suave. El método de Horn-Schunck se basa en este requisito para calcular las derivadas de las intensidades (en el espacio x e y y en el tiempo), necesarias para finalmente estimar los vectores de movimiento de cada píxel, que constituyen el flujo óptico.

## Formulación

El algoritmo de Horn-Schunck asume suavidad en el flujo óptico en toda la imagen. De este modo intenta minimizar distorsiones en el flujo y da preferencia a las soluciones de mayor suavidad. Esto significa que es más probable obtener conjuntos de vectores de velocidad de dirección y módulo coincidentes, que describen el movimiento de un objeto grande, en lugar de tener vectores caóticos indicando que cada píxel se mueve en un sentido diferente.
El algoritmo está desarrollado para aplicarse sobre un video. El video es una secuencia de imágenes discretas, y cada imagen es una matriz de píxeles discretos. No obstante la fundamentación del algoritmo comienza con un planteo matemático en dominios continuos, con derivadas en el espacio y en el tiempo. Luego de desarrollar analíticamente en el dominio continuo, en la última etapa se discretiza para adquirir su forma de aplicación práctica.
El flujo se formula como un funcional de energía global a minimizar. Es una función de imágenes consecutivas de un video:
    $E=\iint \left[(I_{x}u+I_{y}v+I_{t})^{2}+\alpha ^{2}(\lVert \nabla u\rVert ^{2}+\lVert \nabla v\rVert ^{2})\right]{{\rm {d}}x{\rm {d}}y}$
donde $I_{x}$, $I_{y}$ y $I_{t}$ son las derivadas de los valores de intensidad de la imagen a lo largo de las dimensiones x, y y tiempo respectivamente, ${\vec {V}}(x,y)=[u(x,y),v(x,y)]^{\top }$ es el vector de flujo óptico, y el parámetro $\alpha$ es una constante de regularización. Valores mayores de $\alpha$ corresponden a flujos más suaves. Este funcional se puede minimizar por medio de las siguientes ecuaciones de Euler-Lagrange multidimensionales:
    ${\frac {\partial L}{\partial u}}-{\frac {\partial }{\partial x}}{\frac {\partial L}{\partial u_{x}}}-{\frac {\partial }{\partial y}}{\frac {\partial L}{\partial u_{y}}}=0$
    ${\frac {\partial L}{\partial v}}-{\frac {\partial }{\partial x}}{\frac {\partial L}{\partial v_{x}}}-{\frac {\partial }{\partial y}}{\frac {\partial L}{\partial v_{y}}}=0$
donde $L$ es la integral de la expresión de energía, dando
    $I_{x}(I_{x}u+I_{y}v+I_{t})-\alpha ^{2}\Delta u=0$
    $I_{y}(I_{x}u+I_{y}v+I_{t})-\alpha ^{2}\Delta v=0$
donde los subíndices denotan diferenciación parcial y $\Delta ={\frac {\partial ^{2}}{\partial x^{2}}}+{\frac {\partial ^{2}}{\partial y^{2}}}$ denota el operador de Laplace. En la práctica el Laplaciano se aproxima numéricamente usando diferencias finitas, que se pueden escribir
    $\Delta u(x,y)={\overline {u}}(x,y)-u(x,y)$
donde ${\overline {u}}(x,y)$ es un promedio ponderado de $u$ calculado en la vecindad alrededor del píxel en las coordenadas (x,y). Usando esta notación el sistema de ecuaciones anterior se puede escribir
    $(I_{x}^{2}+\alpha ^{2})u+I_{x}I_{y}v=\alpha ^{2}{\overline {u}}-I_{x}I_{t}$
    $I_{x}I_{y}u+(I_{y}^{2}+\alpha ^{2})v=\alpha ^{2}{\overline {v}}-I_{y}I_{t}$
que es lineal en $u$ y $v$ y se puede resolver para cada píxel de la imagen. Sin embargo, ya que la solución depende de los valores vecinos del campo óptico, se debe repetir cada vez que se actualizan estos valores vecinos. El siguiente esquema iterativo deriva:
    $u^{k+1}={\overline {u}}^{k}-{\frac {I_{x}(I_{x}{\overline {u}}^{k}+I_{y}{\overline {v}}^{k}+I_{t})}{\alpha ^{2}+I_{x}^{2}+I_{y}^{2}}}$
    $v^{k+1}={\overline {v}}^{k}-{\frac {I_{y}(I_{x}{\overline {u}}^{k}+I_{y}{\overline {v}}^{k}+I_{t})}{\alpha ^{2}+I_{x}^{2}+I_{y}^{2}}}$
donde el superíndice k+1 denota la siguiente iteración, pendiente de cálculo, y k es el último resultado calculado. Esto es en esencia el método de Jacobi aplicado a un sistema grande y espaciado que surge cuando se resuelven todos los píxeles simultáneamente.

## Propiedades

Entre las ventajas del algoritmo de Horn–Schunck se destaca la alta densidad de vectores de flujo; la información de flujo que se pierde en zonas homogéneas se rellena desde los bordes con información de flujo. Entre las desventajas se señala que es más sensible al ruido que los métodos locales.