Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Medicion Con Laser Por Triangulacion PDF
Medicion Con Laser Por Triangulacion PDF
del objeto a 800mm menos un ngulo que quedara determinado por el nmero
de pixeles horizontales que se halla desplazado el punto de luz en la cmara (n-10) multiplicado por
el valor angular de un pxel.
R T D
n ). 10 (
Tcnicas Digitales III Problema de ingeniera
13
De esta forma al determinar el ngulo en el vrtice de la cmara
D
y conociendo la distancia entre
la cmara y el lser se puede determinar la distancia al de la cmara al objeto en que incide la luz
del lser.
) ( . 15
D
tg D
Como lo que hay que determinar es la altura de la caja y no la distancia de la misma a la cmara, se
corrige la ecuacin anterior teniendo en cuenta que el sistema de medicin ira colocado a 80cmde
la cinta transportadora.
) ). 10 ( ( . 15 80
R T
n tg Alt
Alt=80-15.tg(79.38-(n-10).0,071)
Con estas ecuaciones sencillas se podr analizar cualquier disposicin de cmara y lser para
cualquier tipo de cmara.
La resolucin del instrumento la da el mnimo valor de ngulo detectado por la cmara, quees el
ngulo de visin de un pxel. Para determinar la resolucin a 800 mmde distancia se le resta al
ngulo total
T
el ngulo de un pxel
R
y se calcula la distancia D
D=15.tg(
T
-
R
) =15.tg( 79,38034-0,071)=79,456
Luego si restamos esto a la medicin a 800 mm se obtiene la distancia que representa un pxel.
80-79,456=0,544 cm
Para calcular la resolucion a 200 mm de distancia (es la distancia de una caja de 60cm), se prosede
de la misma forma pero calculando con un angulo total=53,1301 igual al angulo que da una
distancia de 200 mm .
D=15.tg(
T
-
R
) =15.tg( 53,1301-0,071)=19,948
Restando a los 200 mm se obtiene la distancia que representa un pxel para medir cajas de 60 cm.
20-19,948=0,052 cm
Estos valores representan la resolucin del instrumento en cero y a fondo de escala. Se puede ver
que este aumenta la resolucin a medida que el objeto se acerca al medidor. La resolucin mnima
es de 0,544 cm midiendo a 800 mm la cual permite que se pueda medir en centmetros como lo
requiere el problema. Con esto se puede ver que con esta configuracin se cumple con los
requerimientos comprobando que esta correcta la ubicacin decmara y lser a 150 mm que se
eligi en un principio arbitrariamente.
La colocacin de la cmara y el lser se realiza en una caja de plstico rgido en la cual son fijados
en su interior cumpliendo con las caractersticas geomtricas antes mencionadas.
Tcnicas Digitales III Problema de ingeniera
14
Otras opci ones de confi guraci n.
La disposicin geomtrica de la cmara y el lser determinan las caractersticas del sistema de
medida, a continuacin se observa un grfico donde estn representadas las posibles variantes de
disposicin.
Tcnicas Digitales III Problema de ingeniera
15
En el grfico A se observan dos ngulos iguales los que representan el angular de un pixel de la
cmara, estos estn exagerados para que se puedan apreciar mejor, se observa que la distancia en la
medicin que representa un pixel es mayor mientras mas lejos se da la medicin. Como el ngulo
de un pixel es la mnima unidad que se puede medir la distancia medida por un pixel da la
resolucin en la medicin. Por esto una caracterstica intrnseca de este mtodo es que la resolucin
mnima se da cuando se mide lejos de la cmara y esta aumenta mientras la medicin se acerca a la
cmara. Se puede determinar que la resolucin de la medida cuando la posicin de la cmara y lser
no varian, es proporcional al ngulo con que rebota el rayo en el objeto, cuanto menor es ese ngulo
menor ser la resolucin.
En el grafico B se pueden observar dos configuraciones hechas con la misma cmara y separacin
al lser. Aqu en verde se representa el angular de la cmara colocada para un rango de medicin, en
rojo se representa el mismo angular pero colocado para medir una distancia mayor. Cuando se desea
medir una distancia mayor la resolucion disminuye y la distancia minima de medida aumenta.
En el grafico C se utiliza la misma cmara pero se vara la separacin de esta y el lser. Cuando esta
separacin es mayor aumenta ligeramente la resolucin y disminuye el rango de medicin.
En el grafico D se disponen dos cmaras distintas para lograr la misma distancia mxima una de
ellas tiene un angular menor (en verde) esto hace que el ngulo de un pxel sea menor aumentando
la resolucin, pero se disminuye el rango de medida.
Estos ejemplos son para cmaras con igual cantidad de pixeles. Si se utilizara una cmara con
mayor cantidad de pixeles se mejorara la resolucin en cualquiera de estos casos.
Como ejemplo calculamos otra configuracin para medir distancia hasta 2 metros con una
separacin entre el lser y la cmara de 20 cm, utilizando la misma cmara que antes.
Calculando de la misma forma que antes se determin que se podra medir desde 2 metros a 16 cm,
dando un rango de til de 180 cm. Con una resolucin de 2,4 cm
Caractersticas del i nstrumento.
Rango.
Valor absoluto de la diferencia entre los valores extremos de un intervalo de indicacin nominal
(VIM).
Como se vio anteriormente la medicin se puede realizar de 80 a 10,3 cmdando un rango de
medicin de 69,7 cmeste es limitado a 65 cm. Hay que tomar en cuenta que para la medicin de
cajas la altura 0 cm estara en el lmite de alcance del medidor 80 cm y las cajas ms altas de 60 cm
cuando este mide a 20 cmde distancia.
Resolucin.
Mnima variacin de la magnitud medida que da lugar a una variacin perceptible de la indicacin
correspondiente (VIM).
Se expresa en general como un porcentaje del Lmite Superior de medicin del instrumento (valor a
fondo de escala del mismo). En este caso el sensor es capaz de medir con un rango de 65cmy
discriminar 1 cm. Por esto la resolucin porcentual a fondo de escala es de 1,53 %.
Tcnicas Digitales III Problema de ingeniera
16
Linealidad.
Capacidad de un instrumento de medicin para proporcionar una indicacin que tenga una relacin
lineal con una magnitud determinada distinta de una magnitud de influencia (IEV 311-06-05).
Se suelen expresar en valor porcentual de la mxima desviacin respecto de la salida lineal en todo
el rango del instrumento respecto del valor del fondo de escala del mismo.
Para analizar la linealidad se colocan objetos a una distancia del punto cero de medicin (a 80 cm
de distancia a el sensor) estos son colocados de a 5 cmmedidos con una resolucin mayor que la
del instrumento (mm) y se toman datos de la medicin del instrumento.
Lineal Medido
0 0
5 5
10 10
15 15
20 20
25 25
30 30
35 35
40 40
45 45
50 50
55 54
60 59
65 64
Como la desviacin mxima respecto de lo lineal es de 1cmcon un fondo de escala de 65cmla
linealidad porcentual a fondo de escala es 1,53 %.
Tiempo de respuesta.
Intervalo de tiempo comprendido entre el instante en que un valor de la magnitud de entrada de un
instrumento o sistema de medida sufre un cambio brusco entre dos valores constantes especificados,
y el instante en que la indicacin correspondiente se mantiene entre dos limites especificados,
alrededor de su valor final en rgimen estacionario (VIM).
Para determinarla se procedi a grabar un video del funcionamiento del programa mientras se
medan objetos de diferentes caractersticas y diferentes tamaos, luego evaluando la grabacin de
video cuadro por cuadro se pudo determinar el tiempo mximo que le requiri al sensor realizar la
medicin fue de 0,3 s.
Por lo tanto el tiempo de respuesta se estima en 0,3 s.
Repetibilidad.
Precisin de medida bajo un conjunto de condiciones de repetibilidad (VIM).
Es la capacidad de un instrumento de repetir la salida cuando se llega a la medicin en sucesivas
ocasiones bajo exactamente las mismas condiciones.
Tcnicas Digitales III Problema de ingeniera
17
Un detalle muy importante de esto es que se debe exigir que la medicin se deba realizar con la
variable en sentido creciente o decreciente pero no en ambos sentidos, pues en ese caso la medicin
queda influida por la histresis.
Como otros parmetros de especificacin de los instrumentos se acostumbra a especificar la
repetibilidad como un valor porcentual de la medicin o bien del fondo de escala del instrumento.
Las condiciones de repetibilidad necesitan el mismo procedimiento de medicin, el mismo
observador, el mismo instrumento de medicin utilizado en las mismas condiciones, el mismo lugar
y repeticin dentro de un perodo de tiempo corto.
Para probar esto se midieron tres objetos 5 veces cada uno usando el mismo mtodo, estas
mediciones arrojaron el mismo valor para cada objeto individualmente con lo que se establece que
la repetibilidad es de 0 cm. Estos resultados se dan porque este instrumento mide con una
resolucin acotada.
Objeto 1 Objeto 2 Objeto 3
1 medicin 5 cm 18 cm 43 cm
2 medicin 5 cm 18 cm 43 cm
3 medicin 5 cm 18 cm 43 cm
4 medicin 5 cm 18 cm 43 cm
5 medicin 5 cm 18 cm 43 cm
Referencias de las definiciones: Vocabulario internacional de metrologa VIM JCGM 200:2008
Vocabulario Electrotcnico Internacional (IEV) IEC 60050
Resumiendo, las caractersticas metrolgicas del instrumento son las siguientes:
Rango 65 cm
Resolucin 1 cm
Tiempo de respuesta 0,3 s
Linealidad 1 cm
Repetibilidad 0 cm
Factores que i nfluyen en l a medi ci n.
Influencia de la superficie y color:
El color del objeto a medir influye en la medicin, los colores oscuros necesitan una potencia de
lser mayor para que se pueda ver bien el punto de luz, esto produce un inconveniente cuando las
superficies son claras y se ubican cerca de la cmara ya queestas reflejan mucho ms esa luz y
producen reflexiones internas en la cmara que complican o imposibilitan la medicin. Por esto este
sistema funcionara mejor con objetos de colores similares. El problema surge cuando los objetos
medidos se alternan entre claros y oscuros ya que para los oscuros que se ubican lejos se necesita
ms potencia de lser y los objetos claros que se ubican cerca menos potencia.
Como se mencion anteriormente con este sistema no se puede medir objetos con superficies
reflectantes.
En la siguientes imgenes se observa primero el punto de luz de correcta potencia sobre una
superficie oscura, en la segunda imagen se ve como aumenta el punto de luz y su reflejo interno en
Tcnicas Digitales III Problema de ingeniera
18
la cmara debido a una superficie clara cercana al sensor enesta situacin la potencia resulta un
poco excesiva.
La inclinacin de la superficie no presenta inconvenientes ya que estadeformar el punto de luz
pero el centro no se alterara. Se observa en las imgenes siguientes primero un objeto con superficie
perpendicular y luego uno inclinado.
Temperatura:
Todo dispositivo tiene especificado un rango de temperatura de operacin, en este caso est
limitado principalmente por el rango de temperatura de la cmara o sensor, ya que el lser es de
baja potencia y no necesita disipar calor, no teniendo mayor inconveniente con la temperatura, el
cuerpo del sensor construido de plstico resistente tampoco sufre cambio por la temperatura en
estos rangos. No se tienen datos de temperatura de la cmara que se utiliz, pero cmaras similares
tienen rango de temperatura de -20 a 50 C.
Imposibilidad de visin:
Como este sistema basa su funcionamiento en la imagen tomada por una cmara, sta debe poder
tomar bien la imagen si en el ambiente donde se va a medir hay mucho polvo, vapor, humo u otro
factor que impida la correcta visualizacin este puede funcionar mal.
Descri pcin del programa.
Mediante un programa generado en DEV-C++y utilizando las libreras de visin OpenCV, se
determinara en qu pxel se encuentra el centro del punto de luz generado por el lser y calcular la
altura de la caja a travs de ecuaciones anteriores.
El programa comienza realizando la captura de la cmara Web en 640 x 480 pixeles, luego esta
imagen se convierte a escala de grises, lo cual es necesario para realizar las acciones que luego se
llevaran a cabo.
Luego se aplica la funcin que cvThreshold() la cual genera una imagen binaria, a travs de un
umbral de luminosidad, este valor es comparado con la imagen, los pxeles con una luminosidad
mayor o igual a este valor sonrepresentados en blanco, y si el valor es menor se representan en
negro.
Tcnicas Digitales III Problema de ingeniera
19
Para que se pueda detectar el punto de luz que produce el lser sobre las superficies a medir este
debe tener una luminosidad mayor a la del ambiente, para lograr esto con una iluminacin normal
se requiere un lser de baja potencia (<5mW) el cual no genera inconvenientes a la vista.
El umbral de luminosidad puede ser ajustado con una barra deslizante, esto es necesario porque este
valor debe fijarse entre la luminosidad ambiental y la del punto de luz que produce el lser, cuando
esto ocurre la imagen resultante es totalmente negra y se observa el punto de luz lser en blanco,
quedando de esta forma luego se podr determinar el centro del punto de luz.
En las imgenes que siguen se ve primero una imagen con un umbral muy bajo que provoca que
parte del fondo se detecte como punto luminoso lo cual impedir la deteccin y medicin, luego en
la otra imagen se ve un umbral elegido correctamente de forma que solo se destaca en blanco el
punto de luz producido por el lser.
Para poder determinar el centro del punto de luz este es aproximado por elipses, cada contorno de la
imagen binaria es representado por una elipse la cual tiene los ejes y la inclinacin adaptada al
contorno.
Antes de esto es necesario encontrar los contornos de la imagen: a cada seccin de la imagen donde
cambia de negro a blanco se laadjudica un contorno. Esto se lleva a cabo con la funcin
cvFindContours().
Luego de esto se puede aproximar por elipses, quedando elipses que se adaptan al contorno de las
zonas blancas de la imagen.
Si el sistema est bien calibrado solo el punto de luz lser quedara en blanco en la imagen y estar
representado por una elipse. La ventaja de trabajar con elipses es que ellas estn representadas por
su ancho alto y su centro, en pixeles de esta forma solo se necesita consultar estos valores para
determinar el centro del punto luminoso.
Se puede dar el caso que aparezca ms de una elipse encontrada, esto puede ser por una mala
calibracin de luz, reflejos en otras superficies, reflejos internos de la cmara, o mucha potencia de
iluminacin lser. En este caso la medicin no es posible.
Para solucionar algunos de estos problemas la elipse encontrada deber tener la dimensin correcta
(mayor a 2 y menor a 60 pixeles), y la ubicacin de la misma se debe dar en un determinado lugar
del cuadro (de 220 a 260 pixeles verticales).
Tcnicas Digitales III Problema de ingeniera
20
En caso de detectarse ms de una elipse o ninguna (por ejemplo si no est encendido el lser) el
sistema no efectuar la medicin y colocar un leyenda de ERROR n donde n es el nmero de
elipses encontradas (0 >2).
Si se encuentra una sola elipse se realiza el clculo y se muestra la distancia en cm, esta es limitada
a 65 cm, en caso de superarse se indicara (-----).
A continuacin se muestran tres imgenes del funcionamiento del programa, la primera sin objetos
a medir, y las otras dos con objetos de 24 y 53cmrespectivamente.
Tcnicas Digitales III Problema de ingeniera
21
Este sistema debe ser capaz decalibrar el cero, es decir que si por alguna razn el sensor no se
encuentra a 800 mm de la cinta transportadora este no indicara 0 a pesar de que no haya objetos
presentes. Para solucionar esto se puede calibrar a travs del men, se deber hacer que el sistema
mida sin presencia de objeto y presionando una tecla este indicara cero.
El programa mostrara dos ventanas una de texto en la cual se mostrara la medida o la indicacin de
error, y en la otra se mostrara la imagen tomada por la cmara, con una elipse alrededor del punto
lser y adems se indicara su punto central. En caso de error este se indicara en la ventana de texto
y si este es producido por la deteccin de ms de una elipse esta se dibujaran en la imagen en color
rojo.
Presionando la tecla mse accede a un men, el cual permitir:
Presionando q : calibrar a cero presionando luego la tecla w si no se efecta la medicin en ese
momento se indica que no se pudo calibrar.
Presionando c : se acceder a la calibracin de umbral, aqu se abre una nueva ventana donde se
muestra la imagen binaria luego de la accin de umbral, esta ventana posee una barra deslizante la
cual configura el valor de umbral, de esta forma se puede calibrar la imagen para que solo aparezca
en blanco el punto de luz generado por el lser para que de esta forma se produzca la deteccin
correctamente.
Luego se indica que la accin termina presionando la tecla k donde se cierra la nueva ventana
abierta.
Presionando Esc : se cierra el programa.
Si por algn defecto de construccin o algn otro inconveniente el ngulo de la cmara respecto del
lser no es el correcto se ver afectada la medicin debido a que una referencia a 80 cmno indicara
el pxel 10 como fue el diseo previo. Para solucionar esto se realiza un men que permite calibrar
el instrumento, este men no est destinado para el usuario comn si no para efectuar una
calibracin de fbrica o si surge algn malfuncionamiento. Para esto se oprimir la tecla p y luego de
confirmar se procede a colocar un objeto a 80 cm de distancia y calibrar el instrumento. Esto se
lleva a cabo detectando el pxel del centro del punto de luz a 80 cm y este se incorpora en la
ecuacin que da la medicin reemplazando el nmero 10 que es el pxel inicial.
Tanto el valor de umbral como el que permite calibrar a cero y el ngulo son guardados en el disco
rgido, con el fin de conservar la configuracin luego de cerrar el programa.
Tcnicas Digitales III Problema de ingeniera
22
RESULTADOS DE LAS PRUEBAS
Al comienzo se calcul el angular de la cmara midiendo el tamao del cuadro a una distancia
determinada lo que dio un resultado de 45,44, esto dividido 640 pixeles dio un valor angular de un
pxel
R
=0,071, una vez con el programa en funcionamiento se vio que la medicin se haca ms
imprecisa a medida que el punto de luz se desplazaba ms hacia la derecha que es cuando ms
pixeles son involucrados en la medicin. Por esto se crey que el valor del ngulo que representa
cada pxel no era lo suficientemente preciso, para calcularlo nuevamente se colocaron objetos a
distancias conocidas y se observ en que pxel se ubicaba el centro del punto de luz, luego de los
clculos se obtuvo un valor de
R
=0,068 lo que mejoro la medicin.
Alt=80-15.tg(79.38-(n-10).0,068)
Esto cambia la resolucin mnima a 0,5208 cm, prcticamente igual a la antes calculada.
En un comienzo se pensaba que el lser (dentro de su potencia de trabajo) mientras ms luz
produzca mejor funcionaria el sistema, luego se vio que esto era un inconveniente cuando el objeto
se ubicaba cerca de la cmara, porque por reflexiones internas de la cmara el punto de luz se
deformaba mucho imposibilitando la medicin, esto se solucion bajando la potencia del lser
mediante un potencimetro que permite ajustar su intensidad a un nivel correcto.
CONCLUSIONES
Primeramente, plantearme la resolucin de un problema me permiti investigar varias soluciones
para resolverlo, interiorizndome de varios mtodos y tecnologas en la medicin de distancia sin
contacto, para luego poder decidir la mejor forma de llevarlo a cabo. El realizar el proyecto de esta
forma (utilizar visin para medir) me permiti utilizar e informarme sobre tcnicas de visin y
conocer la versatilidad de estos sistemas.
Tcnicas Digitales III Problema de ingeniera
23
ANEXOS:
LISTADOS DE PROGRAMAS
#i ncl ude "cv. h"
#i ncl ude "hi ghgui . h"
#i ncl ude <st di o. h>
#i ncl ude <ct ype. h>
#i ncl ude <i ost r eam>
#i ncl ude <st dl i b. h>
#i ncl ude <coni o. h>
usi ng namespace st d;
char c=8, key=0, f l ag=' k' ;
unsi gned i nt W, H;
CvScal ar s;
f l oat di st =0, di st 1=0, cal i b=0, pi c=0. 0012;
i nt i =20, j =20, a=0, b=0, t i =230, p1, p2, wi dt h, hei ght , count er = 0, nos, t gw, pi x=11;
i nt r 1=255, g1=255, b1=255, di st d, cal =0, cent er x=0, cent er y=0;
doubl e bl , r e, gr , f ps, sec;
st r uct dat os{i nt t r e; i nt pi ; f l oat cer ; };
/ / Var i abl e donde se al mazenar a el f r ame de l a webcam.
I pl I mage *f r ame = 0, *f r ame1=0;
CvSeq* cont our s = 0;
mai n( )
{
st r uct dat os dat a;
FI LE *f ;
f = f open( "ar chi vo. t xt ", "r ") ;
f r ead( &dat a, si zeof ( dat a) , 1, f ) ; / / l ee dat os de di sco
f cl ose( f ) ;
t i =dat a. t r e;
cal i b=dat a. cer ;
pi x=dat a. pi ;
CvCapt ur e* capt ur e = 0;
capt ur e = cvCapt ur eFr omCAM( 6) ;
i f ( ! capt ur e )
{ f pr i nt f ( st der r , "No se puede i ni ci al i zar l a capt ur a. . . \ n") ;
r et ur n - 1;
}
cvNamedWi ndow( "I magen", 0) ; / / cr ea vent ana a t amao def i ni do
cvNamedWi ndow( "I magen1", 0 ) ;
cvCr eat eTr ackbar ( "Umbr al ", "I magen", &t i , 255, 0 ) ;
f r ame = cvQuer yFr ame( capt ur e ) ;
wi dt h = f r ame- >wi dt h;
hei ght = f r ame- >hei ght ;
Tcnicas Digitales III Problema de ingeniera
24
f r ame1 = cvCr eat eI mage( cvSi ze( wi dt h, hei ght ) , I PL_DEPTH_8U, 1 ) ;
f or ( ; ; )
{
f r ame = cvQuer yFr ame( capt ur e ) ;
CvMemSt or age* st or age = cvCr eat eMemSt or age( 0) ;
i f ( f l ag==' z' ) cvShowI mage( "I magen", f r ame ) ;
cvCvt Col or ( f r ame, f r ame1, CV_RGB2GRAY) ; / / i magen a escal a de gr i ses
i f ( f l ag==' x' ) cvShowI mage( "I magen", f r ame1 ) ;
cvThr eshol d( f r ame1, f r ame1, t i , 255, 0) ;
i f ( f l ag==' c' )
{ cvCr eat eTr ackbar ( "Umbr al ", "I magen", &t i , 255, 0 ) ;
cvShowI mage( "I magen", f r ame1 ) ;
pr i nt f ( " opr i ma k par a sal i r \ n") ;
}
CvSeq* cont our ;
/ / Cr ea est r uct ur a di nami ca y secuenci a.
st or age = cvCr eat eMemSt or age( 0) ;
cont our =
cvCr eat eSeq( CV_SEQ_ELTYPE_POI NT, si zeof ( CvSeq) , si zeof ( CvPoi nt ) , st or age) ;
/ / Encuent r a t odos l os cont or nos.
cvFi ndCont our s( f r ame1, st or age, &cont our , si zeof ( CvCont our ) , CV_RETR_LI ST,
CV_CHAI N_APPROX_NONE, cvPoi nt ( 0, 0) ) ;
i f ( f l ag==' v' ) cvShowI mage( "I magen", f r ame1 ) ;
i nt el i =0;
/ / Di buj a cont or nos y apr oxi ma por el i pses.
f or ( ; cont our ; cont our = cont our - >h_next )
{
i nt count = cont our - >t ot al ; / / numer o de punt os del cont or no.
CvPoi nt cent er ;
CvSi ze si ze;
CvBox2D box;
/ / par a ( cvFi t El l i pse_32f ) numer o de punt os debe ser mayor o i gual a 6.
i f ( count < 6 )
cont i nue;
CvMat * poi nt s_f = cvCr eat eMat ( 1, count , CV_32FC2 ) ;
CvMat poi nt s_i = cvMat ( 1, count , CV_32SC2, poi nt s_f - >dat a. pt r ) ;
cvCvt SeqToAr r ay( cont our , poi nt s_f - >dat a. pt r , CV_WHOLE_SEQ ) ;
cvConver t ( &poi nt s_i , poi nt s_f ) ;
/ / Aj ust a l a el i pse a el cont or no act ual .
box = cvFi t El l i pse2( poi nt s_f ) ;
/ / Convi er t e l os dat os de l a el i pse de f l oat a r epr esent aci on i nt eger .
Tcnicas Digitales III Problema de ingeniera
25
cent er = cvPoi nt Fr om32f ( box. cent er ) ;
si ze. wi dt h = cvRound( box. si ze. wi dt h*0. 5) ;
si ze. hei ght = cvRound( box. si ze. hei ght *0. 5) ;
i f ( f l ag==' b' )
{
cvEl l i pse( f r ame1, cent er , si ze, - box. angl e, 0, 360, CV_RGB( 255, 255, 255) , 1,
CV_AA, 0) ;
cvShowI mage( "I magen", f r ame1 ) ;
}
i f ( si ze. wi dt h>2 && si ze. hei ght >2 && si ze. hei ght <60 && si ze. wi dt h<60 &&
cent er . y>220 &¢ er . y<265 )
{ el i ++;
cent er x=cent er . x;
cent er y=cent er . y;
i f ( el i ==1)
{
di st =80- cal i b- ( 15) *t an( 1. 387864- ( cent er . x- pi x) *pi c) ;
di st d=( i nt ) di st ;
}
/ / di buj a el i pse y cent r o
cvEl l i pse( f r ame, cent er , si ze, - box. angl e, 0, 360, CV_RGB( r 1, g1, b1) , 1,
CV_AA, 0) ;
cvCi r cl e( f r ame, cvPoi nt ( cent er . x, cent er . y) , 1, CV_RGB( 255, 0, 0) , - 1, 8, 0) ;
}
cvRel easeMat ( &poi nt s_f ) ;
}
syst em( "cl s") ;
i f ( el i ==1)
{ i f ( di st d<66)
{
pr i nt f ( " %d cm \ n", di st d) ;
r 1=100; g1=0; b1=255;
}
el se pr i nt f ( "- - - - - \ n") ;
}
el se
{ pr i nt f ( "ERROR %d \ n", el i ) ;
r 1=255; g1=25; b1=0;
}
i f ( c==' q' ) { cal =1; cal i b=0; }
i f ( cal ==1 && el i ==1) pr i nt f ( "Opr i ma w par a cal i br ar a 0 \ n ") ;
i f ( cal ==1 && el i ! =1)
{ pr i nt f ( "No se puede Cal i br ar opr i ma w \ n ") ;
i f ( c==' w' && cal ==1) cal =0;
}
i f ( cal ==1 && el i ==1 && c==' w' )
{ cal i b=di st ;
cal =0;
}
Tcnicas Digitales III Problema de ingeniera
26
i f ( cal ==1 && c==' e' ) cal =0;
i f ( c==' p' ) { cal =2; }
i f ( cal ==2) pr i nt f ( " Si est a segur o de cal i br ar angul o pr eci one o \ n "
"si no pr eci one l " ) ;
i f ( cal ==2 && c==' o' ) cal =3;
i f ( cal ==2 && c==' l ' ) cal =0;
i f ( cal ==3 && el i ==1) pr i nt f ( "Col oque obj et i vo a 80 cmy opr i ma i par a
cal i br ar angul o \ n") ;
i f ( cal ==3 && el i ! =1)
{ pr i nt f ( "No se puede Cal i br ar angul o opr i ma i \ n ") ;
i f ( c==' i ' && cal ==3) cal =0;
}
i f ( cal ==3 && el i ==1 && c==' i ' )
{
pi x=cent er x;
cal =0;
}
i f ( cal ==3 && c==' u' ) {pi x=11; cal =0; }
cvShowI mage( "I magen1", f r ame ) ;
cvRel easeMemSt or age( &st or age ) ;
i f ( f l ag==' k' )
{
cvDest r oyWi ndow( "I magen") ;
f l ag=0;
}
i f ( f l ag==' m' )
{
pr i nt f ( " cal i br ar umbr al c \ n ") ;
pr i nt f ( "cal i br ar cer o q \ n ") ;
pr i nt f ( "Sal i r esc\ n ") ;
}
c = cvWai t Key( 1) ; / / ent r ada de t ecl ado
i f ( c! =- 1) f l ag=c;
i f ( c==27) br eak;
}
dat a. t r e=t i ;
dat a. cer =cal i b;
dat a. pi =pi x;
f = f open( "ar chi vo. t xt ", "w") ;
f wr i t e( &dat a, si zeof ( dat a) , 1, f ) ; / / guar da dat os en di sco
f cl ose( f ) ;
cvRel easeCapt ur e( &capt ur e ) ; / / Li ber a l a memor i a ut i l i zada por l a var i abl e
capt ur e.
cvDest r oyWi ndow( "i magen") ; / / Dest r uye l as vent anas.
cvDest r oyWi ndow( "i magen1") ;
}