Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Elaborado por:
Maestro:
Contenido
INTRODUCCION......................................................................................................................... 3
1.2 DONDE COMENZO EL PROCESAMIENTO DE IMGENES. ..................................................... 4
PARA QUE SIRVE.................................................................................................................... 5
DESARROLLO............................................................................................................................. 6
PROGRAMA 1. MOSTRAR LINEAS VERTICALES CON ANCHO DE 20. ........................................ 6
PROGRAMA 2. BARRIDO DE IMAGEN................................................................................... 7
PROGRAMA 3. PARA BAJAR PIXEL A UNA IMAGEN. .............................................................. 8
PROGRAMA 4. AGREGAR BRILLO A UNA IMAGEN................................................................. 9
PROGRAMA 5. AGRANDAMIENTO DE IMAGEN PIXEL A PIXEL. ..............................................10
PROGRAMA 6. INDEXADO DE IMAGEN (MUESTRA DIVERSAS IMGENES). ............................11
PROGRAMA 7. INDEXADO DE IMAGEN (MUESTRA PORCION DE IMAGEN DESEADA). ............12
PROGRAMA 8. FILTRO LINEAL (SUAVIZAR UNA IMAGEN) .....................................................13
PROGRAMA 9. METER RUIDO A UNA IMAGEN. ...................................................................14
PROGRAMA 10. METER RUIDO FILTRADO. ..........................................................................16
PROGRAMA 11. EXTRACCION DE BORDES. ..........................................................................18
PROGRAMA 12. SEGUNDA DERIVADA.................................................................................19
PROGRAMA 13. SEGUNDA DERIVADA MEJORADA. ..............................................................20
SIMULINK.............................................................................................................................21
LABVIEW..............................................................................................................................24
INTRODUCCION.
El procesamiento digital de imgenes es un campo de investigacin abierto. El constante progreso
en esta rea no ha sido por s mismo, sino en conjunto con otras reas con las cuales est
relacionada como las matemticas, la computacin, y el conocimiento cada vez mayor de ciertos
rganos del cuerpo humano que intervienen en la percepcin y en la manipulacin de las
imgenes. Aunado a esto, la inquietud del hombre por imitar y usar ciertas caractersticas del ser
humano como apoyo en la solucin de problemas. El avance del Procesamiento Digital de
Imgenes se ve reflejado en la medicina, la astronoma, geologa, microscopa, etc. Informacin
meteorolgica, transmisin y despliegue agilizado de imgenes por Internet tienen sustento
gracias a estos avances.
En el procesamiento digital de imgenes deben tomarse en cuenta varios aspectos como la
percepcin psicovisual del ser humano. ste es un factor importante porque independientemente
del tratamiento que se le aplique a una imagen, el observador ser quien, segn su percepcin,
decidir si dicha imagen le agrada o no.
El desarrollo de los mtodos de procesamiento digital de imgenes tiene su origen en dos reas
principales de aplicacin: el mejoramiento de la informacin pictrica para la interpretacin
humana, y el procesamiento de datos de la imagen para la percepcin de mquina autnoma en
el que se incluyen etapas de transmisin y/o almacenamiento de estos datos.
La herramienta usada en el tratamiento digital de las imgenes son las matemticas; los conceptos
que se vern son bsicos. La computadora y los algoritmos que se implementan sobre stas
tambin tienen un papel muy importante en la manipulacin de las imgenes.
Representacin de una imagen digital
El trmino "imagen monocromtica" o imagen simplemente, se refiere a una funcin de intensidad
de luz bidimensional f (x, y), donde x e y indican las coordenadas espaciales y el valor de f en
cualquier punto (x, y) es proporcional a la luminosidad (o nivel de gris) de la imagen en dicho
punto.
Una imagen digital es una imagen (funcin) f (x, y) que ha sido discretizada tanto en coordenadas
espaciales como en luminosidad. Una imagen digital puede ser considerada como una matriz
cuyos ndices de rengln y columna identifican un punto (un lugar en el espacio bidimensional)
en la imagen y el correspondiente valor de elemento de matriz identifica el nivel de gris en aquel
punto. Los elementos de estos arreglos digitales son llamados elementos de imagen o pixeles.
En el tratamiento de imgenes se pueden distinguir tres etapas principales:
Adquisicin de la imagen.
Procesamiento de la imagen.
DESARROLLO
PROGRAMA 1. MOSTRAR LINEAS VERTICALES CON ANCHO DE 20.
Este programa sirve para hacer un barrido de imagen en blanco y negro delimitando el ancho de
sus columnas.
clc
clear
%A=imread('rice.png');
%imshow('rice.png');
%imshow(A);
%[m, n]=size(A);
%B=im2bw(A);
% imshow(B)
% figure
% imshow(A)
Mbin=false([120,200])
imshow(Mbin)
for i=1:40:120
Mbin(i:i+19,:)=true;
end
imshow(Mbin)
Mbin=Mbin';
imshow(Mbin)
figura 1
Mediante este programa se puede hacer un barrido de una imagen de blanco al negro y viceversa.
clc
clear
A=zeros([256,256]);
for i=1:1:256
A(i,:)=i;
end
figura 2
Este programa sirve para bajar la resolucin de imagen pixel por pixel.
clc
clear
A=imread('cameraman.tif');
[m n]=size(A);
%muestra el tamao de la matriz
a=1;
%se inicializan en 1 para la nueva matriz
b=1;
%se inicializan en 1 para la nueva matriz
for i=1:2:m
for j=1:2:n
B(a,b)=A(i,j);
b=b+1;
end
b=1;
a=a+1;
end
B=uint8(B);
figure
subplot(1,2,1)
imshow(A)
subplot(1,2,2)
imshow(B)
FIN DE PROGRAMA.
8
figura 3
%sirve para
deseadas a
%muestra la
%sirve para
deseadas a
%muestra la
figura 4
Este programa sirve para aumentar la resolucin de una imagen pixel a pixel.
clc
clear
A=imread('cameraman.tif');
[m n]=size(A);
a=1;
b=1;
for i=1:1:m
for j=1:1:n
B(a,b)=A(i,j);
B(a,b+1)=A(i,j);
B(a+1,b)=A(i,j);
B(a+1,b+1)=A(i,j);
b=b+2;
end
b=1;
a=a+2;
end
subplot(1,2,1)
imshow(A)
subplot(1,2,2)
imshow(B)
%sirve para
deseadas a
%muestra la
%sirve para
deseadas a
%muestra la
figura 5
10
figura 7
figura 6
11
figura 8
12
Este programa sirve para bajar o atenuar la resolucin de una imagen, utilizando un filtro.
clear
clc
A=imread('cameraman.tif');
%A es imagen original
[m n]=size(A);
A=double(A);
%convierte a A en doble
B=(A);
for i=2:1:m-1;
%esto es para suavizar la imagen, siguiendo
un comando para la creacin de un filtro.
for j=2:1:n-1;
B(i,j)=(A(i-1,j-1)+A(i-1,j)+A(i-1,j+1)+A(i,j 1)+A(i,j)+A(i,j+1)+A(i+1,j1)+A(i+1,j)+A(i+1,j+1))*(1/9);
end
end
[m1,n1]=size(B)
B=uint8(B);
%convierte los elementos del arreglo en un
entero
de 8 bits. A puede ser cualquier
numrico, como un doble. Los valores estn en el
rango de 0 a 255.
A=uint8(A);
subplot(1,2,1)
%sirve para mantener en la ventana las imgenes
deseadas a ver en este caso 2, esta es el orden1
imshow(A)
%muestra la primer imagen
subplot(1,2,2)
%sirve para mantener en la ventana las imgenes
deseadas a ver en este caso 2, esta es el orden1
imshow(B)
%muestra la primer imagen
figura 9
13
figura 10
14
A continuacin se agrega al programa el filtro lineal para suavizar una imagen, quedando el
programa como sigue:
for i=2:1:re-1;
%esto es para suavizar la imagen, ejercicio
anterior
for j=2:1:co-1;
C(i,j)=(B(i-1,j-1)+B(i-1,j)+B(i-1,j+1)+B(i,j-1)+B(i,j)+B(i,j+1)+B(i+1,j1)+B(i+1,j)+B(i+1,j+1))*(1/9);
end
end
B=uint8(B);
%convierte los elementos del arreglo en un
entero
de 8 bits. B puede ser cualquier
numrico, como un doble. Los valores estn en el
rango de 0 a 255.
C=uint8(C);
subplot(1,2,1)
%sirve para mantener en la ventana las imgenes
deseadas a ver en este caso 2, esta es el orden1
imshow(B)
%muestra la primer imagen
subplot(1,2,2)
%sirve para mantener en la ventana las imgenes
deseadas a ver en este caso 2, esta es el orden1
imshow(C)
%muestra la segunda imagen
figura 11
15
Este programa sirve para mejorar la imagen con ruido, haciendo uso de los filtros, as como
tambin haciendo uso de la mediana.
clear
clc
A=imread('cameraman.tif');
B=A;
[re co]=size(B);
%re es igual a renglon y co es igual a columna
[m n]=size(B);
for v=1:100
%aqui se agrega el ruido deseado
x=round(rand*re);
%para encontrar valor de x aleatoriamente
y=round(rand*co);
%para encontrar valor de y aleatoriamente
if x==0
%inicializar x
x=1;
end
if y==0
%inicializar y
y=1;
end
if x==re
%para delimitar el rea en x
x=re-2;
end
if y==co
%para delimitar el rea en y
y=co-2;
end
B(x,y)=255;
%se agrega el ruido, siguiendo una serie de
instrucciones de coordenadas
B(x,y+1)=255;
B(x+1,y)=255;
B(x+1,y+1)=255;
B(x+2,y)=255;
B(x+2,y+1)=255;
end
B=double(B);
%se inicia el proceso para filtrar de matriz en
matriz
CC=B;
for i=1:1:m-2
%aqui se inicia el ciclo
for j=1:1:n-2
SS=B(i:i+2,j:j+2);
%aqui toma las matrices de 3x3
C=[SS(:,1);SS(:,2);SS(:,3)];
C=sort(C,1);
Me=C(5,1);
CC(i,j)=Me;
end
end
CC=double(CC);
%para este nuevo ciclo nicamente se cambian
las variables y se muestran despus
CE=CC;
%nueva matriz
for i=1:1:m-2
for j=1:1:n-2
SS=CC(i:i+2,j:j+2);
%aqui toma las matrices de 3x3
C=[SS(:,1);SS(:,2);SS(:,3)];
C=sort(C,1);
Me=C(5,1);
16
CE(i,j)=Me;
end
end
CE=double(CE);
%nueva matriz
CEE=CE;
for i=1:1:m-2
for j=1:1:n-2
SS=CE(i:i+2,j:j+2);
%aqui toma las matrices de 3x3
C=[SS(:,1);SS(:,2);SS(:,3)];
C=sort(C,1);
Me=C(5,1);
CEE(i,j)=Me;
end
end
B=uint8(B);
CC=uint8(CC);
CE=uint8(CE);
CEE=uint8(CEE);
subplot(1,4,1)
imshow(B)
subplot(1,4,2)
imshow(CC)
subplot(1,4,3)
imshow(CE)
subplot(1,4,4)
imshow(CEE)
%convierte
%convierte
%convierte
%convierte
%comando
%muestra
%comando
%muestra
%comando
%muestra
%comando
%muestra
los
los
los
los
elementos
elementos
elementos
elementos
para adjuntar
la imagen
para adjuntar
la imagen
para adjuntar
la imagen
para adjuntar
la imagen
del
del
del
del
arreglo
arreglo
arreglo
arreglo
FIN DE PROGRAMA.
figura 12
17
Los bordes representan cambios bsicos en los niveles de gris o intensidad, por este motivo su
extraccin se puede abordar desde el punto de vista especial, derivando la funcin (imagen).
clc
clear
A=imread('cameraman.tif');
%se carga la imagen
%se introduce el comando de extraccin de borde ya sea PREWITT, SOBEL O
ROBERT
[gx t]=edge(A,'sobel','horizontal'); %para este se utiliza el SOBEL,
donde A es la imagen, SOBEL es el
operador, HORIZONTAL es el umbral
dado
[gy t]=edge(A,'sobel','vertical');
%para este se utiliza el SOBEL,
donde A es la imagen, SOBEL es el
operador, VERTICAL es el umbral
dado
GT=gx+gy;
%se suman las matrices generadas
por EDGE y se crea una nueva
variable
imshow(GT)
%se muestra la matriz final
figura 13
18
Los bordes representan cambios bsicos en los niveles de gris o intensidad, por este motivo su
extraccin se puede abordar desde el punto de vista especial, derivando la funcin (imagen).
Como se puede observar, ahora se aplica la segunda derivada para obtener una mejor resolucin
de la misma.
clear
clc
A=imread('cameraman.tif');
[m1 n1]=size(A);
A=double(A);
B=A;
for x=2:1:m1-1
%lee la imagen
%muestra el tamao de la matriz original
%se igualan las matrices
%se inicia el ciclo anidado delimitando el
rea de la imagen
for y=2:1:n1-1
B(x,y)=A(x+1,y)-(4*A(x,y))+A(x-1,y)+A(x,y+1)+A(x,y-1);
%se introduce
el comando para la segunda derivada, siguiendo una serie de coordenadas
end
end
[m2 n2]=size(B);
%muestra el tamao de la nueva matriz
A=uint8(A);
%convierte los elementos del arreglo en un
entero
de 8 bits. B puede ser cualquier
numrico, como un doble. Los valores estn en el
rango de 0 a 255.
B=uint8(B);
subplot(1,2,1)
%muestra las imgenes en una sola ventana
imshow(A)
%muestra la imagen A
subplot(1,2,2)
%muestra las imgenes en una sola ventana
imshow(B)
%muestra la imagen B
figura 14
19
Los bordes representan cambios bsicos en los niveles de gris o intensidad, por este motivo su
extraccin se puede abordar desde el punto de vista especial, derivando la funcin (imagen).
Como se puede observar, ahora se aplica la segunda derivada para obtener una mejor resolucin
de la misma.
clear
clc
A=imread('cameraman.tif');
[m1 n1]=size(A);
%muestra el tamao de la matriz original
A=double(A);
B=A;
%se igualan las matrices
for x=2:1:m1-1
%se inicia el ciclo anidado delimitando el rea de la
imagen
for y=2:1:n1-1
B(x,y)=A(x+1,y)-(4*A(x,y))+A(x-1,y)+A(x,y+1)+A(x,y-1)+A(x1,y+1)+A(x+1,y+1)+A(x-1,y-1)+A(x+1,y-1);
%se introduce el comando para
la segunda derivada, siguiendo una serie de coordenadas
end
end
w=1;
%se fija esta variable como un parmetro para mostrar
mejor la nueva imagen, si es ms cercana a 0, es
mejor el filtro
C=A-(w*B);
%se declara esta variable para la funcin de segunda
derivada mejorada
pmin=min(min(C));
%declaracin de variables para la formula
C=C-pmin;
%para bajar los valores de la matriz
pmax=max(max(C));
%parmetros para la formula
Cn=(C/pmax)*255;
%formula de segunda derivada mejorada
[m2 n2]=size(B);
%muestra el valor
A=uint8(A);
B=uint8(B);
Cn=uint8(Cn);
subplot(1,2,1)
imshow(A)
subplot(1,2,2)
imshow(Cn)
20
figura 15
SIMULINK.
Por ltimo, se termin con un ejercicio utilizando SIMULINK, mediante el cual se agreg una
imagen para poder realizar los ejercicios anteriormente descritos, sin necesidad de escribir un
programa para su ejecucin. Para lo cual se inicializa SIMULINK, en seguida a la librera de VIDEO
AND IMAGE PROCESSING BLOCKSET.
figura 16
Primero se cargara una imagen predeterminada y se mostrara, para verificar que los mdulos
funcionen correctamente; utilizando IMAGE FROM FILE y VIDEO VIEWER. A continuacion se
muestra la imagen cargada.
figura 17
figura 18
21
Enseguida se utilizara la misma imagen, pero ahora se utilizara un detector de bordes, con la
herramienta EDGE DETECTION, utilizando el operador SOBEL.
figura 19
figura 20
Por ultimo se hara el mismo proceso, pero ahora adquiriendo una imagen de la camara de la pc en
tiempo real, utilizando ahora la herramienta de FROM VIDEO DEVICE.
figura 21
22
figura 22
Por lo tanto se puede concluir que se pueden realizar distintos tipos de procesamiento de
imgenes utilizando, ya sea la programacion o utilizando el modulo de SIMULINK.
23
LABVIEW
Asi mismo se puede emplear un programa hecho en MATLAB, para utilizarlo en LABVIEW,
haciendo uso del archivo .M, esto es, cargar un programa hecho en MATLAB y despues exportarlo
a LabView.
Se inicia el ambiente de LABVIEW, a continuacion se utiliza el modulo MATLAB SCRIPT, y se carga
el programa hecho en MATLAB, como se muestra en la figura
figura 23
figura 24
Como se observa en la figura, se puede realizar este tipo de comunicacin entre un programa y
otro, esto simplifica el trabajo si se quiere trabajar en el ambiente de LabView.
24