Zoom con splines (Métodos Numéricos)
De Cuba-Wiki
Tipos de splines
- Spline natural
- s x0 = s xn = 0
- Spline sujeto
- s'(x_0) = A
- s'(x_n) = B
- Spline parabolico
- Spline extrapolado
- Asegura q el spline coincide con la funcion si era un polinomio de grado 3
- Idem para el otro borde
- Spline periodico
- Se usa si la funcion original era periodica, si se esta interpolando un periodo
Agregar condiciones distintas, fuera de los bordes, puede dar un sistema compatible determinado pero se pierde tridiagonalidad.
Los splines tienen control global, es decir, un solo punto influye en todo el spline, no localmente. En caso de encontrar un salto, se deben usar dos splines por separado para evitar errores.
Zoom
El zoom tradicional consiste en, por ejemplo, si se desea duplicar las dimensiones de la matriz, por cada pixel original insertar 4 iguales. Esto produce un efecto de pixelado.
Usando splines se interpola por filas y/o columnas, y se extienden los valores del dominio a la cantidad necesaria. Luego se hallan los valores nuevos a partir del spline generado.
Algoritmo que hace zoom en la imagen:
img=imread('bart.bmp'); img=sum(img, 3)/3; [n,m]=size(img); V=1:1/2:m; ret=zeros(n, length(V)); for i=1:n fila=img(i,:); ret(i,:)=spline(1:m,fila,V); end; [n,m]=size(ret) V=1:1/2:n; ret2=zeros(length(V),m); for i=1:m col=ret(:,i); ret2(:,i)=(spline(1:n,col',V))'; end; colormap(gray(255)); image(img); figure; colormap(gray(255)); image(ret2); lin = ret2(100,:); linori = ret2(50,:); figure; plot(lin); figure; plot(linori);