Articulo de referencia

interpolación bicúbica

Comparación de la interpolación bicúbica con algunas interpolaciones unidimensionales y bidimensionales. Los puntos negros y rojos / amarillos / verdes / azules corresponden al ...

Comparación de la interpolación bicúbica con algunas interpolaciones unidimensionales y bidimensionales. Los puntos negros y rojos / amarillos / verdes / azules corresponden al punto interpolado y a las muestras vecinas, respectivamente. Sus alturas sobre el suelo corresponden a sus valores.

En matemáticas , la interpolación bicúbica es una extensión de la interpolación cúbica mediante splines (un método para aplicar la interpolación cúbica a un conjunto de datos) para interpolar puntos de datos en una cuadrícula regular bidimensional . La superficie interpolada (es decir, la forma del núcleo, no la imagen) es más suave que las superficies correspondientes obtenidas mediante interpolación bilineal o interpolación del vecino más cercano . La interpolación bicúbica se puede realizar utilizando polinomios de Lagrange , splines cúbicos o el algoritmo de convolución cúbica .

En el procesamiento de imágenes , la interpolación bicúbica se suele preferir a la bilineal o a la del vecino más cercano en el remuestreo de imágenes , cuando la velocidad no es un factor crítico. A diferencia de la interpolación bilineal, que solo considera 4 píxeles (2×2), la interpolación bicúbica considera 16 píxeles (4×4). Las imágenes remuestreadas con interpolación bicúbica pueden presentar diferentes artefactos de interpolación , dependiendo de los valores de b y c seleccionados.

Cálculo

Interpolación bicúbica en el cuadrado[0,4]×[0,4]{\displaystyle [0,4]\times [0,4]}Consta de 25 cuadrados unitarios unidos. Interpolación bicúbica según la implementación de Matplotlib . El color indica el valor de la función. Los puntos negros representan las ubicaciones de los datos prescritos que se interpolan. Nótese que las muestras de color no son radialmente simétricas.
Interpolación bilineal sobre el mismo conjunto de datos que el anterior. Las derivadas de la superficie no son continuas sobre los límites cuadrados.
Interpolación del vecino más cercano en el mismo conjunto de datos que el anterior.

Supongamos que los valores de la funciónF{\displaystyle f}y los derivadosFincógnita{\displaystyle f_{x}},Fy{\displaystyle f_{y}}yFincógnitay{\displaystyle f_{xy}}son conocidos en las cuatro esquinas(0,0){\displaystyle (0,0)},(1,0){\displaystyle (1,0)},(0,1){\displaystyle (0,1)}, y(1,1){\displaystyle (1,1)}del cuadrado unitario. La superficie interpolada se puede escribir entonces como pag(incógnita,y)=i=03j=03aijincógnitaiyj.{\displaystyle p(x,y)=\sum \limits _{i=0}^{3}\sum _{j=0}^{3}a_{ij}x^{i}y^{j}.}

El problema de interpolación consiste en determinar los 16 coeficientes.aij{\displaystyle a_{ij}}. Coincidenciapag(incógnita,y){\displaystyle p(x,y)}Con los valores de la función se obtienen cuatro ecuaciones:

  1. F(0,0)=pag(0,0)=a00,{\displaystyle f(0,0)=p(0,0)=a_{00},}
  2. F(1,0)=pag(1,0)=a00+a10+a20+a30,{\displaystyle f(1,0)=p(1,0)=a_{00}+a_{10}+a_{20}+a_{30},}
  3. F(0,1)=pag(0,1)=a00+a01+a02+a03,{\displaystyle f(0,1)=p(0,1)=a_{00}+a_{01}+a_{02}+a_{03},}
  4. F(1,1)=pag(1,1)=i=03j=03aij.{\displaystyle f(1,1)=p(1,1)=\textstyle \sum \limits _{i=0}^{3}\sum \limits _{j=0}^{3}a_{ij}.}

Asimismo, ocho ecuaciones para las derivadas en elincógnita{\displaystyle x}y ely{\displaystyle y}instrucciones:

  1. Fincógnita(0,0)=pagincógnita(0,0)=a10,{\displaystyle f_{x}(0,0)=p_{x}(0,0)=a_{10},}
  2. Fincógnita(1,0)=pagincógnita(1,0)=a10+2a20+3a30,{\displaystyle f_{x}(1,0)=p_{x}(1,0)=a_{10}+2a_{20}+3a_{30},}
  3. Fincógnita(0,1)=pagincógnita(0,1)=a10+a11+a12+a13,{\displaystyle f_{x}(0,1)=p_{x}(0,1)=a_{10}+a_{11}+a_{12}+a_{13},}
  4. Fincógnita(1,1)=pagincógnita(1,1)=i=13j=03aiji,{\displaystyle f_{x}(1,1)=p_{x}(1,1)=\textstyle \sum \limits _{i=1}^{3}\sum \limits _{j=0}^{3}a_{ij}i,}
  5. Fy(0,0)=pagy(0,0)=a01,{\displaystyle f_{y}(0,0)=p_{y}(0,0)=a_{01},}
  6. Fy(1,0)=pagy(1,0)=a01+a11+a21+a31,{\displaystyle f_{y}(1,0)=p_{y}(1,0)=a_{01}+a_{11}+a_{21}+a_{31},}
  7. Fy(0,1)=pagy(0,1)=a01+2a02+3a03,{\displaystyle f_{y}(0,1)=p_{y}(0,1)=a_{01}+2a_{02}+3a_{03},}
  8. Fy(1,1)=pagy(1,1)=i=03j=13aijj.{\displaystyle f_{y}(1,1)=p_{y}(1,1)=\textstyle \sum \limits _{i=0}^{3}\sum \limits _{j=1}^{3}a_{ij}j.}

Y cuatro ecuaciones para laincógnitay{\displaystyle xy}derivada parcial mixta :

  1. Fincógnitay(0,0)=pagincógnitay(0,0)=a11,{\displaystyle f_{xy}(0,0)=p_{xy}(0,0)=a_{11},}
  2. Fincógnitay(1,0)=pagincógnitay(1,0)=a11+2a21+3a31,{\displaystyle f_{xy}(1,0)=p_{xy}(1,0)=a_{11}+2a_{21}+3a_{31},}
  3. Fincógnitay(0,1)=pagincógnitay(0,1)=a11+2a12+3a13,{\displaystyle f_{xy}(0,1)=p_{xy}(0,1)=a_{11}+2a_{12}+3a_{13},}
  4. Fincógnitay(1,1)=pagincógnitay(1,1)=i=13j=13aijij.{\displaystyle f_{xy}(1,1)=p_{xy}(1,1)=\textstyle \sum \limits _{i=1}^{3}\sum \limits _{j=1}^{3}a_{ij}ij.}

Las expresiones anteriores han utilizado las siguientes identidades: pagincógnita(incógnita,y)=i=13j=03aijiincógnitai1yj,{\displaystyle p_{x}(x,y)=\textstyle \sum \limits _{i=1}^{3}\sum \limits _{j=0}^{3}a_{ij}ix^{i-1}y^{j},}pagy(incógnita,y)=i=03j=13aijincógnitaijyj1,{\displaystyle p_{y}(x,y)=\textstyle \sum \limits _{i=0}^{3}\sum \limits _{j=1}^{3}a_{ij}x^{i}jy^{j-1},}pagincógnitay(incógnita,y)=i=13j=13aijiincógnitai1jyj1.{\displaystyle p_{xy}(x,y)=\textstyle \sum \limits _{i=1}^{3}\sum \limits _{j=1}^{3}a_{ij}ix^{i-1}jy^{j-1}.}

Este procedimiento produce una superficiepag(incógnita,y){\displaystyle p(x,y)}en la unidad cuadrada[0,1]×[0,1]{\displaystyle [0,1]\times [0,1]}que es continua y tiene derivadas continuas. La interpolación bicúbica en una cuadrícula regular de tamaño arbitrario se puede realizar uniendo dichas superficies bicúbicas, asegurando que las derivadas coincidan en los límites.

Agrupación de los parámetros desconocidosaij{\displaystyle a_{ij}}en un vector α=[a00a10a20a30a01a11a21a31a02a12a22a32a03a13a23a33]T{\displaystyle \alpha =\left[{\begin{smallmatrix}a_{00}&a_{10}&a_{20}&a_{30}&a_{01}&a_{11}&a_{21}&a_{31}&a_{02}&a_{12}&a_{22}&a_{32}&a_{03}&a_{13}&a_{23}&a_{33}\end{smallmatrix}}\right]^{T}} y dejar incógnita=[F(0,0)F(1,0)F(0,1)F(1,1)Fincógnita(0,0)Fincógnita(1,0)Fincógnita(0,1)Fincógnita(1,1)Fy(0,0)Fy(1,0)Fy(0,1)Fy(1,1)Fincógnitay(0,0)Fincógnitay(1,0)Fincógnitay(0,1)Fincógnitay(1,1)]T,{\displaystyle x=\left[{\begin{smallmatrix}f(0,0)&f(1,0)&f(0,1)&f(1,1)&f_{x}(0,0)&f_{x}(1,0)&f_{x}(0,1)&f_{x}(1,1)&f_{y}(0,0)&f_{y}(1,0)&f_{y}(0,1)&f_{y}(1,1)&f_{xy}(0,0)&f_{xy}(1,0)&f_{xy}(0,1)&f_{xy}(1,1)\end{smallmatrix}}\right]^{T},} El sistema de ecuaciones anterior se puede reformular en una matriz para la ecuación lineal.Aα=incógnita{\displaystyle A\alpha =x}.

Invertir la matriz da como resultado la ecuación lineal más útil.A1incógnita=α{\displaystyle A^{-1}x=\alpha }, dónde A1=[1000000000000000000010000000000033002100000000002200110000000000000000001000000000000000000010000000000033002100000000002200110030300000201000000000303000002010999963636633422166663333442222112020000010100000000020200000101066664242333321214444222222221111],{\displaystyle A^{-1}=\left[{\begin{smallmatrix}{\begin{array}{rrrrrrrrrrrrrrrr}1&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0\\0&0&0&0&1&0&0&0&0&0&0&0&0&0&0&0\\-3&3&0&0&-2&-1&0&0&0&0&0&0&0&0&0&0\\2&-2&0&0&1&1&0&0&0&0&0&0&0&0&0&0\\0&0&0&0&0&0&0&0&1&0&0&0&0&0&0&0\\0&0&0&0&0&0&0&0&0&0&0&0&1&0&0&0\\0&0&0&0&0&0&0&0&-3&3&0&0&-2&-1&0&0\\0&0&0&0&0&0&0&0&2&-2&0&0&1&1&0&0\\-3&0&3&0&0&0&0&0&-2&0&-1&0&0&0&0&0\\0&0&0&0&-3&0&3&0&0&0&0&0&-2&0&-1&0\\9&-9&-9&9&6&3&-6&-3&6&-6&3&-3&4&2&2&1\\-6&6&6&-6&-3&-3&3&3&-4&4&-2&2&-2&-2&-1&-1\\2&0&-2&0&0&0&0&0&1&0&1&0&0&0&0&0\\0&0&0&0&2&0&-2&0&0&0&0&0&1&0&1&0\\-6&6&6&-6&-4&-2&4&2&-3&3&-3&3&-2&-1&-2&-1\\4&-4&-4&4&2&2&-2&-2&2&-2&2&-2&1&1&1&1\end{array}}\end{smallmatrix}}\right],} lo cual permiteα{\displaystyle \alpha }que se pueda calcular de forma rápida y sencilla.

Puede existir otra forma matricial concisa para 16 coeficientes: [F(0,0)F(0,1)Fy(0,0)Fy(0,1)F(1,0)F(1,1)Fy(1,0)Fy(1,1)Fincógnita(0,0)Fincógnita(0,1)Fincógnitay(0,0)Fincógnitay(0,1)Fincógnita(1,0)Fincógnita(1,1)Fincógnitay(1,0)Fincógnitay(1,1)]=[1000111101000123][a00a01a02a03a10a11a12a13a20a21a22a23a30a31a32a33][1100011101020103],{\displaystyle {\begin{bmatrix}f(0,0)&f(0,1)&f_{y}(0,0)&f_{y}(0,1)\\f(1,0)&f(1,1)&f_{y}(1,0)&f_{y}(1,1)\\f_{x}(0,0)&f_{x}(0,1)&f_{xy}(0,0)&f_{xy}(0,1)\\f_{x}(1,0)&f_{x}(1,1)&f_{xy}(1,0)&f_{xy}(1,1)\end{bmatrix}}={\begin{bmatrix}1&0&0&0\\1&1&1&1\\0&1&0&0\\0&1&2&3\end{bmatrix}}{\begin{bmatrix}a_{00}&a_{01}&a_{02}&a_{03}\\a_{10}&a_{11}&a_{12}&a_{13}\\a_{20}&a_{21}&a_{22}&a_{23}\\a_{30}&a_{31}&a_{32}&a_{33}\end{bmatrix}}{\begin{bmatrix}1&1&0&0\\0&1&1&1\\0&1&0&2\\0&1&0&3\end{bmatrix}},} o [a00a01a02a03a10a11a12a13a20a21a22a23a30a31a32a33]=[1000001033212211][F(0,0)F(0,1)Fy(0,0)Fy(0,1)F(1,0)F(1,1)Fy(1,0)Fy(1,1)Fincógnita(0,0)Fincógnita(0,1)Fincógnitay(0,0)Fincógnitay(0,1)Fincógnita(1,0)Fincógnita(1,1)Fincógnitay(1,0)Fincógnitay(1,1)][1032003201210011],{\displaystyle {\begin{bmatrix}a_{00}&a_{01}&a_{02}&a_{03}\\a_{10}&a_{11}&a_{12}&a_{13}\\a_{20}&a_{21}&a_{22}&a_{23}\\a_{30}&a_{31}&a_{32}&a_{33}\end{bmatrix}}={\begin{bmatrix}1&0&0&0\\0&0&1&0\\-3&3&-2&-1\\2&-2&1&1\end{bmatrix}}{\begin{bmatrix}f(0,0)&f(0,1)&f_{y}(0,0)&f_{y}(0,1)\\f(1,0)&f(1,1)&f_{y}(1,0)&f_{y}(1,1)\\f_{x}(0,0)&f_{x}(0,1)&f_{xy}(0,0)&f_{xy}(0,1)\\f_{x}(1,0)&f_{x}(1,1)&f_{xy}(1,0)&f_{xy}(1,1)\end{bmatrix}}{\begin{bmatrix}1&0&-3&2\\0&0&3&-2\\0&1&-2&1\\0&0&-1&1\end{bmatrix}},} dónde pag(incógnita,y)=[1incógnitaincógnita2incógnita3][a00a01a02a03a10a11a12a13a20a21a22a23a30a31a32a33][1yy2y3].{\displaystyle p(x,y)={\begin{bmatrix}1&x&x^{2}&x^{3}\end{bmatrix}}{\begin{bmatrix}a_{00}&a_{01}&a_{02}&a_{03}\\a_{10}&a_{11}&a_{12}&a_{13}\\a_{20}&a_{21}&a_{22}&a_{23}\\a_{30}&a_{31}&a_{32}&a_{33}\end{bmatrix}}{\begin{bmatrix}1\\y\\y^{2}\\y^{3}\end{bmatrix}}.}

Extensión a cuadrículas rectilíneas

A menudo, las aplicaciones requieren interpolación bicúbica utilizando datos en una cuadrícula rectilínea, en lugar del cuadrado unitario. En este caso, las identidades parapagincógnita,pagy,{\displaystyle p_{x},p_{y},}ypagincógnitay{\displaystyle p_{xy}}convertirse pagincógnita(incógnita,y)=i=13j=03aijiincógnitai1yjΔincógnita,{\displaystyle p_{x}(x,y)=\textstyle \sum \limits _{i=1}^{3}\sum \limits _{j=0}^{3}{\frac {a_{ij}ix^{i-1}y^{j}}{\Delta x}},}pagy(incógnita,y)=i=03j=13aijincógnitaijyj1Δy,{\displaystyle p_{y}(x,y)=\textstyle \sum \limits _{i=0}^{3}\sum \limits _{j=1}^{3}{\frac {a_{ij}x^{i}jy^{j-1}}{\Delta y}},}pagincógnitay(incógnita,y)=i=13j=13aijiincógnitai1jyj1ΔincógnitaΔy,{\displaystyle p_{xy}(x,y)=\textstyle \sum \limits _{i=1}^{3}\sum \limits _{j=1}^{3}{\frac {a_{ij}ix^{i-1}jy^{j-1}}{\Delta x\Delta y}},} dóndeΔincógnita{\displaystyle \Delta x}es elincógnita{\displaystyle x}espaciado de la celda que contiene el punto(incógnita,y){\displaystyle (x,y)}y similar paraΔy{\displaystyle \Delta y}En este caso, el enfoque más práctico para calcular los coeficientes esα{\displaystyle \alpha }es dejar incógnita=[F(0,0)F(1,0)F(0,1)F(1,1)ΔincógnitaFincógnita(0,0)ΔincógnitaFincógnita(1,0)ΔincógnitaFincógnita(0,1)ΔincógnitaFincógnita(1,1)ΔyFy(0,0)ΔyFy(1,0)ΔyFy(0,1)ΔyFy(1,1)ΔincógnitaΔyFincógnitay(0,0)ΔincógnitaΔyFincógnitay(1,0)ΔincógnitaΔyFincógnitay(0,1)ΔincógnitaΔyFincógnitay(1,1)]T,{\displaystyle x=\left[{\begin{smallmatrix}f(0,0)&f(1,0)&f(0,1)&f(1,1)&\Delta xf_{x}(0,0)&\Delta xf_{x}(1,0)&\Delta xf_{x}(0,1)&\Delta xf_{x}(1,1)&\Delta yf_{y}(0,0)&\Delta yf_{y}(1,0)&\Delta yf_{y}(0,1)&\Delta yf_{y}(1,1)&\Delta x\Delta yf_{xy}(0,0)&\Delta x\Delta yf_{xy}(1,0)&\Delta x\Delta yf_{xy}(0,1)&\Delta x\Delta yf_{xy}(1,1)\end{smallmatrix}}\right]^{T},} luego para resolverα=A1incógnita{\displaystyle \alpha =A^{-1}x}conA{\displaystyle A}como antes. A continuación, se calculan las variables de interpolación normalizadas como incógnita¯=incógnitaincógnita0incógnita1incógnita0,y¯=yy0y1y0{\displaystyle {\begin{aligned}{\overline {x}}&={\frac {x-x_{0}}{x_{1}-x_{0}}},\\{\overline {y}}&={\frac {y-y_{0}}{y_{1}-y_{0}}}\end{aligned}}} dóndeincógnita0,incógnita1,y0,{\displaystyle x_{0},x_{1},y_{0},}yy1{\displaystyle y_{1}}son losincógnita{\displaystyle x}yy{\displaystyle y}coordenadas de los puntos de la cuadrícula que rodean el punto(incógnita,y){\displaystyle (x,y)}Entonces, la superficie de interpolación se convierte en pag(incógnita,y)=i=03j=03aijincógnita¯iy¯j.{\displaystyle p(x,y)=\sum \limits _{i=0}^{3}\sum _{j=0}^{3}a_{ij}{\overline {x}}^{i}{\overline {y}}^{j}.}

Cálculo de derivadas a partir de valores de funciones

Si se desconocen las derivadas, normalmente se aproximan a partir de los valores de la función en puntos vecinos a las esquinas del cuadrado unitario, por ejemplo, utilizando diferencias finitas .

Para hallar cualquiera de las derivadas simples,Fincógnita{\displaystyle f_{x}}oFy{\displaystyle f_{y}}Utilizando ese método, encuentre la pendiente entre los dos puntos circundantes en el eje apropiado. Por ejemplo, para calcularFincógnita{\displaystyle f_{x}}Para uno de los puntos, encuentreF(incógnita,y){\displaystyle f(x,y)}para los puntos a la izquierda y a la derecha del punto objetivo y calcular la pendiente de la línea recta entre ellos, y de manera similar paraFy{\displaystyle f_{y}}.

Para hallar la derivada cruzadaFincógnitay{\displaystyle f_{xy}}, tome la derivada en ambos ejes, uno a la vez. Por ejemplo, primero se puede usar laFincógnita{\displaystyle f_{x}}procedimiento para encontrar elincógnita{\displaystyle x}derivadas de los puntos por encima y por debajo del punto objetivo, luego utilice laFy{\displaystyle f_{y}}procedimiento sobre esos valores (en lugar de, como es habitual, los valores deF{\displaystyle f}para esos puntos) para obtener el valor deFincógnitay(incógnita,y){\displaystyle f_{xy}(x,y)}para el punto objetivo. (O se puede hacer en la dirección opuesta, calculando primeroFy{\displaystyle f_{y}}y luegoFincógnita{\displaystyle f_{x}}de esos. Ambos dan resultados equivalentes.)

En los extremos del conjunto de datos, cuando faltan algunos puntos circundantes, estos pueden aproximarse mediante diversos métodos. Un método sencillo y común consiste en suponer que la pendiente desde el punto existente hasta el punto objetivo continúa sin cambios, y utilizar esta suposición para calcular un valor hipotético para el punto faltante.

Algoritmo de convolución bicúbica

núcleo de convoluciónW(incógnita){\displaystyle W(x)}
Núcleo de convolución (expandido en 2D)

La interpolación mediante splines bicúbicas requiere la solución del sistema lineal descrito anteriormente para cada celda de la cuadrícula . Se puede obtener un interpolador con propiedades similares aplicando una convolución con el siguiente núcleo en ambas dimensiones: W(incógnita)={(a+2)|incógnita|3(a+3)|incógnita|2+1para |incógnita|1,a|incógnita|35a|incógnita|2+8a|incógnita|4apara 1<|incógnita|<2,0de lo contrario,{\displaystyle W(x)={\begin{cases}(a+2)|x|^{3}-(a+3)|x|^{2}+1&{\text{for }}|x|\leq 1,\\a|x|^{3}-5a|x|^{2}+8a|x|-4a&{\text{for }}1<|x|<2,\\0&{\text{otherwise}},\end{cases}}} dóndea{\displaystyle a}Por lo general, se establece en −0,5 o −0,75. Tenga en cuenta queW(0)=1{\displaystyle W(0)=1}yW(norte)=0{\displaystyle W(n)=0}para todos los enteros distintos de ceronorte{\displaystyle n}.

Este enfoque fue propuesto por Rifman de TRW Systems Group, dirigido a datos de imágenes de ERTS (Earth Resources Technology Satellite, posteriormente Landsat 1 ). [ 1 ] [ 2 ] [ 3 ] Inicialmente,a{\displaystyle a}se fijó en -1, pero luego fue parametrizado por Simon de la misma compañía, haciendo que -0.5, -0.75 y -1.0 fueran valores significativos. [ 4 ] Sin embargo, estas propuestas no presentaban suficientemente el proceso de derivación ni las fórmulas, por lo que Keys luego lo volvió a proponer de forma completa, demostrando que cona=0,5{\displaystyle a=-0.5}, se logra la convergencia cúbica con respecto al intervalo de muestreo de la función original. [ 5 ]

El núcleo de convoluciónW(incógnita){\displaystyle W(x)}se deriva de la siguiente manera [ 6 ] : W(incógnita)={A1|incógnita|3+B1|incógnita|2+do1|incógnita|+D1para |incógnita|1A2|incógnita|3+B2|incógnita|2+do2|incógnita|+D2para 1<|incógnita|<20de lo contrario{\displaystyle W(x)={\begin{cases}A_{1}|x|^{3}+B_{1}|x|^{2}+C_{1}|x|+D_{1}&{\text{for }}|x|\leq 1\\A_{2}|x|^{3}+B_{2}|x|^{2}+C_{2}|x|+D_{2}&{\text{for }}1<|x|<2\\0&{\text{otherwise}}\end{cases}}}

Con las siguientes condiciones:W(0)=1{\displaystyle W(0)=1},W(1)=W(2)=0{\displaystyle W(1)=W(2)=0}, también para la primera derivada:W(0)=W(2)=0{\displaystyle W'(0)=W'(2)=0},W(1)=a{\displaystyle W'(1)=a}, obtenemos;

  1. W(0)=D1=1,{\displaystyle W(0)=D_{1}=1,}
  2. W(1)=A1+B1+do1+D1=0,{\displaystyle W(1^{-})=A_{1}+B_{1}+C_{1}+D_{1}=0,}
  3. W(1+)=A2+B2+do2+D2=0,{\displaystyle W(1^{+})=A_{2}+B_{2}+C_{2}+D_{2}=0,}
  4. W(2)=8A2+4B2+2do2+D2=0,{\displaystyle W(2^{-})=8A_{2}+4B_{2}+2C_{2}+D_{2}=0,}
  5. W(0)=do1=0,{\displaystyle W'(0)=C_{1}=0,}
  6. W(1)=3A1+2B1+do1=a,{\displaystyle W'(1^{-})=3A_{1}+2B_{1}+C_{1}=a,}
  7. W(1+)=3A2+2B2+do2=a,{\displaystyle W'(1^{+})=3A_{2}+2B_{2}+C_{2}=a,}
  8. W(2)=12A2+4B2+do2=0.{\displaystyle W'(2^{-})=12A_{2}+4B_{2}+C_{2}=0.}

Resolviendo el sistema de ecuaciones anterior obtenemos: A1=a+2,B1=(a+3),do1=0,D1=1,{\displaystyle A_{1}=a+2,\quad B_{1}=-(a+3),\quad C_{1}=0,\quad D_{1}=1,}A2=a,B2=5a,do2=8a,D2=4a,{\displaystyle A_{2}=a,\quad B_{2}=-5a,\quad C_{2}=8a,\quad D_{2}=-4a,} y la ecuación anterior.

Notación matricial

Núcleo de convolución desplazado de 0 a 1 para notación matricial.

Si utilizamos la notación matricial, podemos expresar la ecuación de una manera más amigable: pag(t)=[1tt2t3][0100a0a02aa32a+3aaa+2a2a][F1F0F1F2]{\displaystyle p(t)={\begin{bmatrix}1&t&t^{2}&t^{3}\end{bmatrix}}{\begin{bmatrix}0&1&0&0\\a&0&-a&0\\-2a&-a-3&2a+3&a\\a&a+2&-a-2&-a\end{bmatrix}}{\begin{bmatrix}f_{-1}\\f_{0}\\f_{1}\\f_{2}\end{bmatrix}}} parat{\displaystyle t}entre 0 y 1 para una dimensión [ 7 ] . Tenga en cuenta que para la interpolación de convolución cúbica unidimensional se requieren 4 puntos de muestra. Para cada consulta, dos muestras se ubican a su izquierda y dos muestras a su derecha. Estos puntos se indexan de -1 a 2 en este texto. La distancia desde el punto indexado con 0 hasta el punto de consulta se denota port{\displaystyle t}aquí.

Desdea=0,5{\displaystyle a=-0.5}, coincide con la spline de Catmull-Rom [ 7 ] . Por lo tanto, la interpolación bicúbica cona{\displaystyle a}empezar a0,5{\displaystyle -0.5}A veces se la denomina "interpolación de Catmull-Rom". [ 8 ]

Para dos dimensiones aplicadas por primera vez una vez enincógnita{\displaystyle x}y de nuevo eny{\displaystyle y}: b1=pag(tincógnita,F(1,1),F(0,1),F(1,1),F(2,1)),b0=pag(tincógnita,F(1,0),F(0,0),F(1,0),F(2,0)),b1=pag(tincógnita,F(1,1),F(0,1),F(1,1),F(2,1)),b2=pag(tincógnita,F(1,2),F(0,2),F(1,2),F(2,2)),{\displaystyle {\begin{aligned}b_{-1}&=p(t_{x},f_{(-1,-1)},f_{(0,-1)},f_{(1,-1)},f_{(2,-1)}),\\[1ex]b_{0}&=p(t_{x},f_{(-1,0)},f_{(0,0)},f_{(1,0)},f_{(2,0)}),\\[1ex]b_{1}&=p(t_{x},f_{(-1,1)},f_{(0,1)},f_{(1,1)},f_{(2,1)}),\\[1ex]b_{2}&=p(t_{x},f_{(-1,2)},f_{(0,2)},f_{(1,2)},f_{(2,2)}),\end{aligned}}}pag(incógnita,y)=pag(ty,b1,b0,b1,b2).{\displaystyle p(x,y)=p(t_{y},b_{-1},b_{0},b_{1},b_{2}).}

Continuidad diferencial

Es continua en la primera derivada por definición, y se puede verificar fácilmente utilizando la siguiente notación matricial.

pagi(1)=[0a0a][Fi1FiFi+1Fi+2]=pagi+1(0)=[a0a0][FiFi+1Fi+2Fi+3]{\displaystyle p_{i}'(1)={\begin{bmatrix}0&a&0&-a\end{bmatrix}}{\begin{bmatrix}f_{i-1}\\f_{i}\\f_{i+1}\\f_{i+2}\end{bmatrix}}=p_{i+1}'(0)={\begin{bmatrix}a&0&-a&0\end{bmatrix}}{\begin{bmatrix}f_{i}\\f_{i+1}\\f_{i+2}\\f_{i+3}\end{bmatrix}}}

Por lo tanto, es continua en la primera derivada.

pagi(1)=[2a4a+62a64a][Fi1FiFi+1Fi+2]pagi+1(0)=[4a2a64a+62a][FiFi+1Fi+2Fi+3]{\displaystyle p_{i}''(1)={\begin{bmatrix}2a&4a+6&-2a-6&-4a\end{bmatrix}}{\begin{bmatrix}f_{i-1}\\f_{i}\\f_{i+1}\\f_{i+2}\end{bmatrix}}\neq p_{i+1}''(0)={\begin{bmatrix}-4a&-2a-6&4a+6&2a\end{bmatrix}}{\begin{bmatrix}f_{i}\\f_{i+1}\\f_{i+2}\\f_{i+3}\end{bmatrix}}}

Por lo tanto, no es continua en la segunda derivada.

Comparación con otros métodos

A continuación se muestra una comparación de las funciones kernel para cada método:

Uso en gráficos por computadora

El algoritmo bicúbico se utiliza frecuentemente para escalar imágenes y vídeos para su visualización (véase remuestreo de mapas de bits ). Conserva mejor los detalles finos que el algoritmo bilineal común.

El algoritmo bicúbico también se utiliza para la reducción de escala de imágenes, pero debido a que el remuestreo durante la reducción de escala difiere del efecto de alejar la imagen en la óptica real, otros métodos pueden ser más adecuados [ 9 ] .

Efecto del parámetro "a"

La mitad inferior de esta figura es una ampliación de la mitad superior, que muestra cómo se crea la aparente nitidez de la línea de la izquierda. La interpolación bicúbica provoca un sobreimpulso, lo que aumenta la nitidez .

Sin embargo, debido a los lóbulos negativos en el núcleo, provoca sobreimpulso (halo). Esto puede causar recorte y es un artefacto (véase también artefactos de anillo ), pero aumenta la nitidez (nitidez aparente) y puede ser deseable. Este efecto es mayor cuando el parámetroa{\displaystyle a}es0,75{\displaystyle -0.75}o1.0{\displaystyle -1.0}que cuando es0,5{\displaystyle -0.5}. Comparación de núcleos de interpolación

Cuandoa=0,5{\displaystyle a=-0.5}, el resultado de la interpolación coincide con la aproximación de Taylor hasta la segunda derivada (excluyendo el término restante) de la imagen original (la función continua antes del muestreo). [ 10 ] [ 11 ] Un ejemplo claro de este efecto es cuando la imagen original es una función lineal (una imagen de gradiente simple) y el resultado interpolado es una función lineal solo cuandoa=0,5{\displaystyle a=-0.5}. Por ejemplo, si la entrada es [Fi1FiFi+1Fi+2]=[1012],{\displaystyle {\begin{bmatrix}f_{i-1}&f_{i}&f_{i+1}&f_{i+2}\end{bmatrix}}={\begin{bmatrix}-1&0&1&2\end{bmatrix}},} El resultado interpolado es pag(t)=2(2a+1)t3+3(2a+1)t22at,{\displaystyle p(t)=-2(2a+1)t^{3}+3(2a+1)t^{2}-2at,} y es una función lineal (los términos cuadráticos y cúbicos son 0) solo cuandoa=0,5{\displaystyle a=-0.5}. [ 12 ]

A continuación se muestra una imagen simple con degradado ampliada 16 veces y una porción de la imagen de prueba estándar "cameraman" [ 13 ] ampliada 8 veces [ 14 ] . Las rayas verticales en la primera y el patrón moteado artificial alrededor de las sienes en la segunda son artefactos causados ​​por el efecto mencionado anteriormente.

Tenga en cuenta que cuandoa=0,75{\displaystyle a=-0.75}, la segunda derivada del núcleo de convolución es continua enincógnita=1{\displaystyle x=1}[ 12 ] , pero el resultado de la interpolación no tiene una segunda derivada continua. Además, cuandoa=1.0{\displaystyle a=-1.0}, la derivada del núcleo de convolución coincide con la derivada de la función sinc enincógnita=1{\displaystyle x=1}[ 12 ] , pero esto no tiene ninguna importancia más allá de la comparación conla interpolación sinc.

Posición de remuestreo

Al ampliar una imagen mediante un múltiplo entero , es común establecer la posición de remuestreo entre los píxeles de la imagen original de manera que el centro de gravedad de la imagen ampliada no se desplace con respecto a la imagen original (véase la imagen de la izquierda a continuación). Por otro lado, también existe un método para establecer la posición de remuestreo de forma que se superponga a los píxeles de la imagen original (véase la imagen de la derecha a continuación). Este método garantiza la reversibilidad de la transformación. [ 15 ]

Ejemplo de posición de remuestreo
Ejemplo de posición de remuestreo

Extrapolación

Se requieren dos píxeles de la imagen de entrada a la izquierda y a la derecha (o arriba y abajo) para la interpolación. Dado que los bordes exteriores de la imagen no son válidos, se requiere extrapolación. El método de extrapolación varía según la implementación. A continuación se muestra un ejemplo de cómo copiar y extrapolar los píxeles más externos. [ 15 ]

Ejemplo de extrapolación mediante la copia de los valores de píxeles más externos.
Ejemplo de extrapolación mediante la copia de los valores de píxeles más externos.

Véase también

Referencias

  1. Rifman, Samuel S. (1973). "Rectificación digital de imágenes multiespectrales ERTS" . Informe técnico de la NASA 73N28327 .
  2. Bauer, Brian P. (1980). "ESTUDIO DE TÉCNICAS DE REMUESTREO UTILIZANDO MSS E IMÁGENES SINTÉTICAS" (PDF) . Documento EDC 0044, Centro de Datos EROS del USGS : 12.
  3. ^ Wolberg, George (1994). Deformación de imágenes digitales, tercera edición . págs. 130-131 . ISBN  0-8186-8944-7.
  4. Simon, KW (1975). "Reconstrucción y remuestreo de imágenes digitales para manipulación geométrica" . Simposios LARS, artículo 67 .
  5. R. Keys (1981). "Interpolación de convolución cúbica para el procesamiento de imágenes digitales". IEEE Transactions on Acoustics, Speech, and Signal Processing . 29 (6): 1153– 1160. Bibcode : 1981ITASS..29.1153K . CiteSeerX 10.1.1.320.776 . doi : 10.1109/TASSP.1981.1163711 . 
  6. Claves (1981), págs. 1153-1154
  7. 1 2 "Introducción a la interpolación bicúbica para ingenieros de implementación - #1" . Qiita .
  8. Ejemplo donde se usa el término "interpolación de Catmull-Rom": INTER_CUBIC debería usar por defecto la interpolación de Catmull-Rom #17720
  9. "Introducción a la interpolación bicúbica para ingenieros de implementación - #4" . Qiita .
  10. Claves (1981), págs. 1154-1155
  11. Wolberg (1994), pág. 130
  12. 1 2 3 Simon (1975), pág. 3A-3
  13. Obras del MIT adquiridas digitalmente - camarógrafo
  14. "Introducción a la interpolación bicúbica para ingenieros de implementación - #2" . Qiita .
  15. 1 2 "Introducción a la interpolación bicúbica para ingenieros de implementación - #3" . Qiita .
  • Aplicación de la interpolación a muestras de elevación
  • Teoría de la interpolación
  • Explicación e implementación en Java/C++ de la interpolación (bi)cúbica.
  • Función de hoja de cálculo de Excel para interpolación de Lagrange bicúbica
Obtenido de " https://en.wikipedia.org/w/index.php?title=Bicubic_interpolation&oldid=1350972429 "