Procesamiento Digital
de Imágenes LCC-594
Benemérita Universidad Autónoma de Puebla
Facultad de Ciencias de la Computación
5. Operaciones
geométricas
Objetivo: Conocer los
métodos de
transformaciones
geométricas sobre una
imagen digital.
I. Traslación
II. Rotación
III. Escala
IV. Ampliación y reducción simples
V. Métodos de interpolación
• Al igual que en los gráficos por computadora, en el
procesamiento de imágenes existen operaciones que cambian la posición y el tamaño de las imágenes.
• Es decir, las transformaciones geométricas modifican las
relaciones espaciales entre pixeles ya que los valores de los pixeles se mantienen y cambia su posición espacial.
• Una transformación geométrica consiste de dos operaciones
básicas:
1. Una transformación espacial que define la reubicación de los pixeles en el plano imagen.
2. Interpolación de los niveles de grises, los cuales tienen que ver con la asignación de los valores de intensidad de los pixeles en la imagen transformada.
• Las transformaciones afines son las más usadas en imágenes
digitales 2D por su representación y manejo matricial.
• Las transformaciones afines son generalizaciones de las
transformaciones Euclidianas y bajo éstas no se preservan ni el largo ni el ángulo de los objetos transformados.
• Las distancias sólo se preservan entre puntos en la misma línea
o en líneas paralelas (colineales). La escala y el inclinación pertenece a este tipo de transformaciones.
• Hay que tomar en cuenta que en muchos casos al aplicar una
operación geométrica se cambia el tamaño de las imágenes, lo cuál es importante para el desplegado y las operaciones de la interfase de deshacer y rehacer.
• Esta operación consiste en desplazar un pixel original p(xi, yi)
en la imagen original hasta una nueva posición, utilizando:
• A veces será necesario realizar algún tipo de interpolación ya
que los desplazamiento pueden no ser enteros.
• Un detalle a considerarse en el proceso de traslación es el
hecho de que la imagen se desplaza con respecto a la posición original y una zona de la imagen contenida en el lienzo rectangular deberá ser llenada con un color arbitrario.
Traslación
Traslación
(a) (b)
• El proceso de rotación consiste en girar la imagen en un ángulo
definido. La rotación se encuentra dada por las ecuaciones:
donde x0 y y0 son las coordenadas del centro de rotación y 𝜃
es el ángulo de rotación en sentido de manecillas del reloj.
• Entre los problemas que debemos atender para aplicar esta
transformación están los siguientes:
Rotación
1. Se debe definir un centro de rotación para aplicar la transformación.
1. Se debe definir un centro de rotación para aplicar la transformación.
2. Antes de aplicar la transformación será necesario calcular el tamaño de la imagen rotada y de éste las dimensiones de la matriz donde se almacenará.
1. Se debe definir un centro de rotación para aplicar la transformación.
2. Antes de aplicar la transformación será necesario calcular el tamaño de la imagen rotada y de éste las dimensiones de la matriz donde se almacenará.
3. Dado que los lienzos son rectangulares, se deben rellenar las esquinas de la imagen rotada con algún color arbitrario, ya que para la mayoría de los valores de 𝜃, la imagen rotada será más grande que la original (las excepciones se dan para 𝜃 = ±90º y 180º). Esto introducirá información que no esta presente en la imagen original.
4. Como 𝜃 es arbitrario en general al transformar la coordenada
(x, y) de algún pixel, dado que x y y son enteros, la transformación nos regresará un número real y nos veremos obligados a redondear, esto puede provocar que más de un pixel de la imagen original se mapee en el mismo en la imagen transformada. Esto puede provocar que algunos pixeles no se llenen y se produzcan huecos (que forman patrones de tipo mosaico) en la imagen transformada.
• El primer aspecto se puede resolver usando el “centro” de la
imagen como eje de rotación, esto implica que se debe aplicar una transformación de translación, rotar y luego deshacer la traslación inicial, esta es la regla que las técnicas estándares de graficado indican.
• Es normal que este proceso genere coordenadas negativas,
motivo por el cual se debe introducir una corrección ya que los índices de las matrices no deben ser negativos en general.
• El segundo problema se puede resolver mapeando las esquinas
de la imagen original, es decir transformar los puntos (0, 0), (N
- 1, 0), (0, M - 1) y (N - 1, M - 1), y a partir de su mapeo encontrar las dimensiones del lienzo que contiene a la imagen rotada.
• El tercer problema se puede resolver eligiendo un color de
fondo, se llena la matriz de destino ya dimensionada y luego se mapea la imagen original punto a punto.
• Y finalmente el cuarto problema (redondeo), se incluye en el
algoritmo al momento de hallar los índices del pixel transformado.
Rotación
Rotación
• Las operaciones más frecuentes corresponden a las de cambio
de tamaño o escala, a estas muchas veces se les llama
operaciones de zoom por su analogía con el efecto que hace una lente en una cámara analógica o digital.
• Se pueden distinguir dos clases de métodos: aquellos que
reducen el tamaño y los que lo incrementan. A los primeros se les llama de reducción y a los segundos de ampliación.
• En el primer caso es claro que se producirá una pérdida de
información en la imagen resultante debido a que el tamaño de la misma es menor y en el segundo caso se tendrán que proponer algoritmos que propongan como estimar el tono o color de los pixeles nuevos que se crean al ampliar la imagen.
• En este caso se debe estar consciente de que se “inventar”
información que no esta presente en la imagen original, lo cual puede producir artefactos en la imagen ampliada.
• Diremos que un artefacto es un elemento que es producido
por un algoritmo de transformación que no está presente en la imagen original, pero aparece en la imagen producto de la transformación.
• En general los artefactos no son deseables pues introducen
elementos indeseables que se pueden considerar como ajenos a los datos originales.
• Las transformaciones más simples de cambio de tamaño
corresponden a la ampliación por 2 en ambas dimensiones y la reducción a la mitad de ellas.
• De forma general tenemos que esta operación es similar a un
cambio de escala, la cuál se puede generalizar con las ecuaciones:
Escala
5.3.1 Ampliación y
reducción simples
• Las transformaciones más simples de cambio de tamaño
corresponden a la ampliación por 2 en ambas dimensiones y la reducción a la mitad de ellas.
• En el caso de a ampliación simple, el algoritmo consiste en la
duplicación de cada pixel en la imagen resultante, es decir ya que el alto y ancho de la imagen final corresponden al doble del valor de las propiedades correspondientes originales lo mas simple es reproducir el pixel original en los vecinos mapeados.
• Si nos enfocamos en el pixel que se encuentra en la coordenada
corriente (x, y), entonces en la imagen ampliada le corresponderán cuatro pixeles en la coordenada (2x, 2y) en la imagen ampliada, en la figura siguiente se muestra el fenómeno.
Ampliación y reducción simples
• Para el caso de la reducción simple, hay que considerar que la
imagen resultante tendrá la mitad de ancho y alto respecto a la original, por lo que el método consiste la inserción de los pixeles pares de la imagen original (0, 2, 4, 6,…) en la imagen resultante y en la eliminación sistemática de pixeles intercalados (1, 3, 5, 7,… ) de la imagen original.
• El proceso se debe hacer en las dos dimensiones de la imagen
original, por tanto en este caso se perderá información al realizarse la reducción.
• Es claro que al realizar este proceso se pierde el 75% de la
información que contiene la imagen original y en caso que no se guarde una copia de ella el proceso inverso no recuperará dicha información.
• En la figura siguiente se hace muestra el efecto de éstos dos
procesos.
Ampliación y reducción simples
(a) (b) (c)
5.3.2 Métodos de
interpolación
• En general se denomina interpolación a la obtención de nuevos
puntos partiendo del conocimiento de un conjunto discreto de puntos.
• De este modo, el problema trata de que a partir de n parejas
de puntos (xk, yk), se pueda obtener una función f que
verifique:
a la que se denomina función interpolante de dichos puntos con k = 1,…,n. A los puntos xk se les llama nodos.
Métodos de interpolación
• A l g u n a s f o r m a s d e
interpolación que se utilizan con frecuencia son la interpolación lineal, la interpolación polinómica (de la cual la anterior es un caso particular), la interpolación por medio d e s p l i n e o l a interpolación polinómica de Hermite.
Métodos de interpolación
Interpolación lineal: la línea azul representa la interpolación lineal entre los puntos rojos.
• Por ejemplo, en la interpolación lineal se utilizan dos puntos,
(xa, ya) y (xb, yb), para obtener un tercer punto interpolado
(x, y) a partir de la siguiente fórmula:
• La interpolación lineal es rápida y sencilla, pero no muy precisa.
• En el campo de la fotografía y de las imágenes digitales, la
interpolación aplica este mismo método para conseguir un tamaño mayor de la imagen inicial, rellenando la información que falta con datos que no existen en la imagen original a partir de un algoritmo.
Métodos de interpolación
• Así, la interpolación consiste en el proceso para estimar los
valores de intensidad de los pixeles de una imagen en una posición cualquiera, como una función de los pixeles que lo rodean.
Métodos de interpolación
• Los algoritmos de interpolación se pueden agrupar en dos
categorías.
• Algoritmos no adaptativos: estos métodos tratan a todos los
pixeles por igual. Dependiendo de su complejidad, estos usan cualquier número, desde 0 a 256 (o más) de los pixeles adyacentes para la interpolación. Mientras más pixeles adyacentes se incluyan, la interpolación será más precisa, a expensas del tiempo de procesamiento. Estos algoritmos se pueden usar tanto para distorsionar como cambiar el tamaño de una foto. Aquí se incluyen los métodos del vecino más cercano, bilineal, bicúbica, esplines, sinc, lanczos y otros.
• Algoritmos adaptativos: cambian dependiendo de lo que están
interpolando, es decir, intentan encontrar un balance entre los bordes nítidos y las textura suaves. En muchos casos se aplica una versión diferente del algoritmo (que trabajan pixel por pixel) cuando detectan la presencia de un borde, con el objetivo de minimizar los artefactos de interpolación antiestéticos en las regiones donde son más evidentes. Estos algoritmos están diseñados principalmente para maximizar detalles libres de artefactos en fotografías ampliadas, por lo que algunos no pueden ser utilizados para distorsionar o girar una imagen. En esta categoría se incluyen muchos algoritmos en software con licencia, tales como: Qimage, Pro PhotoZoom, Genuine Fractals y otros.
• Se verán tres métodos no apdaptativos para realizar la
interpolación y los tres funcionan de forma similar.
• En cada caso para determinar el valor de un pixel interpolado
primero se encuentra el punto en la imagen original que corresponde a la imagen interpolada.
• Luego, se asigna el valor del pixel interpolado calculando el
promedio ponderado de el conjunto de pixeles hallados en la vecindad de dicho punto.
• Los tres métodos difieren en general el conjunto de pixeles que
se consideran.
• Uno de los algoritmos más simples de interpolación es
interpolación de vecino más cercano. En este método, la parte fraccionaria de las coordenadas del pixel se descartan y el valor de brillo de los pixeles en la dirección resultante en la imagen de origen se copia en la imagen ampliada.
• Debido a la inexactitud de la correspondencia espacial entre las
dos imágenes, se harán más copias de ciertos pixeles de la imagen original que a otros.
• Esto puede resultar en distorsión espacial de las características
de la imagen con zoom y la interpolación resultante del vecino más próximo es por lo tanto poco confiable.
• Para factores de zoom pares (como 2X y 4X), la interpolación
del vecino más cercano produce los mismos resultados que el método de ampliación y reducción simples antes visto.
• En este caso, se supone que el pixel a ser interpolado toma el
mismo valor que el más cercano de entre los cuatro que lo rodean; por eso el nombre de vecino más próximo.
• En matemáticas, la interpolación bilineal es una extensión de la
interpolación lineal para interpolar funciones de dos variables (por ejemplo, x y y) en un plano de 2D regular.
• La función de interpolación no debe usar el término de x2 o y2,
pero si el xy, que es la forma bilineal de x y y.
• La idea clave es realizar la interpolación lineal primero en una
dirección y luego en la otra. Aunque cada paso es lineal en los valores de las muestras y en la posición, la interpolación en su conjunto no es lineal sino cuadrática en la ubicación de la muestra.
• Supongamos que se
desea encontrar el valor d e l a f u n c i ó n f , desconocida en el punto
P = (x, y) (ver figura).
• S e s u p o n e q u e s e
conoce el valor de f en los cuatro puntos Q11 =
(x, y1), Q12 = (x1, y2),
Q21 = (x2, y1) y Q22 =
(x2, y2).
Interpolación bilineal
Los cuatro puntos rojos muestran los puntos de los datos y el punto verde es el punto a interpolar.
• En el contexto de imágenes digitales, la interpolación bilineal
utiliza los 4 valores de los pixeles más próximos que están situados en direcciones diagonales de un pixel dado con el fin de encontrar los valores de los colores apropiados de intensidad de dicho pixel.
• Es decir, considera la vecindad más cercana de 2×2 valores de
pixeles circundantes en cada posición calculada del pixel desconocido.
• Luego toma un promedio ponderado de los 4 pixeles para
obtener el valor final interpolado.
• El peso de cada uno de los 4 valores de pixeles se basa en la
distancia calculada de cada pixel (en el espacio 2D) de cada uno de los puntos conocidos.
• De forma geométrica (figura siguiente-(a)), el valor en el punto
negro es la suma del valor en cada punto de color multiplicado por el área del rectángulo del mismo color, dividida por el área total de todos los cuatro rectángulos.
Interpolación bilineal
(a) (b)
(a) Representación geométrica de la interpolación bilineal y (b) ejemplo numérico del cálculo de un pixel utilizando interpolación bilineal.
• Teniendo en cuenta lo anterior, como se ve en el ejemplo de la
figura anterior-(b), el valor de intensidad en el pixel calculado para estar en la fila 20.2, columna 14.5 se puede calcular primero interpolando linealmente entre los valores en la columna 14 y 15 en cada una de las filas 20 y 21, dando:
y después se interpola linealmente entre estos valores, dando como resultado:
• Este algoritmo reduce parte de la distorsión visual causada por
el cambio de tamaño de una imagen en un factor de zoom no entero, a diferencia de la interpolación del vecino más cercano, lo que hará aparecer algunos pixeles más grandes que otros en la imagen redimensionada.
• La interpolación bilineal tiende sin embargo a producir un
mayor número de artefactos de interpolación (como aliasing, efectos de difuminado y halos de borde) que técnicas computacionalmente más exigentes, tales como la de interpolación bicúbica.
• En matemáticas, la interpolación bicúbica es una extensión de la
interpolación cúbica para la interpolación de puntos de datos en base a una malla regular dimensional.
• La interpolación bicúbica se puede lograr ya sea utilizando
polinomios de Lagrange, esplines cúbicos, o con el algoritmo de convolución cúbica.
• En el procesamiento de imágenes, la interpolación bicúbica se
prefiere generalmente en lugar de la interpolación bilineal o la del vecino más cercano para el remuestreo de imagen, cuando la velocidad no es un problema.
• En contraste con la interpolación bilineal, que sólo toma en
cuenta 4 pixeles (2×2), la interpolación bicúbica considera 16 pixeles (4×4).
• Así, el método de la Interpolación bicúbica implica ajustar una
serie de polinomios cúbicos a los valores de brillo contenidos en una matriz de pixeles de 4×4 que rodean la dirección calculada.
• En primer lugar, cuatro polinomios cúbicos, f(i) (con i = 0, 1,
2, 3) están instalados en los puntos de control en la dirección y
(la elección de la dirección de partida es arbitraria).
• A continuación, la parte fraccionaria de la dirección del pixel
calculada en la dirección del eje y se usa para encajar con otro polinomio de tercer grado en la dirección x, en base a los valores de brillo interpolados que se encuentran en las curvas.
• Sustituyendo la parte fraccionaria de la dirección del pixel
calculada en la dirección x en el polinomio cúbico resultante proporciona entonces el valor de brillo del pixel interpolado.
• Lo anterior se resumen en la figura siguiente.
Interpolación bicúbica
• La elección del polinomio utilizado en el algoritmo de
interpolación bicúbica puede tener un impacto significativo en la precisión y la calidad visual de la imagen interpolada.
• Los esplines son funciones polinómicas a trozos que se suelen
utilizar en los algoritmos de interpolación bicúbica.
• Un requisito importante de los esplines utilizados para la
interpolación bicúbica es que siempre se deben interpolar los valores de brillo de los pixeles contenidos en la rejilla de control de 4×4.
• Debido a que muchas de las funciones de esplines tienen
parámetros de control que están sujetos a la elección del programador, la posibilidad de poder reproducir los resultados, se convierte en un problema cuando se desean comparan los resultados de los algoritmos de interpolación bicúbica entre imágenes.
• Dado que las imágenes remuestreadas usando la interpolación
bicúbica son más suaves y tienen menos artefactos de interpolación, es el método usada por programas como Adobe Photoshop o Paint Shop Pro, y es el método de interpolación considerado estándar (promedia 16 pixeles adyacentes).
• Photoshop además usa algunas variaciones como interpolación
bicúbica enfocada o interpolación bicúbica suavizada que se basa en aplicar algunos cambios a la imagen final.
Ejemplos interpolación
Ejemplos interpolación
Ejemplos interpolación
• En la reducción, es evidente que se pierde información original
de la imagen, generalmente sin efectos de pixelado.
• Sin embargo, en caso de existir cambios bruscos en la tonalidad
de los pixeles, se pueden presentar efectos indeseables.
• En el caso de la reducción simple, la imagen resultante va a
contener los pixeles en las renglones/columnas pares (o impares) de la imagen original.
• Pero para disminuir la posibilidad de artefactos, al igual que en
la ampliación, un valor de pixel se puede obtener a partir de la aplicación de algún método, ya sea de interpolación o de otro tipo.
• Por ejemplo, un valor de pixel se puede obtener a partir del
promedio de los pixeles vecinos (figura siguiente):