Sistemas de vision
-
Upload
miguel-montero -
Category
Technology
-
view
591 -
download
1
description
Transcript of Sistemas de vision
Montero Gómez Miguel Eduardo
17 de julio del 2012
Universidad Politécnica de Guanajuato
Sistemas de Visión.
Sistemas de visón.
1
ÍNDICE
I.-Resumen………………………………………………………………………………..2
II.-Introducción…………………………………………………………………………….3
III.-Objetivo...……………………………………………………………………………….4
IV.-Planteamiento del problema……………………………………………..…………..5
V.-Justificación…………………………………………………………………………….6
VI.-Desarrollo………………………………………………………………………...…….7
VII.-Código……...……………………………………………………………………..….12
VIII.-Bibliografías…………………………………………………………………………49
Sistemas de visón.
2
1.- RESUMEN.
Los problemas que hoy en dia se tienen en los sistemas de vision son muy
complejos, en este reporte se atacara un problema en donde se tienen 20
imágenes en donde hay 3 piezas circulares fijas Fig1.1 y se tiene un solo elemento
movil el cual tendra distinta ubicación en las 20 fotografias , se desarrollara un
programa en Matlab para que se pudea identificar los elementos fijos y se grafique
en otra foto para este caso en particular se llamara foto 21 en ella contendra la
ubicación de los puntos fijos y la trayectoria de la pieza movil con respecto alas 20
fotos.
Sistemas de visón.
3
2.- INTRODUCCIÓN.
Aunque en las últimas dos décadas los sistemas de visón han cambiado mucho
los problemas que tienen no, como todo problema de un sistema de visón se trata
de ayudar a la computadora a entender y tratar de darle la capacidad de ver el
mundo como nosotros lo vemos pero para este camino aún falta mucho trayecto
así que en este reporte se explicara el proceso en donde se han captado mediante
una cámara y un ambiente controlado con iluminación y fondo 20 imágenes de
interés para el análisis de las fotos para determinar la trayectoria de un elemento
móvil en 20 fotos distinta, sin cambiar su tamaño o forma bidimensional.
Los problemas que hoy en dia se tienen en los sistemas de vision son muy
complejos, en este reporte se atacara un problema en donde se tienen 20
imágenes en donde hay 3 piezas circulares fijas Fig1.1 y se tiene un solo elemento
movil el cual tendra distinta ubicación en las 20 fotografias , se desarrollara un
programa en Matlab para que se pudea identificar los elementos fijos y se grafique
en otra foto para este caso en particular se llamara foto 21 en ella contendra la
ubicación de los puntos fijos y la trayectoria de la pieza movil con respecto alas 20
fotos.
Sistemas de visón.
4
3.- OBJETIVO.
Conocer los objetos fijos y móviles de una serie de 20 fotos y graficar de manera
representativa en Matlab la trayectoria del objeto fijo en una sola foto.
Sistemas de visón.
5
4.- PLANTEAMIENTO DEL PROBLEMA
Se tiene una serie de 20 fotos tomadas en condiciones contralas en una cámara
de visión, se plantea desarrollar un código en Matlab para que la computadora sea
capaz de determinar foto por foto los puntos fijos y la trayectoria que generara los
puntos móviles.
Sistemas de visón.
6
5.- JUSTIFICACIÓN.
Esta investigación fue realizada con el solo fin específico de conocer los objetos
fijos y móviles en una serie de 20 fotos y determinar sus propiedades de cada foto
como área, centroides y aplicaciones para procesamiento como dilatación y
erosión.
Sistemas de visón.
7
6.- DESARROLLO
Proceso:
1.- Se cargan las 20 fotos al sistema
Muestra de fotos.
Figura 1.1.
Sistemas de visón.
8
2.- Se binariza la foto:
Foto binarizada
Figura 1.2
3.- Se realiza un corte para eliminar una sección que no son sirve.
Figura 1.3 Recorte de basura binarizada en Matlab
Sistemas de visón.
9
4.- Se invierte binarización.
Figura 1.4 Se invierte Binarización
5.- Empieza la parte de procesamiento de imagen
6.- Se aplican 4 dilataciones
Figura 1.5 Se Aplican 4 Dilataciones
Sistemas de visón.
10
7.- Se aplica 1 erosión.
Figura 1.6 Se aplica una Erosión.
Al obtener esta última foto podemos ya obtener propiedades, al aplicar a la foto un proceso para
encontrar áreas, encontraremos todas las áreas que tengan la imagen Figura1.6, obtendremos un
total de 29 áreas demasiado pequeñas 3 áreas muy grandes que serán identificadas como los
puntos fijos y una área más chica que será identificada como nuestro punto fijo y obtener
ordenadas de los 4 objetos y así graficarlos en otra foto.
La manera de separar estas 29 áreas que no nos sirves es con un ciclo FOR que se mostrara al
final.
Sistemas de visón.
11
En esta foto podemos observar que se obtuvieron las coordenadas de los puntos fijos y se
graficaron en otra foto distinta en forma de cuadros un poco más grandes con respecto al punto fijo
que de igual forma esta graficada.
Figura 1.7. Foto 21 graficando con respecto a las coordenadas encontradas.
De esta forma se analizó la primera foto solo falta analizar las 19 fotos restantes y al obtener los
puntos coordenados del moviente de la pieza fija y en base a esos puntos graficarlos en la foto que
creamos
Figura 1.8. Análisis de 15 fotos y grafica de la ruta del punto móvil.
Sistemas de visón.
12
Código en Matlab.
%Programa que identifica las piezas fijas y móviles %trazando la trayectoria de la pieza fija %Este es un código específico para las fotos de un tamaño 2560 x 1920 %Lectura de la primera foto
A=imread('1.jpg');
%binarización de la foto
BA=im2bw(A,0.2); q=size(BA);
%invertir binarización
%figure(1) %imshow(BA);
%"Corte" de la foto para quitar basura binaria
for i=1:q(1) for j=2200:2560
if BA(i,j) == 0;
BA(i,j)=1;
end
end end
%figure(2) %imshow(BA);
q=size(BA);
%"Inverir" Binarizacion
for i=1:q(1) for j=1:q(2)
if BA(i,j) == 0;
BA2(i,j)=1; end
end end
Sistemas de visón.
13
%figure(3) %imshow(BA2);
%4 Dilataciones
L=[1 1 1; 1 1 1; 1 1 1]; %elemento estructurante
M=imdilate(BA2, L); %1era dilatacion
M1=imdilate(M, L); %segunda dilatacion
M2=imdilate(M1, L); % tercera dilatacion
%imshow(M2);
%1 erosion
se=strel('disk',4); ero=imerode(M2,se); %imshow(ero)
%sacar Area
s=bwlabel(ero,8);
s1=imfeature(s,'Area'); %aqui conocemos todas las areas de la foto
analizada
%encontrar las areas de los puntos fijos
j=1; for i=1:size(s1)
if s1(i,1).Area >70000 s1(i,1).Area; %como hacer dinamico el sistema i; if i~0 ; v(j)=i; j=j+1; end end
end v; %tiene almacenado los valores de los puntos fijos
j=j-1;
Sistemas de visón.
14
j; %tiene almacenado cuantas piezas fijas tiene Num=size(v);
%sacar centroides para conocer cordenadas
s2=imfeature(s,'Centroid');
%cambiar las cordenadas a entero
%O1=s2(v(1),1).Centroid; pxy1=int32(s2(v(1),1).Centroid);
%O2=s2(v(2),1).Centroid; pxy2=int32(s2(v(2),1).Centroid);
%O3=s2(v(3),1).Centroid; pxy3=int32(s2(v(3),1).Centroid);
%crear la foto 21 %0=negro %1=blanco
foto21=zeros(1920,2560); %imshow(foto21); %trazar un cuadrado en las cordenadas de los objetos fijos en la foto 21
for i=1:150 for j=1:150
foto21(i+pxy3(2),j+pxy3(1)) = 1; foto21(i+pxy2(2),j+pxy2(1)) = 1; foto21(i+pxy1(2),j+pxy1(1)) = 1;
end
end %imshow(foto21); %impixelinfo
%determinar cordenadas del punto movil con respecto a su area y centroide
%s1
for i=1:size(s1)
if s1(i,1).Area >50000 if s1(i,1).Area <90000
Sistemas de visón.
15
i; s1(i,1).Area; vmovil1=i; end end
end
vmovil1;
%trazar un cuadradito mas pequeño en la foto 21 con respecto ala pieza
fija
%M1=s2(v(1),1).Centroid; pmovil1=int32(s2(vmovil1,1).Centroid); pmovil1; %contiene el valor numerico del centroide dela pieza movil
for i=1:50 for j=1:50
foto21(i+pmovil1(2),j+pmovil1(1)) = 1;
end
end
%imshow(foto21); %impixelinfo
%leer todas las 19 fotos restantes % % % % % % % % %222222222222222222222222222222222 A=imread('2.jpg'); BA2=im2bw(A,0.2); q=size(BA2);
for i=1:q(1) for j=2200:2560
if BA2(i,j) == 0;
BA2(i,j)=1;
end
Sistemas de visón.
16
end end
q=size(BA2);
for i=1:q(1) for j=1:q(2)
if BA2(i,j) == 0;
BA22(i,j)=1; end
end end
L=[1 1 1; 1 1 1; 1 1 1]; %elemento estructurante
M=imdilate(BA22, L); %1era dilatacion
M1=imdilate(M, L); %segunda dilatacion
M2=imdilate(M1, L); % tercera dilatacion
se=strel('disk',4); ero=imerode(M2,se);
s=bwlabel(ero,8);
s1=imfeature(s,'Area');
s2=imfeature(s,'Centroid');
for i=1:size(s1)
if s1(i,1).Area >50000 if s1(i,1).Area <90000
i; s1(i,1).Area; vmovil1=i; end end
end
vmovil1; pmovil1=int32(s2(vmovil1,1).Centroid); pmovil1; %contiene el valor numerico del centroide dela pieza movil
for i=1:50 for j=1:50
Sistemas de visón.
17
foto21(i+pmovil1(2),j+pmovil1(1)) = 1;
end
end %impixelinfo
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%3333333333333333333333333333333333333333333333 A=imread('3.jpg'); BA3=im2bw(A,0.2); q=size(BA3);
%figure(1); %imshow(BA3)
for i=1:q(1) for j=2200:2560
if BA3(i,j) == 0;
BA3(i,j)=1;
end
end end
%figure(2); %imshow(BA3)
q=size(BA3);
for i=1:q(1) for j=1:q(2)
if BA3(i,j) == 0;
BA23(i,j)=1; end
end end
%figure(3); %imshow(BA23)
L=[1 1 1; 1 1 1; 1 1 1]; %elemento estructurante
M=imdilate(BA23, L); %1era dilatacion
Sistemas de visón.
18
M1=imdilate(M, L); %segunda dilatacion
M2=imdilate(M1, L); % tercera dilatacion
se=strel('disk',4); ero=imerode(M2,se);
%figure(4); %imshow(ero)
s=bwlabel(ero,8);
s1=imfeature(s,'Area');
s2=imfeature(s,'Centroid');
for i=1:size(s1)
if s1(i,1).Area >50000 if s1(i,1).Area <90000
i; s1(i,1).Area; vmovil1=i; end end
end
vmovil1; pmovil1=int32(s2(vmovil1,1).Centroid) pmovil1; %contiene el valor numerico del centroide dela pieza movil
for i=1:50 for j=1:50
foto21(i+pmovil1(2),j+pmovil1(1)) = 1;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%444444444444444444444444444444444444444444 A=imread('4.jpg'); BA4=im2bw(A,0.2); q=size(BA4);
Sistemas de visón.
19
%figure(1); %imshow(BA3)
for i=1:q(1) for j=2200:2560
if BA4(i,j) == 0;
BA4(i,j)=1;
end
end end
%figure(2); %imshow(BA3)
q=size(BA4);
for i=1:q(1) for j=1:q(2)
if BA4(i,j) == 0;
BA24(i,j)=1; end
end end
%figure(3); %imshow(BA23)
L=[1 1 1; 1 1 1; 1 1 1]; %elemento estructurante
M=imdilate(BA24, L); %1era dilatacion
M1=imdilate(M, L); %segunda dilatacion
M2=imdilate(M1, L); % tercera dilatacion
se=strel('disk',4); ero=imerode(M2,se);
%figure(4); %imshow(ero)
s=bwlabel(ero,8);
s1=imfeature(s,'Area');
s2=imfeature(s,'Centroid');
Sistemas de visón.
20
for i=1:size(s1)
if s1(i,1).Area >50000 if s1(i,1).Area <90000
i; s1(i,1).Area; vmovil1=i; end end
end
vmovil1; pmovil1=int32(s2(vmovil1,1).Centroid); pmovil1; %contiene el valor numerico del centroide dela pieza movil
for i=1:50 for j=1:50
foto21(i+pmovil1(2),j+pmovil1(1)) = 1;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%5555555555555555555555555555555555555555 A=imread('5.jpg'); BA5=im2bw(A,0.2); q=size(BA5);
%figure(1); %imshow(BA3)
for i=1:q(1) for j=2200:2560
if BA5(i,j) == 0;
BA5(i,j)=1;
end
end end
Sistemas de visón.
21
%figure(2); %imshow(BA3)
q=size(BA5);
for i=1:q(1) for j=1:q(2)
if BA5(i,j) == 0;
BA25(i,j)=1; end
end end
%figure(3); %imshow(BA23)
L=[1 1 1; 1 1 1; 1 1 1]; %elemento estructurante
M=imdilate(BA25, L); %1era dilatacion
M1=imdilate(M, L); %segunda dilatacion
M2=imdilate(M1, L); % tercera dilatacion
se=strel('disk',4); ero=imerode(M2,se);
%figure(4); %imshow(ero)
s=bwlabel(ero,8);
s1=imfeature(s,'Area');
s2=imfeature(s,'Centroid');
for i=1:size(s1)
if s1(i,1).Area >50000 if s1(i,1).Area <90000
i; s1(i,1).Area; vmovil1=i; end end
end
vmovil1;
Sistemas de visón.
22
pmovil1=int32(s2(vmovil1,1).Centroid); pmovil1; %contiene el valor numerico del centroide dela pieza movil
for i=1:50 for j=1:50
foto21(i+pmovil1(2),j+pmovil1(1)) = 1;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%666666666666666666666666666666666666666666666 A=imread('6.jpg'); BA6=im2bw(A,0.2); q=size(BA6);
%figure(1); %imshow(BA3)
for i=1:q(1) for j=2200:2560
if BA6(i,j) == 0;
BA6(i,j)=1;
end
end end
%figure(2); %imshow(BA3)
q=size(BA6);
for i=1:q(1) for j=1:q(2)
if BA6(i,j) == 0;
BA26(i,j)=1; end
end end
Sistemas de visón.
23
%figure(3); %imshow(BA23)
L=[1 1 1; 1 1 1; 1 1 1]; %elemento estructurante
M=imdilate(BA26, L); %1era dilatacion
M1=imdilate(M, L); %segunda dilatacion
M2=imdilate(M1, L); % tercera dilatacion
se=strel('disk',4); ero=imerode(M2,se);
%figure(4); %imshow(ero)
s=bwlabel(ero,8);
s1=imfeature(s,'Area');
s2=imfeature(s,'Centroid');
for i=1:size(s1)
if s1(i,1).Area >50000 if s1(i,1).Area <90000
i; s1(i,1).Area; vmovil1=i; end end
end
vmovil1; pmovil1=int32(s2(vmovil1,1).Centroid); pmovil1; %contiene el valor numerico del centroide dela pieza movil
for i=1:50 for j=1:50
foto21(i+pmovil1(2),j+pmovil1(1)) = 1;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
Sistemas de visón.
24
%7777777777777777777777777777777777777777 A=imread('7.jpg'); BA7=im2bw(A,0.2); q=size(BA7);
%figure(1); %imshow(BA3)
for i=1:q(1) for j=2200:2560
if BA7(i,j) == 0;
BA7(i,j)=1;
end
end end
%figure(2); %imshow(BA3)
q=size(BA7);
for i=1:q(1) for j=1:q(2)
if BA7(i,j) == 0;
BA27(i,j)=1; end
end end
%figure(3); %imshow(BA23)
L=[1 1 1; 1 1 1; 1 1 1]; %elemento estructurante
M=imdilate(BA27, L); %1era dilatacion
M1=imdilate(M, L); %segunda dilatacion
M2=imdilate(M1, L); % tercera dilatacion
se=strel('disk',4); ero=imerode(M2,se);
%figure(4);
Sistemas de visón.
25
%imshow(ero)
s=bwlabel(ero,8);
s1=imfeature(s,'Area');
s2=imfeature(s,'Centroid');
for i=1:size(s1)
if s1(i,1).Area >50000 if s1(i,1).Area <90000
i; s1(i,1).Area; vmovil1=i; end end
end
vmovil1; pmovil1=int32(s2(vmovil1,1).Centroid); pmovil1; %contiene el valor numerico del centroide dela pieza movil
for i=1:50 for j=1:50
foto21(i+pmovil1(2),j+pmovil1(1)) = 1;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%8888888888888888888888888888888888888888888888888888 A=imread('8.jpg'); BA8=im2bw(A,0.2); q=size(BA6);
%figure(1); %imshow(BA3)
for i=1:q(1) for j=2200:2560
if BA8(i,j) == 0;
BA8(i,j)=1;
Sistemas de visón.
26
end
end end
%figure(2); %imshow(BA3)
q=size(BA8);
for i=1:q(1) for j=1:q(2)
if BA8(i,j) == 0;
BA28(i,j)=1; end
end end
%figure(3); %imshow(BA23)
L=[1 1 1; 1 1 1; 1 1 1]; %elemento estructurante
M=imdilate(BA28, L); %1era dilatacion
M1=imdilate(M, L); %segunda dilatacion
M2=imdilate(M1, L); % tercera dilatacion
se=strel('disk',4); ero=imerode(M2,se);
%figure(4); %imshow(ero)
s=bwlabel(ero,8);
s1=imfeature(s,'Area');
s2=imfeature(s,'Centroid');
for i=1:size(s1)
if s1(i,1).Area >50000 if s1(i,1).Area <90000
i; s1(i,1).Area; vmovil1=i;
Sistemas de visón.
27
end end
end
vmovil1; pmovil1=int32(s2(vmovil1,1).Centroid); pmovil1; %contiene el valor numerico del centroide dela pieza movil
for i=1:50 for j=1:50
foto21(i+pmovil1(2),j+pmovil1(1)) = 1;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%9999999999999999999999999999999999999999 A=imread('9.jpg'); BA9=im2bw(A,0.2); q=size(BA6);
%figure(1); %imshow(BA3)
for i=1:q(1) for j=2200:2560
if BA9(i,j) == 0;
BA9(i,j)=1;
end
end end
%figure(2); %imshow(BA3)
q=size(BA9);
for i=1:q(1) for j=1:q(2)
if BA9(i,j) == 0;
Sistemas de visón.
28
BA29(i,j)=1; end
end end
%figure(3); %imshow(BA23)
L=[1 1 1; 1 1 1; 1 1 1]; %elemento estructurante
M=imdilate(BA29, L); %1era dilatacion
M1=imdilate(M, L); %segunda dilatacion
M2=imdilate(M1, L); % tercera dilatacion
se=strel('disk',4); ero=imerode(M2,se);
%figure(4); %imshow(ero)
s=bwlabel(ero,8);
s1=imfeature(s,'Area');
s2=imfeature(s,'Centroid');
for i=1:size(s1)
if s1(i,1).Area >50000 if s1(i,1).Area <90000
i; s1(i,1).Area; vmovil1=i; end end
end
vmovil1; pmovil1=int32(s2(vmovil1,1).Centroid); pmovil1; %contiene el valor numerico del centroide dela pieza movil
for i=1:50 for j=1:50
foto21(i+pmovil1(2),j+pmovil1(1)) = 1;
Sistemas de visón.
29
end
end
%imshow(foto21); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%10 10 10 10 10 10 10 10 10 10 10 10 10 A=imread('10.jpg'); BA10=im2bw(A,0.2); q=size(BA10);
%figure(1); %imshow(BA3)
for i=1:q(1) for j=2200:2560
if BA10(i,j) == 0;
BA10(i,j)=1;
end
end end
%figure(2); %imshow(BA3)
q=size(BA10);
for i=1:q(1) for j=1:q(2)
if BA10(i,j) == 0;
BA210(i,j)=1; end
end end
%figure(3); %imshow(BA23)
Sistemas de visón.
30
L=[1 1 1; 1 1 1; 1 1 1]; %elemento estructurante
M=imdilate(BA210, L); %1era dilatacion
M1=imdilate(M, L); %segunda dilatacion
M2=imdilate(M1, L); % tercera dilatacion
se=strel('disk',4); ero=imerode(M2,se);
%figure(4); %imshow(ero)
s=bwlabel(ero,8);
s1=imfeature(s,'Area');
s2=imfeature(s,'Centroid');
for i=1:size(s1)
if s1(i,1).Area >50000 if s1(i,1).Area <90000
i; s1(i,1).Area; vmovil1=i; end end
end
vmovil1; pmovil1=int32(s2(vmovil1,1).Centroid); pmovil1; %contiene el valor numerico del centroide dela pieza movil
for i=1:50 for j=1:50
foto21(i+pmovil1(2),j+pmovil1(1)) = 1;
end
end
%imshow(foto21); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
Sistemas de visón.
31
%11 11 11 11 11 11 11 11 11 11 11 11 11 A=imread('11.jpg'); BA11=im2bw(A,0.2); q=size(BA11);
%figure(1); %imshow(BA3)
for i=1:q(1) for j=2200:2560
if BA11(i,j) == 0;
BA11(i,j)=1;
end
end end
%figure(2); %imshow(BA3)
q=size(BA11);
for i=1:q(1) for j=1:q(2)
if BA11(i,j) == 0;
BA211(i,j)=1; end
end end
%figure(3); %imshow(BA23)
L=[1 1 1; 1 1 1; 1 1 1]; %elemento estructurante
M=imdilate(BA211, L); %1era dilatacion
M1=imdilate(M, L); %segunda dilatacion
M2=imdilate(M1, L); % tercera dilatacion
se=strel('disk',4); ero=imerode(M2,se);
Sistemas de visón.
32
%figure(4); %imshow(ero)
s=bwlabel(ero,8);
s1=imfeature(s,'Area');
s2=imfeature(s,'Centroid');
for i=1:size(s1)
if s1(i,1).Area >50000 if s1(i,1).Area <90000
i; s1(i,1).Area; vmovil1=i; end end
end
vmovil1; pmovil1=int32(s2(vmovil1,1).Centroid); pmovil1; %contiene el valor numerico del centroide dela pieza movil
for i=1:50 for j=1:50
foto21(i+pmovil1(2),j+pmovil1(1)) = 1;
end
end
%imshow(foto21); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 A=imread('12.jpg'); BA12=im2bw(A,0.2); q=size(BA12);
%figure(1); %imshow(BA3)
Sistemas de visón.
33
for i=1:q(1) for j=2200:2560
if BA12(i,j) == 0;
BA12(i,j)=1;
end
end end
%figure(2); %imshow(BA3)
q=size(BA12);
for i=1:q(1) for j=1:q(2)
if BA12(i,j) == 0;
BA212(i,j)=1; end
end end
%figure(3); %imshow(BA23)
L=[1 1 1; 1 1 1; 1 1 1]; %elemento estructurante
M=imdilate(BA212, L); %1era dilatacion
M1=imdilate(M, L); %segunda dilatacion
M2=imdilate(M1, L); % tercera dilatacion
se=strel('disk',4); ero=imerode(M2,se);
%figure(4); %imshow(ero)
s=bwlabel(ero,8);
s1=imfeature(s,'Area');
s2=imfeature(s,'Centroid');
for i=1:size(s1)
Sistemas de visón.
34
if s1(i,1).Area >50000 if s1(i,1).Area <90000
i; s1(i,1).Area; vmovil1=i; end end
end
vmovil1; pmovil1=int32(s2(vmovil1,1).Centroid); pmovil1; %contiene el valor numerico del centroide dela pieza movil
for i=1:50 for j=1:50
foto21(i+pmovil1(2),j+pmovil1(1)) = 1;
end
end
%imshow(foto21); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%13 13 13 1313 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 A=imread('13.jpg'); BA13=im2bw(A,0.2); q=size(BA13);
%figure(1); %imshow(BA3)
for i=1:q(1) for j=2200:2560
if BA13(i,j) == 0;
BA13(i,j)=1;
end
Sistemas de visón.
35
end end
%figure(2); %imshow(BA3)
q=size(BA13);
for i=1:q(1) for j=1:q(2)
if BA13(i,j) == 0;
BA213(i,j)=1; end
end end
%figure(3); %imshow(BA23)
L=[1 1 1; 1 1 1; 1 1 1]; %elemento estructurante
M=imdilate(BA213, L); %1era dilatacion
M1=imdilate(M, L); %segunda dilatacion
M2=imdilate(M1, L); % tercera dilatacion
se=strel('disk',4); ero=imerode(M2,se);
%figure(4); %imshow(ero)
s=bwlabel(ero,8);
s1=imfeature(s,'Area');
s2=imfeature(s,'Centroid');
for i=1:size(s1)
if s1(i,1).Area >50000 if s1(i,1).Area <90000
i; s1(i,1).Area; vmovil1=i; end end
Sistemas de visón.
36
end
vmovil1; pmovil1=int32(s2(vmovil1,1).Centroid); pmovil1; %contiene el valor numerico del centroide dela pieza movil
for i=1:50 for j=1:50
foto21(i+pmovil1(2),j+pmovil1(1)) = 1;
end
end
%imshow(foto21); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 A=imread('14.jpg'); BA14=im2bw(A,0.2); q=size(BA14);
%figure(1); %imshow(BA3)
for i=1:q(1) for j=2200:2560
if BA14(i,j) == 0;
BA14(i,j)=1;
end
end end
%figure(2); %imshow(BA3)
q=size(BA14);
for i=1:q(1)
Sistemas de visón.
37
for j=1:q(2)
if BA14(i,j) == 0;
BA214(i,j)=1; end
end end
%figure(3); %imshow(BA23)
L=[1 1 1; 1 1 1; 1 1 1]; %elemento estructurante
M=imdilate(BA214, L); %1era dilatacion
M1=imdilate(M, L); %segunda dilatacion
M2=imdilate(M1, L); % tercera dilatacion
se=strel('disk',4); ero=imerode(M2,se);
%figure(4); %imshow(ero)
s=bwlabel(ero,8);
s1=imfeature(s,'Area');
s2=imfeature(s,'Centroid');
for i=1:size(s1)
if s1(i,1).Area >50000 if s1(i,1).Area <90000
i; s1(i,1).Area; vmovil1=i; end end
end
vmovil1; pmovil1=int32(s2(vmovil1,1).Centroid); pmovil1; %contiene el valor numerico del centroide dela pieza movil
for i=1:50 for j=1:50
Sistemas de visón.
38
foto21(i+pmovil1(2),j+pmovil1(1)) = 1;
end
end
%imshow(foto21); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 A=imread('15.jpg'); BA15=im2bw(A,0.2); q=size(BA15);
%figure(1); %imshow(BA3)
for i=1:q(1) for j=2200:2560
if BA15(i,j) == 0;
BA15(i,j)=1;
end
end end
%figure(2); %imshow(BA3)
q=size(BA15);
for i=1:q(1) for j=1:q(2)
if BA15(i,j) == 0;
BA215(i,j)=1; end
end end
Sistemas de visón.
39
%figure(3); %imshow(BA23)
L=[1 1 1; 1 1 1; 1 1 1]; %elemento estructurante
M=imdilate(BA215, L); %1era dilatacion
M1=imdilate(M, L); %segunda dilatacion
M2=imdilate(M1, L); % tercera dilatacion
se=strel('disk',4); ero=imerode(M2,se);
%figure(4); %imshow(ero)
s=bwlabel(ero,8);
s1=imfeature(s,'Area');
s2=imfeature(s,'Centroid');
for i=1:size(s1)
if s1(i,1).Area >50000 if s1(i,1).Area <90000
i; s1(i,1).Area; vmovil1=i; end end
end
vmovil1; pmovil1=int32(s2(vmovil1,1).Centroid); pmovil1; %contiene el valor numerico del centroide dela pieza movil
for i=1:50 for j=1:50
foto21(i+pmovil1(2),j+pmovil1(1)) = 1;
end
end
%imshow(foto21); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
Sistemas de visón.
40
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%16 16 16 16 16 16 16 166 16 16 16 16 16 16 16 16 A=imread('16.jpg'); BA16=im2bw(A,0.2); q=size(BA14);
%figure(1); %imshow(BA3)
for i=1:q(1) for j=2200:2560
if BA16(i,j) == 0;
BA16(i,j)=1;
end
end end
%figure(2); %imshow(BA3)
q=size(BA16);
for i=1:q(1) for j=1:q(2)
if BA16(i,j) == 0;
BA216(i,j)=1; end
end end
%figure(3); %imshow(BA23)
L=[1 1 1; 1 1 1; 1 1 1]; %elemento estructurante
M=imdilate(BA216, L); %1era dilatacion
M1=imdilate(M, L); %segunda dilatacion
M2=imdilate(M1, L); % tercera dilatacion
Sistemas de visón.
41
se=strel('disk',4); ero=imerode(M2,se);
%figure(4); %imshow(ero)
s=bwlabel(ero,8);
s1=imfeature(s,'Area');
s2=imfeature(s,'Centroid');
for i=1:size(s1)
if s1(i,1).Area >50000 if s1(i,1).Area <90000
i; s1(i,1).Area; vmovil1=i; end end
end
vmovil1; pmovil1=int32(s2(vmovil1,1).Centroid); pmovil1; %contiene el valor numerico del centroide dela pieza movil
for i=1:50 for j=1:50
foto21(i+pmovil1(2),j+pmovil1(1)) = 1;
end
end
%imshow(foto21); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 A=imread('17.jpg'); BA17=im2bw(A,0.2); q=size(BA17);
Sistemas de visón.
42
%figure(1); %imshow(BA3)
for i=1:q(1) for j=2200:2560
if BA17(i,j) == 0;
BA17(i,j)=1;
end
end end
%figure(2); %imshow(BA3)
q=size(BA17);
for i=1:q(1) for j=1:q(2)
if BA17(i,j) == 0;
BA217(i,j)=1; end
end end
%figure(3); %imshow(BA23)
L=[1 1 1; 1 1 1; 1 1 1]; %elemento estructurante
M=imdilate(BA217, L); %1era dilatacion
M1=imdilate(M, L); %segunda dilatacion
M2=imdilate(M1, L); % tercera dilatacion
se=strel('disk',4); ero=imerode(M2,se);
%figure(4); %imshow(ero)
s=bwlabel(ero,8);
s1=imfeature(s,'Area');
Sistemas de visón.
43
s2=imfeature(s,'Centroid');
for i=1:size(s1)
if s1(i,1).Area >50000 if s1(i,1).Area <90000
i; s1(i,1).Area; vmovil1=i; end end
end
vmovil1; pmovil1=int32(s2(vmovil1,1).Centroid); pmovil1; %contiene el valor numerico del centroide dela pieza movil
for i=1:50 for j=1:50
foto21(i+pmovil1(2),j+pmovil1(1)) = 1;
end
end
%imshow(foto21); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 A=imread('18.jpg'); BA18=im2bw(A,0.2); q=size(BA18);
%figure(1); %imshow(BA3)
for i=1:q(1) for j=2200:2560
if BA18(i,j) == 0;
Sistemas de visón.
44
BA18(i,j)=1;
end
end end
%figure(2); %imshow(BA3)
q=size(BA18);
for i=1:q(1) for j=1:q(2)
if BA18(i,j) == 0;
BA218(i,j)=1; end
end end
%figure(3); %imshow(BA23)
L=[1 1 1; 1 1 1; 1 1 1]; %elemento estructurante
M=imdilate(BA218, L); %1era dilatacion
M1=imdilate(M, L); %segunda dilatacion
M2=imdilate(M1, L); % tercera dilatacion
se=strel('disk',4); ero=imerode(M2,se);
%figure(4); %imshow(ero)
s=bwlabel(ero,8);
s1=imfeature(s,'Area');
s2=imfeature(s,'Centroid');
for i=1:size(s1)
if s1(i,1).Area >50000 if s1(i,1).Area <90000
i; s1(i,1).Area;
Sistemas de visón.
45
vmovil1=i; end end
end
vmovil1; pmovil1=int32(s2(vmovil1,1).Centroid); pmovil1; %contiene el valor numerico del centroide dela pieza movil
for i=1:50 for j=1:50
foto21(i+pmovil1(2),j+pmovil1(1)) = 1;
end
end
%imshow(foto21); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 A=imread('19.jpg'); BA19=im2bw(A,0.2); q=size(BA19);
%figure(1); %imshow(BA3)
for i=1:q(1) for j=2200:2560
if BA19(i,j) == 0;
BA19(i,j)=1;
end
end end
%figure(2); %imshow(BA3)
Sistemas de visón.
46
q=size(BA19);
for i=1:q(1) for j=1:q(2)
if BA19(i,j) == 0;
BA219(i,j)=1; end
end end
%figure(3); %imshow(BA23)
L=[1 1 1; 1 1 1; 1 1 1]; %elemento estructurante
M=imdilate(BA219, L); %1era dilatacion
M1=imdilate(M, L); %segunda dilatacion
M2=imdilate(M1, L); % tercera dilatacion
se=strel('disk',4); ero=imerode(M2,se);
%figure(4); %imshow(ero)
s=bwlabel(ero,8);
s1=imfeature(s,'Area');
s2=imfeature(s,'Centroid');
for i=1:size(s1)
if s1(i,1).Area >50000 if s1(i,1).Area <90000
i; s1(i,1).Area; vmovil1=i; end end
end
vmovil1; pmovil1=int32(s2(vmovil1,1).Centroid); pmovil1; %contiene el valor numerico del centroide dela pieza movil
Sistemas de visón.
47
for i=1:50 for j=1:50
foto21(i+pmovil1(2),j+pmovil1(1)) = 1;
end
end
%imshow(foto21); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 A=imread('20.jpg'); BA20=im2bw(A,0.2); q=size(BA20);
%figure(1); %imshow(BA3)
for i=1:q(1) for j=2200:2560
if BA20(i,j) == 0;
BA20(i,j)=1;
end
end end
%figure(2); %imshow(BA3)
q=size(BA20);
for i=1:q(1) for j=1:q(2)
if BA20(i,j) == 0;
BA220(i,j)=1; end
Sistemas de visón.
48
end end
%figure(3); %imshow(BA23)
L=[1 1 1; 1 1 1; 1 1 1]; %elemento estructurante
M=imdilate(BA220, L); %1era dilatacion
M1=imdilate(M, L); %segunda dilatacion
M2=imdilate(M1, L); % tercera dilatacion
se=strel('disk',4); ero=imerode(M2,se);
%figure(4); %imshow(ero)
s=bwlabel(ero,8);
s1=imfeature(s,'Area');
s2=imfeature(s,'Centroid');
for i=1:size(s1)
if s1(i,1).Area >50000 if s1(i,1).Area <90000
i; s1(i,1).Area; vmovil1=i; end end
end
vmovil1; pmovil1=int32(s2(vmovil1,1).Centroid); pmovil1; %contiene el valor numerico del centroide dela pieza movil
for i=1:50 for j=1:50
foto21(i+pmovil1(2),j+pmovil1(1)) = 1;
end
end