You are on page 1of 16

UNIVERSIDAD NACIONAL MAYOR DE SAN

MARCOS
(Universidad del Per, DECANA DE AMERICA)

FACULTAD DE INGENIERIA
ELECTRONICA Y ELECTRICA

Control de calidad productiva con una


faja transportadora aplicando mtodos
numricos

CURSO: METODOS NUMERICOS

PROFESOR: ING. HERNAN VILLAFUERTE

INTEGRANTES:

BRUNO MARQUEZ, AGUSTIN 14190004

CAYCHO AVALOS, ARTURO 14190075

LIMA PERU

AO 2016
PLANTEAMIENTO DEL PROBLEMA:

Mejor dicho planteamiento para dar solucin a una necesidad


comn en nuestro ambiente, en este caso trataremos de disear
un dispositivo de Banda Transportadora de objetos con el fin de
transportar determinado objeto de un lugar a otro,
seleccionando y clasificando de esta manera distintos artculos
para nuestro uso cotidiano.

Objeto del proyecto:

El objetivo principal del presente proyecto, es la elaboracin de


un programa para disear una banda transportadora mediante
GUIDE de MatLab, conforme a las normas establecidas. Otro
objetivo, por el que se ha desarrollado este software, es ayudar
a los estudiantes de Ingeniera en el clculo y diseo de una cinta
transportador, para as facilitarles el entendimiento de parte del
temario de la asignatura de "Transportes en la Ingeniera".

El programa se ha elaborado, para que el usuario intuitivamente,


con un mnimo de conocimiento, pueda calcular diferentes casos
que se dan a la hora de disear una banda transportadora. Como
se explicar ms adelante, el propio programa dispondr de una
serie de "botones" los cuales ofrecen cierta informacin al
usuario para que en todo momento conozca qu variables son
dependientes unas de otras, cules son las que son establecidas
por el fabricante y cules deben ser introducidas por el alumno.
Este programa no solo se ha realizado con fines acadmicos
exclusivos para estudiantes, sino que tambin es vlido para
aquello usuarios que deseen realizar un estudio de los
componentes y parmetros necesarios para el desarrollo y diseo
de una banda transportadora, permitiendo as un uso ms
extendido. Otro de los objetivos del presente Proyecto Fin de
Carrera, ha sido el propio aprendizaje del entorno de
programacin GUIDE de MatLab, junto al estudio realizado para
llevar a cabo el conjunto de elementos que componen la banda
transportadora

FUNCIONAMIENTO DE LA BANDA:

El funcionamiento de nuestra banda Transportadora comienza


cuando se acciona un Interruptor (Switch) que enciende nuestra
banda la cual se encarga de transportar los objetos que nosotros
queramos poner de ejemplo, despus se colocan estos objetos
sobre la Banda, al ir pasando los objetos sobre la banda se
accionar el pistn de manera manual con un botn pulsador para
sacar de la lnea aquellos objetos no deseados o que no cumplan
con nuestros requisitos ( Ya sea color, forma, tamao, dimensin,
etc) y la rampa se encarga por ltimo de que los objetos no
provoquen desorden al salir de la cinta.
Proyecto:

Imgenes digitales
Podramos definir una imagen como una funcin
bidimensional f(x y) donde x e y son las coordenadas
espaciales, y el valor de f en cualquier par de coordenadas (x
y) es la intensidad de la imagen en dicho punto.

Una imagen puede ser continua con respecto a x e y, y


tambin en intensidad (imagen analgica). Convertir esta
imagen a formato digital requiere que tanto las coordenadas
como la intensidad sean digitalizadas. Digitalizar las
coordenadas se llama muestrear, mientras que digitalizar la
intensidad se denomina cuantizacin. Entonces, cuando
todas las cantidades son discretas, llamamos a la imagen
una imagen digital.

Convenciones en el establecimiento de
las coordenadas
El resultado de muestrear y cuantizar es una matriz de
nmeros reales. El tamao de la imagen es el nmero de
filas por el nmero de columnas, M N. La indexacin de la
imagen sigue las convenciones siguientes. La indexacin
habitual es

Modelo matemtico:

( )
a(0,0) a(0,1) a (0, N 2) a( 0, N 1)
a (1,0) a(1,1) a(1, N 2) a (1, N 1)

a( M 1,0) a(M 1,1) a ( M 1, N 2) a( M 1, N 1)

Mientras que matlab indexa es de la forma siguiente:


( )
a(1,1) a(1,2) a(1, N1) a(1, N )
a(2,1) a(2,2) a(2, N1) a(2, N )

a( M , 1) a( M , 2) a ( M , N1) a(M , N )

Lectura, visualizacin y escritura de


imgenes.
Para leer imgenes contenidas en un archivo el ambiente
de matlab se utiliza la funcin inread, cuya sintaxis es:

imread ( ' nombre del archiv o' )

Donde el nombre del archivo es una cadena de caracteres


conteniendo el nombre completo de la imagen con su
respectiva extensin. Los formatos que soporta matlab son
los mostrados en la tabla 2.1.

Para introducir una imagen guardada en un archivo con


alguno de los formatos especificados en la tabla anterior
solo tiene que usarse la funcin inread y asignar su
resultado a una variable que representa a la imagen (de
acuerdo a la estructura,figura2.2 para representar escala a
grises y figura 2.3 para RGB)
FIGURA 2.2-Escala de grises

FIGURA 2.3-RGB
SUB MUESTREO DE IMGENES

En ocasiones es necesario hacer clculos que requieren


procesar por completo la imagen, en estos casos hacerlo
sobre la resolucin original de la imagen sera muy costoso.
Una alternativa ms eficiente, resulta el sub-muestreo de la
imagen, significa generar una imagen a partir de tomar
muestras peridicas de la imagen original, de tal forma que
esta quede ms pequea. Si se considera la imagen I(m,n)
definida como:

Y se desea sub-muestrear la imagen para obtener la mitad de


su tamao original, asi la nueva imagen quedara compuesta
por los elementos tomando uno si otro y otro no de la imagen
original:
3.2. Funciones para la extraccin de bordes

En visin computacional es de utilidad para hacer


reconocimiento de objetos o bien para segmentar regiones,
extraer los bordes de objetos (que en teora delimitan sus
tamaos y regiones). La funcin edge da la posibilidad de
obtener los bordes de la imagen. La funcin permite
encontrar los bordes a partir de dos diferentes algoritmos que
pueden ser elegidos, canny y sobel. El formato de esta
funcin es:

Figura 3.3: Imagen resultado de la aplicacin del algoritmo de canny.

ImageT=edge(ImageS, algoritmo);

Donde ImageT es la imagen obtenida con los bordes


extrados, ImageS es la variable que contiene la imagen en
escala de grises a la cual se pretende recuperar sus bordes,
mientras que algoritmo puede ser uno de los dos canny o
sobel. De tal forma que si a la imagen en escala de grises
contenida en la variable imagegray se le quieren recuperar
sus bordes utilizando en algoritmo canny se escribira en lnea
de comandos:

> >ImageR=edge(imagegray,canny);

La figura 3.3 muestra un ejemplo del uso de esta funcin.


El tipo de dato habitual para una imagen es uint 8, es decir,
8
un entero representado en 8 bits. Esto nos da 2 =256

valores que se distribuyen en el rango de [0, 255] para cada


pixel.

Para la visualizacin podemos usar imshow, que tiene varias


opciones
figure,imshow(a)
figure,imshow(a,'InitialMagnification',50,'Border','tight')
Ahora la imagen es una matriz. Podemos extraer porciones de
ella. Las rdenes image e imagesc son ms flexibles a la
hora de visualizar
lena_eye=a(252:284,318:350);
figure,imagesc(lena_eye)
colormap(gray)
axis image % Establece la relacin de escala entre
ejes
% para que los pxeles sean cuadrados
title('El ojo derecho de Lena')

Y podemos guardarlo en el directorio de trabajo


usando imwrite
imwrite(lena_eye,'lena_eye.png');

El siguiente comando muestra informacin de la imagen


imfinfo('lena_gray_512.tif')
ans =
Filename: [1x85 char]
FileModDate: '28-ago-2008 15:03:30'
FileSize: 262598
Format: 'tif'
FormatVersion: []
Width: 512
Height: 512
BitDepth: 8
ColorType: 'grayscale'
FormatSignature: [73 73 42 0]
ByteOrder: 'little-endian'
NewSubFileType: 0
BitsPerSample: 8
Compression: 'Uncompressed'
PhotometricInterpretation: 'BlackIsZero'
StripOffsets: [32x1 double]
SamplesPerPixel: 1
RowsPerStrip: 16
StripByteCounts: [32x1 double]
XResolution: 72
YResolution: 72
ResolutionUnit: 'Inch'
Colormap: []
PlanarConfiguration: 'Chunky'
TileWidth: []
TileLength: []
TileOffsets: []
TileByteCounts: []
Orientation: 1
FillOrder: 1
GrayResponseUnit: 0.0100
MaxSampleValue: 255
MinSampleValue: 0
Thresholding: 1
Offset: 262152

Tipos de imgenes y conversiones


Existen tres tipos principales de imgenes:

Imagen de intensidad es una matriz de datos cuyos


valores han sido escalados para que representen
intensidades de una escala de grises. Cuando los
elementos de una imagen de intensidad son de clase
uint 8 (enteros almacenados en 8 bits) o de clase uint
16 (enteros almacenados en 16 bits), pueden almacenar,
8
respectivamente, 2 =256 valores en el
16
rango [0,255] o 2 =65536 valores en el rango [0,65535].
Si la imagen es de clase double, los valores son nmeros
en punto flotante (que se almacenan en 32 bits). En
este ltimo caso, los valores se toman en el rango de [0
1] por convencin.

La imagen binaria es una imagen en blanco y negro.


Cada pixel tiene asignado un valor lgico de 0 1.

La imagen en color es como la imagen de intensidad


pero tiene tres canales, es decir, a cada pixel le
corresponden tres valores de intensidad (RGB) en lugar
de uno.

Cuando realizamos transformaciones matemticas de


imgenes, a menudo necesitamos que la imagen sea de
tipo double. Pero cuando la leemos y almacenamos
ahorramos espacio usando codificacin entera. Podemos usar
las rdenes siguientes

im2uint8: de cualquier tipo a uint 8,

im2double: de cualquier tipo a double,

im2bw: de cualquier tipo a logical,

rgb2gray: RGB color a gray.


a1=lena_eye(1:5,1:5)
a2=im2double(a1)
b1=eye(5)
b2=im2bw(b1)
whos a1 a2 b1 b2
imagesc(b2)
a1 =
186 188 193 195 197
186 187 193 189 194
190 186 188 186 192
192 190 191 190 193
190 187 189 192 192
a2 =
0.7294 0.7373 0.7569 0.7647 0.7725
0.7294 0.7333 0.7569 0.7412 0.7608
0.7451 0.7294 0.7373 0.7294 0.7529
0.7529 0.7451 0.7490 0.7451 0.7569
0.7451 0.7333 0.7412 0.7529 0.7529
b1 =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
b2 =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
Name Size Bytes Class Attributes
a1 5x5 25 uint8
a2 5x5 200 double
b1 5x5 200 double
b2 5x5 25 logical

Algoritmo en matlab:

clc,clear all;

%%%DETECCIN DE OBJETOS

imaqhwinfo

cam=imaqhwinfo;

cam.InstalledAdaptors

vid=videoinput('winvideo',1);

preview(vid); %visualizar camara


%CONFIGURACIN

for T=1:100

im=getsnapshot(vid); %foto instantanea

[b, num]=CapBinaria(im); %Obtener imagen en FORMATO


BINARIO

[B,L]= bwboundaries(b,'holes'); %Agujeros negros

figure(2)

fill=imfill(L,'holes'); %LLenar agujeros

Ibw = imfill(fill,'holes');

[Ilabel, Ne]= bwlabel(Ibw); %Ne numero de obejtos


blancos

stat = regionprops(Ilabel, 'centroid');


%Obtener(Area,Centroide,Limites)

imshow(im)

hold on

for x = 1: numel(stat)

if numel(stat)<2

plot(stat(x).Centroid(1),stat(x).Centroid(2),'x');
xc=stat(x).Centroid(1);

yc=stat(x).Centroid(2);

radius=25;

theta = 0:0.01:2*pi;

Xfit = radius*cos(theta) + xc;

Yfit = radius*sin(theta) + yc;

plot(Xfit, Yfit, 'y', 'LineWidth', 4);

fprintf('\n--------OBJETO DETECTADO--------\n');

fprintf('\nPosicion:\n');

fprintf('Abscisa%10.3f\n',xc)

fprintf('Ordenada%10.3f\n',yc)

end

end

pause(0.05);

end

You might also like