Professional Documents
Culture Documents
Tarea 1
Operaciones Aritméticas y
Transformaciones Geométricas
*R.Lizardo
farliz@myway.com
Introducción.
Histograma.
El histograma de una imagen, es una herramienta visual de gran utilidad, permite con una simple
mirada tener una idea aproximada de la distribución de los niveles de gris, el contraste que presenta
y una pista del método mas adecuado para manipularla (TPI 2007).
El histograma de una imagen digital con L niveles de gris en el rango [0, L-1] es una función
discreta de la forma:
h(rk) = nk / N
Donde:
La figura uno muestra la imagen original (der.) y su respectivo histograma (izq.), analizando un
poco la grafica decimos que la mayor cantidad de píxeles se encuentran entre los valores digitales
100 – 200, además la elevación de la curva en los valores cercanos a cero es producto de los píxeles
mas oscuros en la imagen, en este caso correspondientes principalmente a la chaqueta del
fotógrafo.
El brillo en una imagen nos indica la intensidad de los números digitales, el resultado de aplicar una
operación para modificar el brillo, es una imagen más clara o más oscura dependiendo si hemos lo
aumentado o disminuido, el brillo de una imagen esta en función de:
En la figura dos se muestra la imagen con el brillo aumentado en un 50%, el resultado es una
imagen mas clara, además el cambio se refleja también en el histograma teniendo una distribución
de píxeles mas homogénea.
Contraste.
El contraste es el que permite diferenciar visualmente objetos plasmados en una imagen, está
relacionado con la diferencia de los niveles de gris claros y oscuros, la modificación del contraste
consiste en variar el rango dinámico de la imagen. A continuación se muestra un ejemplo.
El ajuste del contraste en la figura tres (izq.), permite diferenciar con mayor precisión el contenido
del la imagen.
Es posible realizar operaciones aritméticas con imágenes, como se aprecia por ejemplo al aumentar
el brillo sumando a cada píxel un número o restándolo, de igual manera funciona el contraste
básicamente en sumas y restas de números.
a) b) c)
La fig. (a) es la imagen original, la fig.(b) y (c) imágenes afectadas por ruido gausiano en distintos
niveles.
Una manera de eliminar el ruido, es el suavizado de la imagen que consiste en aplicar un filtro de
paso bajo, muy utilizado para eliminar el ruido gausiano. Cabe decir que este tipo de filtro afecta a
Los bordes de la imagen remplazando los valores altos y bajos por los valores promedios, la fig. 4
muestra una imagen suavizada.
Transformaciones Geométricas.
Las transformaciones geométricas son operaciones que permiten manipular la posición de la imagen
en el eje de coordenadas, asi como ajustar la escala y las distintas proyecciones de perspectiva,
cuando se aplica una transformación geométrica, es decir el cambio de posición de un píxel a un
nuevo lugar, tiende a distorsionarse la calidad visual de la imagen, y es necesario de contar con
algoritmos para aminorar este problema, entre los mas comunes están NEAREST, BILINEAR, y
BICUBICO, el primero conocido como el vecino mas próximo (en español ), asigna a la nueva
casilla el valor mas cercano con relación a la posición original dejando intacto el valor del píxel, el
segundo y tercero lo hacen realizando una interpolación bilinear y cúbica respectivamente, tomando
en cuenta los valores de los píxeles vecinos. Uno de los métodos utilizados para el ajuste de la
escala y posición de la imagen son las transformaciones afines. Las siguientes figuras muestran
algunos ejemplos.
d) e) f)
En las fig. d), es la imagen original, la fig. e), muestra el cambio de escala y en la fig. f) cambia la
escala y la posición.
http://www.imageprocessingplace.com
http://www.des.udc.es/%7Eadriana/TercerCiclo/CursoImagen/curso/web/Indice.html
Anexos.
Código para transformaciones Cilíndrica y esférica (Matlab) " Image Processing Toolbox"
• Cambiar el nombre de 'lena.bmp' por una imagen que tengan en su directorio con su
respectiva extensión.
• generar dos archivos .m uno para cada función y ejecutar cualquiera.
function cilindro
[x,y,z] = cylinder;
I = imread('lena.bmp');
I = I(end:-1:1, :, :);
warp(x,y,z,I);
title('Proyeccion Cilindrica ','color','w','FontWeight','bold')
set(gca, 'Color','k')
set(gcf, 'Color','k','MenuBar', 'none',...
'Name','Proyecciones','Numbertitle','Off')
uicontrol( ...
'style','push', ...
'units','normal', ...
'position',[0.85 0.02 0.1 0.05], ...
'FontSize',12, ...
'string','Next', ...
'callback','esfera');
function esfera
I = imread('lena.bmp');
I = I(end:-1:1, :, :);
[a, b, c] = sphere;
warp(a,b,c,I)
set(gca, 'Color','k')
set(gcf, 'Color','k','MenuBar', 'none',...
'Name','Proyecciones','Numbertitle','Off')
uicontrol( ...
'style','push', ...
'units','normal', ...
'position',[0.1 0.02 0.1 0.05], ...
'FontSize',12, ...
'string','Back', ...
'callback','cilindro');
Ejemplos de transformaciones Geométricas en Pyhton_PIL
#transformacion EXTENT
>>> lena.transform((200, 40), EXTENT, (200, 250, 400, 290)).show()
>>> lena.transform((150, 70), EXTENT, (200, 320, 350, 390)).show()
>>> lena.transform((700, 700), EXTENT, (0, 0, 512, 500)).show()
# transformacion QUAD
>>> lena = mirror(lena)
>>> lena.transform(lena.size, QUAD, (0, 512, 0, 300, 300, 500, 300, 0 ),BICUBIC).show()
>>> lena.transform(lena.size, QUAD, (400, 50, 300, 400, 50, 400, 100, 50 )).show()
>>> lena.transform(lena.size, QUAD, (400, 150, 300, 400, 50, 400, 100, 150 )).show()
>>> lena.transform(lena.size, QUAD, (200, 200, 250, 300, 50, 400, 100, 50 )).show()
>>> lena.transform(lena.size, QUAD, (500, 300, 300, 300, 0, 500, 0, 1 )).show()