21
Reporte de Practicas Alumno: Cruz García Diego Alejandro Diseño Mecatronico Profesor: Ing. Gonzalo Ceja Medina 14 de Abril del 2014

Reporte Matlab Cruz Garcia

Embed Size (px)

Citation preview

  • Reporte de Practicas Alumno: Cruz Garca Diego Alejandro

    Diseo Mecatronico

    Profesor: Ing. Gonzalo Ceja Medina

    14 de Abril del 2014

  • Ejercicio 1.- Conversion de una imagen RGB a grises, binaria

    Objetivo: Conversin de una imagen en escala de grises a una imagen lgica (0=negro, 1=blanco). Tambin se puede usar el siguiente comando cuando se requiere binarizar una imagen

    RGB directamente.

    Imagen_bin=im2bw(Imagen,level)

    Dnde: level es el nivel de umbral entre 0 y 1.

    Codigo:

    clear all;clc;clear all koala_RGB=imread('koala.jpg'); im_bin=im2bw(koala_RGB,.5); subplot(2,2,1),imshow(koala_RGB),title('Koala Original'); subplot(2,2,2),imshow(im_bin),title('Koala Blanco/Negro');

    Imagen:

  • Ejercicio 2.- Filtro de mediana (Filtraje de una imagen con ruido)

    Objetivo: El filtrado por mediana, los pxeles de la nueva imagen se generan calculando

    la mediana del conjunto de pxeles del entorno de vecindad del pxel correspondiente

    a la imagen origen, de esta forma se homogeneizan los pxeles de intensidad muy

    diferente con respecto a la de los vecinos. Este tipo de filtro es bastante indicado

    cuando se tiene ruido aleatorio.

    Se puede utilizar el comando: imagen2=filter2(filter,Imagen);

    Se agrega ruido a una imagen con el comando imnoise.

    Codigo:

    clc;clear all;close all; im=imread('yo.jpg'); yo_bw=im2bw(im,.5); ruidosa=imnoise(im,'salt & pepper',0.05); im_fil=medfilt1(double(ruidosa),40); im_fil=uint8(im_fil);

    subplot(1,4,1),imshow(im),title('Original'); subplot(1,4,2),imshow(yo_bw),title('Blanco/Negro'); subplot(2,4,3),imshow(ruidosa),title('Ruidosa'); subplot(2,4,4),imshow(im_fil),title('Filtrada');

    Imagen:

  • Ejercicio 3.- Erosin y Dilatacin

    Objetivo: Son las operaciones morfolgicas ms utilizadas.

    DILATACIN: Adiciona pixeles en las fronteras de la imagen.

    EROSIN: Remueve pixeles de las fronteras de la imagen.

    Ambas operaciones se aplican a imgenes binarizadas y consiste en la eliminacin o incremento de pixeles a un objeto.

    Codigo:

    clear all; clc; close all im_RGB= imread('Fig0914(a)(licoln from penny).tif'); imbw= im2bw(im_RGB,0.5); ee=ones(6,6); erosionada= imerode(imbw,ee); contorno=imbw-erosionada;

    subplot(1,3,1),imshow(im_RGB),title('original'); subplot(1,3,2),imshow(erosionada),title('Erosionada'); subplot(1,3,3),imshow(contorno),title('Dilatada');

  • Ejercicio 4.- Apertura y Cierre

    Objetivo:

    Apertura.- generalmente suaviza el contorno de un elemento, rompe uniones angostas

    (istmos) y elimina salientes finas.

    Cierre.- tambin tiende a suavizar contornos, pero a diferencia de la anterior, une cortes

    en partes angostas y golfos largos y finos, elimina pequeos huecos y llena baches en los

    contornos

    Codigo:

    clc;close all,clear all im=imread('Fig0911(a)(noisy_fingerprint).tif')

    figure,imshow(im); ee=strel('disk',1); imA=imopen(im,ee); imC=imclose(im,ee);

    subplot(2,3,1),imshow(im),title('Original');

    subplot(2,3,2),imshow(imA),title('Apertura');

    subplot(2,3,3),imshow(imC),title('Cierre');

    %Generamos una apertura mediante erosion y dilatacion imaa=imerode(im,ee); ima=imdilate(imaa,ee); %Generamos una apertura mediante dilatacion y erosion imcc=imdilate(im,ee); imc=imerode(imcc,ee);

    subplot(2,3,5),imshow(ima),title('Apertura: ED');

    subplot(2,3,6),imshow(imc),title('Dilatacion: DE');

    Imagen:

  • Ejercicio 5.- Redimension de una Imagen Objetivo: modificar mediante Matlab el tamao de una imagen seleccionada, utilizando la

    funcin imresize, y en la lista de argumentos de esta funcin se encontraran la imagen y

    la escala a la que se modificara.

    Codigo:

    clear all; clc; clear all A=imread('polenC.tif'); A_bw=im2bw(A,0.5); size(A_bw) imshow(A_bw); B=imresize(A_bw,0.5); figure,imshow(B),size(B) C=imresize(A,[100,200]); figure,imshow(C),size(C);

    Imagen:

  • Recortar una Imagen

    Objetivo: Realizar un recorte a una imagen, utilizando la funcin imcrop, indicndole en la lista de argumentos la numeracin de pixeles hasta donde se recortara la imagen. Codigo: clear all;clc;close all; I = imread('moneda8.jpg'); I2 = imcrop(I,[75 68 130 112]); imshow(I), figure, imshow(I2)

    Imagen:

  • 6.- Seleccion de Etiquetas (Matriz de Etiquetado)

    Objetivo: Para seleccionar manualmente un objeto y aislarlo se realiza el procedimiento:

    1. Mostrar la imagen binarizada con el comando imshow.

    2. ejecutar el comando: [L N]=bwlabel(im,8);

    Dnde: C=4 u 8 (Conexin)

    3. Clic en el objeto y Enter.

    4. Si se desea, desplegar el objeto seleccionado en L.

    Codigo:

    clear all;clc;close all;

    im=imread(figurillas.png);

    figure

    imshow(im)

    im=im2bw(im,0.3);

    [L N] = bwlabel(im,8);

    N

    figure

    subplot(2,3,1);imshow(im)

    subplot(2,3,2);imshow(L==1)

    subplot(2,3,3);imshow(L==2)

    subplot(2,3,4);imshow(L==3)

    subplot(2,3,5);imshow(L==4)

    subplot(2,3,6);imshow(L==5)

    Imagen:

  • Ejercicio 7- Trazado de bordes

    Objetivo: Trazar los bordes de las figuras que se encuentren en la imagen seleccionada,

    para esto, se utilizara la funcin bwboundaries.

    Cdigo:

    clc;clear all;close all; imrgb=imread('moneda.jpg'); imbw=im2bw(imrgb,0.5); imbw=imfill(imbw,'holes'); figure imshow(imrgb); hold on [B L]=bwboundaries(imbw); [cant x]=size(B); for k=1;cant b=B{k}; plot(b(:,2),b(:,1),'r','LineWidth',3); end hold off

    Imagen:

  • Ejercicio 8- Deteccin de monedas chicas y grandes con conteo

    Objetivo:

    Realizar un programa en MATLAB que cuente cuantas monedas y diferenciar

    cuantas monedas grandes y cuantas pequeas

    Codigo:

    clear all;clc;clear all i=0; x=0; im=imread('coins.jpg'); im2=rgb2gray(im);

    %%%binarizacion umb=graythresh(im2); bw1=im2bw(im2); bw=imfill(bw1,'holes'); imshow (im)

    %%%etiquetar los elementos conectados [L Ne]=bwlabel(bw);

    %%%calcular propiedades de los objetos de la imagen propiedad=regionprops(L); hold on

    %%graficar las cajas de fronteras de los objetos for n=1:size(propiedad,1) rectangle('position',propiedad(n).BoundingBox,'Curvature',[1,1],'EdgeColo

    r','g','LineWidth',2) end pause(3)

    %%% buscar las areas que son menores o mayores a 2800 segun sea el caso s=find([propiedad.Area]>2850); %s=find([propiedad.Area]

  • figure, imshow(bw) %> %<

  • Ejercicio 9.- Calculo de Distancias entre Regiones (Distancias entre

    Monedas)

    Objetivo: Obtener el centroide de las monedas y con eso obtener la distancia entre ellas

    marcndola con una linea

    clear all;clc;close all; I=imread('coins.png'); figure,imshow(I) bw=im2bw(I,graythresh(getimage)); %Convertida a grises bw2=imfill(bw,'holes');%Imagen rellenada maquillada %Obtener centros s=regionprops(bw2,'centroid'); centroids=cat(1,s.Centroid);%Concatena el arreglo %Muesntra las coordenadas en el commandwindow centroids %Obtener la cantidad de monedas cantidad=size(centroids); m=cantidad(1,1);

    str=[num2str(m),' monedas detectadas.']; disp(str); for i=1:m x(i)=centroids(i,1); y(i)=centroids(i,2); end disp('Determinar la distancia de la monedaA a la monedaB') A=1; B=2; distancia=sqrt((x(B)-x(A))^2+(y(B)-y(A))^2); str=['La distancia es: ' ,num2str(distancia),'unidades'] disp(str);

    figure; imshow(I) hold on; Imagen_filled=imfill(bw,'holes'); boundaries=bwboundaries(Imagen_filled);

    for k=1:10 b=boundaries{k}; plot(b(:,2),b(:,1),'b','LineWidth',3);%Dibuja contornos plot(imgca,centroids(:,1),centroids(:,2),'r*') plot([x(A) x(B)],[y(A) y(B)],'m','Linewidth',2); end xlabel(str) hold off;

  • Ejercicio 10- Aplicacin de la regionprop :Boundingbox

    clear all;clc;close all; im=imread('coras.jpg'); %binarizacion im_bin=im2bw(im,graythresh(im)); im_fill=imfill(im_bin, 'holes'); figure,imshow(im_fill); [L N] = bwlabel(im_fill); propiedad = regionprops((L)); hold on imshow(im); %graficamos las cajas de fronteras de objetos for n=1:N rectangle('Position', propiedad(n).BoundingBox, 'EdgeColor',

    'g','LineWidth',2) end hold off;

  • Ejercicio 11- Aplicacin de la regionprop: ConvexHull Codigo:

    clear all;clc;close all; im=imread('Pinzas.jpg'); %binarizacion im_bin=im2bw(im,graythresh(im)); im_bin=not(im_bin); figure,imshow(im_bin); im_fill=imfill(im_bin, 'holes'); figure,imshow(im_fill); [L N] = bwlabel(im_fill);

    propiedad = regionprops(L,'ConvexHull'); hold on imshow(im); %graficamos las cajas de fronteras de objetos for n=1:N x=propiedad(n).ConvexHull(:,1); y=propiedad(n).ConvexHull(:,2); plot(x,y, '--r','Linewidth',2) end hold off;

  • Ejercicio 12- Aplicacin de la regionprop: ConvexArea Objetivo: Determinar el rea dentro de un permetro con la propiedad convexarea, que es precedida por el uso de la propiedad convexhull, para delimitar la zona que se registrara. CODIGO clc;clear all;close all;

    im=imread(pinzas.jpg);

    im_bin=im2bw(im,graythresh(im));

    [m n ] = size (im_bin);

    im_bin=1-im_bin;

    figure

    imshow(im_bin)

    im_fill = imfill(im_bin, holes);

    figure

    imshow(im_fill);

    [ L N ] = bwlabel (im_fill);

    propiedad = regionprops(L, ConvexHull, ConvexArea, Centroid);

    centroids = cat(1,propiedad.Centroid);

    hold on

    imshow (im);

    for n=1:N

    x=propiedad(n).ConvexHull(:,1);

    y=propiedad(n).ConvexHull(:,2);

    areaConvex=propiedad (n).ConvexArea;

    plot(x,y,centroids(:,1),centroids(:,2), r*)

    text( centroids (:,1),centroids(:,2),[num2str(areaConvex), Unidades^2]

    FontSize,10,?FontWeight,bold)

    end

    hold off

    Imagen

  • Ejercicio 13- Aplicacin de la regionprop: orientation

    Objetivo: Mostrar la orientacin de los objetos con respecto al eje de las axisas y respecto a algn otro eje, el ngulo (en grados que varan desde -90 hasta 90 grados), se utiliz la propiedad orientation. CODIGO clc;clear all;close all

    im=imread (cotonetes.jpg );

    im_bin=im2bw(im,graythresh(im));

    im_bin=imclose(im_bin,strel( disk,4));

    figure,imshow(im_bin)

    im_fill=imfill(im_bin, noholes);

    [B,LL] = bwboundaries (im_fill, noholes);

    [ L N ] = bwlabel (im_fill);

    propiedad = regionprops (L, orientation );

    figure,imshow(im);

    hold on

    for k= 1:length(B)

    boundary = B{k};

    plot(boundary(:,2),boundary(:,1),y,LineWidth2);

    end

    for k=1:lenth(B)

    boundary = B{k};

    inclinacin = propiedad(k).orientation;

    text(boundary (1,2) + 60, boundary(1,1)+3,[

    num2str(inclinacin),],Color,g,FontSize,10,FontWeight,bold);

    end

    hold off

  • Ejercicio 14- Aplicacin de la regionprop: MajorAxisLength y MinorAxisLength Codigo clc;clear all; close all

    im=imread (capacitores.png);

    im_bin=im2bw(im,graythresh(im));

    im_bin=imclose (im_bin,strel (disk,8));

    im_bin=1-im_bin;

    figure,imshow(im_bin)

    [B,LL] = bwboundaries(im_bin);

    propiedad = regionprops(L, MajorAxisLength, MinorAxisLength);

    figure,imshow(im);

    hold on

    for k= 1:length(B)

    boundary = B{k};

    plot(boundary(:,2),(boundary(:,1),b,LineWidth,2);

    end

    for k= 1:length(propiedad)

    oundary = B{k};

    mayoreje = propiedad (k). MajorAxisLength;

    menoreje = propiedad (k). MinorAxisLength;

    text(boundary(1,2)+10,boundary(1,1)*10,[num2str(mayoreje),,,num2str(may

    oreje),,numstr(menoreje)],Color,g,FontSize,10,FontWeigth,bold)

    ;

    end

    hold off

  • Ejercicio 15- Aplicacin de la regionprop: EulerNumber CODIGO clc;clear all;close all

    im=imread(dado.jpg);

    im_bin=im2bw(im,graythresh(im));

    im_bin=imclose(im_bin,strel(disk17));

    figure,imshow(im_bin)

    [B ,LL] = bwboundaries (im_bin,holes);

    [L N] = bwlabel (im_bin);

    propiedad = regionprops(L,EulerNumber);

    figure,imshow(im);

    hold on

    for k= 1;length(propiedad)

    boundary = B{k};

    numeuler = propiedad(k).EulerNumer;

    valordado=(-1*numeuler)+1;

    text(boundary(1,2)+60,boundary(1,1)+40,[num2str(valordado),], Color,

    r,FontSize,40,FontWeight,bold);

    title([Cayo un : , num2str(valordado)])

    end

    hold off

    Imagen:

  • Ejercicio 16- Remueve objetos menores a una cierta rea Objetivo: Eliminar reas menores de una imagen, tomndose como referencia determinada cantidad de pixeles, se usara la funcin bwareaopen. CODIGO clear all;clc;clear all

    im=imread(objetos.png);

    im = im2bw(im,graythresh (im));

    im2 = bwareaopen (im,5000);

    figure

    imshow(im);

    figure

    imshow(im2);

    Imagen

  • Ejercicio 17- Deteccin de objetos : crculos, rectngulos y tringulos Objetivo: Deteccin de figuras bsicas CODIGO clear all;clc;close all;

    vid = videoinput(winvideo,2, RGB24_640X480);

    scr= getselectedsource(vid);

    vid.FramePerTrigger =1;

    vid.ReturnedColorspace = rgb ;

    preview(vid);

    while(1)

    im = getsnapshot(vid);

    imshow(im);

    bw=im2bw(im,graythresh(im));

    bw=bwareaopen(bw,30);

    bw=imfill(bw,noholes);

    [B,L]=bwboundaries(bw, noholes);

    hold on

    for k=1:length(B)

    boundary = B{k};

    plot(boundary(:,2),boundary(:1), w,Linewidth,2);

    end

    stats = regionprops(L, Area,Centroid,perimeter);

    for k=1:length(B)

    boundary = B{k};

    permeter=stats{k}.Perimeter ;

    rea = stats(k).Area;

    metric = 4*pi*rea/perimeter^2;

    metric_string = sprintf( %2.2f,metric);

    text(boundary(1,2)-

    35,boundary(1,1)+13,metric_string,Color,y,FontSize,14,FontWeight,

    bold);

    if metric >0.8

    text(boundary(1,2)-

    35,boundary(1,1)+40,metric_string,CIRCULO,Color,K,FontSize,14,Fo

    ntWeight,bold);

    elseif metric >0.65

    text(boundary(1,2)-

    35,boundary(1,1)+40,metric_string,RECTANGULO,Color,k,FontSize,14,

    FontWeight,bold);

    elseif metric>0.45

    text(boundary(1,2)-

    35,boundary(1,1)+40,metric_string,TRIANGULO,Color,k,FontSize,14,

    FontWeight,bold);

    else

    text(boundary(1,2)-

    35,boundary(1,1)+40,indefinited,Color,y,FontSize,14,FontWeight,

    bold);

    end

    end

  • title([Metrica normalizada del redondeo de las figuras]);

    if max (im)