manipulacion de imagenes

download manipulacion de imagenes

of 24

description

manipulacion de imagenes con matlab

Transcript of manipulacion de imagenes

  • 1

    INSTITUTO TECNOLGICO SUPERIOR

    DEL SUR DE GUANAJUATO

    Manipulacin de imgenes con MATLAB

    CURSO DE TITULACION

    Elaborado por:

    Juan Manuel Jimnez Vzquez

    Carrera:

    Ingeniera Electrnica

    Maestro:

    Netzahualcyotl Martnez Czares.

    Uriangato Gto. 29 de Abril de 2013

  • 2

    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

  • 3

    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.

  • 4

    1.2 DONDE COMENZO EL PROCESAMIENTO DE IMGENES. El procesamiento digital de imgenes aparece tardamente en la historia de la computacin, ya que antes de pensar en ello, haba que desarrollar el hardware y los sistemas operativos grficos que permitieran hacerlo. Por otro lado, los algoritmos y las tcnicas de optimizacin que han tenido que desarrollarse para el procesamiento digital de imgenes son muy sofisticados y elaborados. En la actualidad existen muchas aplicaciones de software que permiten el procesamiento digital de imgenes, mucho de este utiliza tcnicas o algoritmos que son bien conocidos por la comunidad que trabaja en ello, pero otros utilizan sus propias variantes o tcnicas nuevas que estn poco documentadas. Se puede decir que los primeros intentos de manipulacin, almacenamiento y transmisin de imgenes surgieron en 1920, cuando se desarroll un sistema de transmisin de fotografas a travs de cable trasatlntico usando cdigos telegrficos. Este sistema permita una codificacin de la imagen en cinco niveles de gris, y luego fue mejorado a 15 niveles de gris en 1929. Dicho sistema redujo la transmisin de imgenes, con calidad para publicacin en peridicos, de dos semanas (tiempo requerido para el envo por barco) a alrededor de quince minutos (Gonzlez, 1987). Un segundo momento importante se da al final de los aos cincuenta y consiste en la necesidad de analizar imgenes derivadas de las actividades ligadas a la guerra. La fotografa area y espacial. Las primeras imgenes cercanas de un cuerpo celeste diferente de la tierra fueron tomadas por la Unin Sovitica a principios de 1959, cuando la sonda espacial Luna 3 fotografi el lado oscuro de la luna. Las fotografas fueron reveladas dentro de la sonda espacial y posteriormente se hizo una transmisin tipo facsimilar. La calidad de las imgenes era bastante mala, pero despus de procesarlas digitalmente se pudo realizar un aceptable atlas del lado oscuro de la luna. Estas tcnicas tuvieron un renacimiento en 1964 con el procesamiento de las imgenes recibidas de la sonda estadounidense Ranger 7, que transmita cerca de la luna. Este procesamiento era bsicamente la correccin de distintos tipos de distorsin producida por las cmaras de TV. Algunas de las distorsiones que se eliminaron fueron: la distorsin geomtrica producida por la diferencia en velocidades de barrido entre el vidicon en la sonda y el tubo reproductor en la Tierra; la no linealidad fotomtrica debida a una respuesta irregular en el tubo; y un ruido oscilatorio debido a la contaminacin de la seal de televisin por los sistemas electrnicos de la sonda. Afortunadamente, estos tres problemas se pudieron solucionar y a partir de esta poca y con el impulso fundamental del Jet Propulsin Laboratory, el procesamiento digital de imgenes ha cobrado gran importancia en diversos mbitos de la vida actual.

  • 5

    PARA QUE SIRVE

    La forma en cmo funciona, el objetivo de procesamiento de imgenes es mejorar el

    aspecto de las imgenes adems que est ligada a la de visin computacional aunque

    ambos son diferentes sirven para el mejoramiento de las imgenes.

    El objetivo de la visin computacional es extraer caractersticas de una imagen para su

    descripcin y as lo pueda interpretar la computadora como poder visualizarlo en ellas, en

    otras que veremos son el proceso de filtrado que en si es un conjunto de tcnicas cuyo

    objetivo fundamental es obtener, resultado sea ms adecuado para una aplicacin

    especfica mejorando ciertas caractersticas una de estas es suavizar la imagen: reducir la

    cantidad de variaciones de intensidad entre pxeles vecinos.

    EL PROCESAMIENTO de imgenes tiene como objetivo mejorar el aspecto de las

    imgenes y hacer ms evidentes en ellas ciertos detalles que se desean hacer notar. La

    imagen puede haber sido generada de muchas maneras, por ejemplo, fotogrficamente, o

    electrnicamente, por medio de monitores de televisin. El procesamiento de las

    imgenes se puede en general hacer por medio de mtodos pticos, o bien por medio de

    mtodos digitales, en una computadora. En la siguiente seccin describiremos muy

    brevemente estos dos mtodos, pero antes se har una sntesis brevsima de los

    principios matemticos implcitos en ambos mtodos, donde el teorema de Fourier es el

    eje central.

    Es el conjunto de tcnicas englobadas dentro del preprocesamiento de imgenes cuyo

    objetivo fundamental es obtener, a partir de una imagen origen, otra final cuyo resultado

    sea ms adecuado para una aplicacin especfica mejorando ciertas caractersticas de la

    misma que posibilite efectuar operaciones del procesado sobre ella.

    Los principales objetivos que se persiguen con la aplicacin de filtros son:

    Suavizar la imagen: reducir la cantidad de variaciones de intensidad entre pxeles vecinos.

    Eliminar ruido: eliminar aquellos pxeles cuyo nivel de intensidad es muy diferente al de

    sus vecinos y cuyo origen puede estar tanto en el proceso de adquisicin de la imagen

    como en el de transmisin.

    Realzar bordes: destacar los bordes que se localizan en una imagen.

    Detectar bordes: detectar los pxeles donde se produce un cambio brusco en la funcin

    intensidad.

    Por tanto, se consideran los filtros como operaciones que se aplican a los pxeles de una

    imagen digital para optimizarla, enfatizar cierta informacin o conseguir un efecto especial

    en ella.

  • 6

    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]) %este comando nos muestra la imagen en blanco

    cuando es falso definiendo tambin el tamao de la imagen(120,200)

    imshow(Mbin) %muestra la imagen for i=1:40:120 %aqui iniciamos con separacin de 40 hasta cubrir

    los 120 pixeles Mbin(i:i+19,:)=true; %aqui se pone el tamao del cual queremos que

    sean las divisiones

    end imshow(Mbin) %muestra la imagen modificada

    Mbin=Mbin'; imshow(Mbin)

    FIN DEL PROGRAMA.

    figura 1

  • 7

    PROGRAMA 2. BARRIDO DE IMAGEN.

    Mediante este programa se puede hacer un barrido de una imagen de blanco al negro y viceversa.

    clc clear A=zeros([256,256]); %hace la matriz a zeros for i=1:1:256 %se fija el rango de la imagen A(i,:)=i; %este inicia el barrido de la imagen end

    A=uint8(A); %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. imshow(A) figure %este comando sostiene la imagen A=A'; %este comando muestra la transpuesta de la matriz A imshow(A)

    FIN DEL PROGRAMA.

    figura 2

  • 8

    PROGRAMA 3. PARA BAJAR PIXEL A UNA IMAGEN.

    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 %para igualar los tamaos de la matriz for j=1:2:n %para igualar los tamaos de la matriz B(a,b)=A(i,j); %se iguala la imagen B a la A, igualando sus

    variables b=b+1; %para que siga recorriendo en x end b=1; %translado en y

    a=a+1; %translado en y end

    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. figure 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 orden2 imshow(B) %muestra la segunda imagen modificada

    FIN DE PROGRAMA.

    figura 3

  • 9

    PROGRAMA 4. AGREGAR BRILLO A UNA IMAGEN.

    Este programa sirve para subir o bajar el brillo de una imagen.

    clc clear A=imread('cameraman.tif'); B=A; B=B*1; %se fija el brillo para las imgenes C=ones([256,256]); %para que la matriz se haga unos C=C*100; %es para ir aumentando el brillo de la imagen

    modificada C=uint8(C); %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. D=B+C; %se crea una nueva variable, donde se suman las

    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 orden2 imshow(D) %muestra la segunda imagen

    FIN DEL PROGRAMA

    figura 4

  • 10

    PROGRAMA 5. AGRANDAMIENTO DE IMAGEN PIXEL A PIXEL.

    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); %estas son coordenadas para posicionar cada

    pixel en su lugar, B(a,b+1)=A(i,j); %aumentando al doble un pixel de la figura

    original B(a+1,b)=A(i,j); %aumentando al doble un pixel de la figura

    original

    B(a+1,b+1)=A(i,j); %aumentando al doble un pixel de la figura

    original b=b+2; %aumentando de igual forma en y end b=1; a=a+2; end 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 orden2 imshow(B) %muestra la primer imagen

    FIN DEL PROGRAMA.

    figura 5

  • 11

    PROGRAMA 6. INDEXADO DE IMAGEN (MUESTRA DIVERSAS IMGENES).

    Este programa muestra la seleccin de imgenes.

    clear clc IA=imread('cameraman.tif'); IB=imread('rice.png'); [m n]=size(IA); s=1; while(s==1)

    alfa=input('dame el valor de alfa entre [0 1]') %comando para pedir

    cualquiera de las dos

    imgenes for x=1:1:m for y=1:1:n

    IR(x,y)=((1-alfa)*(IA(x,y))+(alfa*(IB(x,y)))); %para mezclar dos

    imgenes

    end end imshow(IR) %muestra la respuesta end

    FIN DEL PROGRAMA.

    figura 7

    figura 6

  • 12

    PROGRAMA 7. INDEXADO DE IMAGEN (MUESTRA PORCION DE IMAGEN DESEADA).

    Este programa se utiliza para mostrar la porcin deseada de otra imagen.

    clc clear A=imread('cameraman.tif'); B=A(1:2:end,1:2:end) %delimita el rea de la imagen

    C=A(80:1:200,80:1:200) %en esta instruccin como en la siguiente se

    fijan coordenadas y zona de corte A(80:1:200,80:1:200)=0 %Donde A es la imagen mxn:i:m size(A) size(B) imshow(A); figure imshow(B); imshow(C)

    FIN DEL PROGRAMA.

    figura 8

  • 13

    PROGRAMA 8. FILTRO LINEAL (SUAVIZAR UNA IMAGEN)

    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,j-

    1)+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

    FIN DEL PROGRAMA.

    figura 9

  • 14

    PROGRAMA 9. METER RUIDO A UNA IMAGEN.

    Este programa sirve para introducir distorsiones a una imagen.

    clear clc A=imread('cameraman.tif'); B=A; [re co]=size(B); %re es igual a renglon y co es igual a columna for v=1:50 %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 convierte B a doble C=B;

    figura 10

  • 15

    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,j-

    1)+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

    FIN DEL PROGRAMA.

    figura 11

  • 16

    PROGRAMA 10. METER RUIDO FILTRADO.

    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);

  • 17

    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); %convierte los elementos del arreglo CC=uint8(CC); %convierte los elementos del arreglo CE=uint8(CE); %convierte los elementos del arreglo CEE=uint8(CEE); %convierte los elementos del arreglo

    subplot(1,4,1) %comando para adjuntar imgenes en una misma ventana imshow(B) %muestra la imagen subplot(1,4,2) %comando para adjuntar imgenes en una misma ventana imshow(CC) %muestra la imagen subplot(1,4,3) %comando para adjuntar imgenes en una misma ventana imshow(CE) %muestra la imagen subplot(1,4,4) %comando para adjuntar imgenes en una misma ventana imshow(CEE) %muestra la imagen

    FIN DE PROGRAMA.

    figura 12

  • 18

    PROGRAMA 11. EXTRACCION DE BORDES.

    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

    FIN DEL PROGRAMA.

    figura 13

  • 19

    PROGRAMA 12. SEGUNDA DERIVADA.

    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'); %lee la imagen [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); %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

    FIN DEL PROGRAMA.

    figura 14

  • 20

    PROGRAMA 13. SEGUNDA DERIVADA MEJORADA.

    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(x-

    1,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)

    FIN DEL PROGRAMA.

    figura 15

  • 21

    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.

    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 16

    figura 17 figura 18

  • 22

    Enseguida se utilizara la misma imagen, pero ahora se utilizara un detector de bordes, con la

    herramienta EDGE DETECTION, utilizando el operador SOBEL.

    A continuacion se muestra la imagen resultante

    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 19

    figura 20

    figura 21

  • 23

    Obteniendo el siguiente resultado con un envase de botella

    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.

    figura 22

  • 24

    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

    Se carga el programa y se muestran los resultados siguientes

    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.

    figura 23

    figura 24