Anda di halaman 1dari 19

ESCUELA POLITECNICA NACIONAL

MAESTRIA EN EFICIENCIA ENERGTICA

MATEMTICAS APLICADAS Y PROGRAMACIN

PROGRAMA PARA OBTENER EL CONJUNTO DE PUNTOS DE UNA CURVA DADA, EN COORDENADAS (X,Y)

Integrantes: Rommel Castillo Wilson Trvez Pablo Vsquez

MAYO - 2013

1) TITULO: PROGRAMA PARA OBTENER EL CONJUNTO DE PUNTOS DE UNA CURVA DADA, EN COORDENADAS (X,Y)
2) PLANTEAMIENTO DEL PROBLEMA

a) Objetivos Realizar una funcin en Matlab para transformar una curva en un conjunto de puntos de forma automatizada. Crear la Interfaz Grfica de Usuario (GUI) para facilitar el uso del programa. b) Descripcin del problema Uno de los mayores componentes en cualquier diseo industrial y actividades de produccin es una adecuada documentacin y en este contexto, los dibujos de ingeniera juegan un papel muy importante. Siendo de naturaleza grfica, estos dibujos representan informacin compleja de una manera concisa. Los dibujos de ingeniera abarcan documentos tan diversos como planos, esquemas, diagramas, etc. Los datos rster vienen en forma de pixeles individuales y cada posicin espacial o elemento de resolucin tiene un pixel asociado donde el valor del pixel indica un atributo, como color, elevacin, o nmero de identificacin. El problema estriba en que el pensamiento grfico (en el sentido de no verbal) no puede expresarse cmodamente a travs de un lenguaje verbal. Definiendo el trmino verbal como sinnimo de secuencial. Es decir, entendiendo que los lenguajes verbales estn basados en la variacin de un conjunto de signos a lo largo del tiempo, sin importar que los signos sean smbolos grficos o sonidos. Por el contrario, los lenguajes no verbales o visuales, y dentro de stos los grficos, son aquellos que basan la transmisin de la informacin, no slo en el significado de un conjunto de smbolos grficos predefinidos, sino tambin en las relaciones espaciales entre dichos smbolos. Es decir, que las relaciones de semejanza, orden, proporcionalidad y vecindad entre los smbolos tienen una importancia capital que hace inviable expresar oralmente una comunicacin grfica. Por tanto, los potentes procesadores grficos disponibles en la actualidad para tareas de diseo asistido, deben complementarse con los correspondientes preprocesadores. Entonces, los postprocesadores se concentrarn en su verdadera tarea de ayudar al diseador en la manipulacin de los modelos virtuales 3D, despus de que dichos modelos hayan sido creados con la ayuda de preprocesadores capaces de leer la informacin expresada por el diseador en el lenguaje grfico que a l le resulta cmodo, en lugar del lenguaje verbal que resulta ms cmodo al sistema. Se puede resumir el problema diciendo que se necesita capacidad para: Interpretar un boceto (dibujo sin instrumentos de delineacin) como una figura vectorial plana. Es decir, una figura descrita en trminos de primitivas geomtricas.

c) Marco terico Vectorizacin La vectorizacin consiste en representar los contornos obtenidos mediante un conjunto de curvas Bezier. Las curvas Bezier son ampliamente utilizadas en computacin grfica debido a que requieren poco espacio de almacenamiento y son independientes de la resolucin de salida que se utilice. Su uso actual se extiende desde la representacin de tipografas hasta el modelado de objetos tridimensionales. Otra ventaja de las curvas Bezier es que permiten hacer cambios locales en la funcin que representan. Veamos un ejemplo grfico:

En estos dos grficos podemos observar como el cambio de un slo punto, p2, incide nicamente el primer intervalo de la funcin. En las curvas Bezier la funcin no pasa por todos los punto que la definen. Cuatro puntos definen una curva Bezier, pero esta pasa slo por el primero y ltimo de ellos. Las lneas punteadas que se ven en el grfico representan la pendiente de la curva, al variar uno de los puntos de una de las lneas punteadas cambia la pendiente y desde luego la forma de la curva. En aplicaciones grficas se suele ver a las lneas que representan las pendientes como manijas que permiten cambiar la forma de la figura mediante el movimiento de las mismas con un mouse. Para construir las curvas conviene expresar la funcin en forma paramtrica. Un punto es el vector pi = (xi, yi)T y el conjunto de punto en forma paramtrica ser entonces: P(u) = ( x(u), y(u) )T, 0 u 1. El polinomio Bezier de grado n determinado por n + 1 puntos se calcula con la frmula: P(u) = S (i=0 a n) ( nCi )( 1 - u )n-i ui pi, donde ( nCi ) = n! / i! ( n- i )!

Con n = 2 nos queda una ecuacin cuadrtica definida por los puntos p0, p1, p2: p(u) = (1) (1 - u)2 p0 + 2 (1 - u) (u) p1 + (1) u2 p2 dado que es una representacin paramtrica, esta ecuacin representa el par de ecuaciones: x(u) = (1 - u)2 x0 + 2 (1 - u) (u) x1 + u2 x2 y(u) = (1 - u)2 y0 + 2 (1 - u) (u) y1 + u2 y2 Si u = 0, x(0) es idntico a x0 y lo mismo sucede con y. Si u = 1, el punto referenciado es (x2, y2). Si utilizamos un n = 3 obtendremos las denominadas Bezier cubicas. Estas son las generalmente usadas en computacin grfica. En este caso los polinomios tienen la forma: x(u) = (1 - u)3 x0 + 3 (1 - u)2 u x0 + 3 (1 - u) u2 x1 + u3 x2 y(u) = (1 - u)3 y0 + 3 (1 - u)2 u y0 + 3 (1 - u) u2 y1 + u3 y2 En este caso el punto (x(0), y(0)) = p0 por lo tanto la curva no pasar por los puntos intermedios. Propiedades de las curvas Bezier cubicas 1. P(0) = p0, P(1) = p3 2. dado dx/du = 3 (x1 - x0) y dy/du = 3 (y1 - y0) en u = 0, la pendiente de la curva en u = 0 es dy/dx = (y1 - y0) / (x1 - x0), el cual es la pendiente de la lnea secante entre p0 y p1. Similarmente, la pendiente en u = 1 es la misma que la lnea secante entre los ltimos dos puntos. 3. La curva Bezier est contenida en el casco convexo determinada por los cuatro puntos. El casco convexo de un conjunto de puntos es el menor conjunto convexo que contiene todos los puntos. Representacin matricial de una curva Bezier cubica y (x(1), y(1)) = p3

= uT M2 p Interfaz Grfica de Usuario (GUI) La interfaz grfica de usuario, conocida tambin como GUI (del ingls graphical user interface) es un programa Informtico que acta de interfaz de usuario, utilizando un

conjunto de imgenes y objetos grficos para representar la informacin y acciones disponibles en la interfaz. Su principal uso, consiste en proporcionar un entorno visual sencillo para permitir la comunicacin con el sistema operativo de una mquina o computador. Habitualmente las acciones se realizan mediante manipulacin directa, para facilitar la interaccin del usuario con la computadora. Surge como evolucin de las interfaces de lnea de comandos que se usaban para operar los primeros sistemas operativos y es pieza fundamental en un entorno grfico. Como ejemplos de interfaz grfica de usuario, cabe citar los entornos de escritorio Windows, el X-Window de GNU/Linux o el de Mac OS X, Aqua. En el contexto del proceso de interaccin persona-ordenador, la interfaz grfica de usuario es el artefacto tecnolgico de un sistema interactivo que posibilita, a travs del uso y la representacin del lenguaje visual, una interaccin amigable con un sistema informtico. GUIDE es un entorno de programacin visual disponible en MATLAB para realizar y ejecutar programas que necesiten ingreso continuo de datos. Tiene las caractersticas bsicas de todos los programas visuales como Visual Basic o Visual C++ NARGIN devuelve el nmero de argumentos de entrada que se pasa en la llamada a la funcin se est ejecutando actualmente. Se utiliza esta sintaxis nargin slo en el cuerpo de una funcin.nargin ( fx ) devuelve el nmero de argumentos de entrada que aparecen en la instruccin de definicin para la funcin fx. Si la funcin varargin incluye en su definicin, a continuacin, nargin devuelve el negativo del nmero de entradas. Por ejemplo, si la funcin foo declara entradas a, b, y varargin, entonces nargin ('foo') devuelve -3. NARGOUT devuelve el nmero de argumentos de salida se especifican en la llamada a la funcin que se est ejecutando. Se Utiliza esta sintaxis nargout slo en el cuerpo de una funcin.nargout ( fx ) devuelve el nmero de productos que aparecen en la instruccin de definicin de la funcin fx. Si la funcin varargout incluye en su definicin, a continuacin,nargout devuelve el negativo del nmero de salidas. Por ejemplo, si la funcin foo declara salidas a, b, y varargout, entonces nargout ('foo') devuelve -3. VARARGIN es una variable de entrada en un comunicado definicin de una funcin que permite la funcin de aceptar cualquier nmero de argumentos de entrada. Se especifica varargin utilizando caracteres en minsculas, e incluirlo como el ltimo argumento de entrada despus de las entradas declaradas explcitamente. Cuando la funcin se ejecuta, varargin es un conjunto de clulas 1-por-N, donde N es el nmero de entradas que la funcin recibe despus de las entradas declaradas explcitamente. VARARGOUT es una variable de salida en un comunicado definicin de una funcin que permite que la funcin retorne cualquier nmero de argumentos de salida. Se especifica varargout utilizando caracteres en minsculas, e incluirlo como ltimo argumento de salida despus de las salidas declaradas explcitamente. Cuando la funcin se ejecuta, varargout es un conjunto de clulas 1-por-N, donde N es el nmero de salidas solicitados despus de las salidas declaradas explcitamente.

IF, la expresin, declaraciones, END evala una expresin y ejecuta un grupo de sentencias cuando la expresin es verdadera. ELSEIF y ELSE son opcionales, y ejecutar sentencias slo cuando las expresiones anteriores en el bloque si son falsas. Un bloque IF puede incluir varias sentencias ELSEIF. Una expresin evaluada es verdadera cuando el resultado es no vaco y contiene todos los elementos distintos de cero (numrico lgico o real). De lo contrario, la expresin es falsa. Las expresiones pueden incluir operadores relacionales (como <o ==) y los operadores lgicos (por ejemplo, &&, | |, o ~). FUNCTION[y1, ..., yn] = MYFUN (x1, ..., xM),declara una funcin llamada myfun que acepta entradas x1, ..., xM y devoluciones salidas y1, ..., yn. Esta instruccin de declaracin debe ser la primera lnea ejecutable de la funcin. Se guarda el cdigo de function en un archivo de texto con una extensin .M. El nombre del archivo debe coincidir con el nombre de la primera funcin en el archivo. Nombres de funcin vlidos comienzan con un carcter alfabtico, y pueden contener letras, nmeros o guiones bajos. Puede declarar mltiples function locales dentro del mismo archivo, o anidar function. Si alguna function en un archivo contiene una function anidada, todas las function en el archivo deben utilizar la palabra clave final para indicar el final de la function. De lo contrario, la palabra clave final es opcional. IMSHOW(nombre de archivo) para visualizar la imagen almacenada en el archivo nombre de archivo de grficos. El archivo debe estar en el directorio actual o en el camino de MATLAB y debe contener una imagen que puede ser ledo por imread o dicomread. Imshow llamadas imread o dicomread para leer la imagen desde el archivo, pero no almacena los datos de imagen en la MATLAB espacio de trabajo. Si el archivo contiene varias imgenes, imshow muestra slo la primera. AXES crea un objeto grfico, axes en el grfico actual con los valores de propiedad predeterminados. AXES es la funcin de bajo nivel para la creacin de ejes de grficos objetos. MATLAB crea automticamente un eje, si no existe ya, cuando se emite un comando que crea un grfico. PLOT(X1, Y1, ..., Xn, Yn) Yn, representa cada vector frente vector Xn en los mismos ejes. Si uno de Yn o Xn es una matriz y el otro es un vector, se traza el vector frente a la fila de la matriz o de la columna con una dimensin correspondiente al vector. Si Xn es un escalar y un vector es Yn, Yn que PLOT puntos discretos verticalmente a Xn. Si Xn y Yn son complejos, se ignoran los componentes imaginarios. Si Xn y Yn son matrices, deben ser 2-D y el mismo tamao, y las columnas de Yn se representan frente a las columnas de Xn. PLOT elige automticamente los colores y estilos de lnea en el orden especificado por ColorOrder y LineStyleOrder propiedades de los ejes actuales .

d) Diseo de soluciones Vectorizar una imagen de bits (rster) de una curva. Definir varias funciones de manera independiente.

Realizar una funcin para para obtener un conjunto de puntos en coordenadas (x,y) a partir de la curva.

3) Informacin de entrada y de salida. (Diagrama)

ESCALAS (eje X, Eje Y) Programa Imagen . pgn

Imagen Vectorizada Valor de un Y para un X f(x)

4) Resolucin manual de un ejemplo sencillo Considerar la siguiente matriz, que representa una figura en pixeles:
255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255

Esta matriz representa la siguiente figura:

Si las escalas son las siguientes: Xmin=0, Xmax=5, Ymin=0, Ymax=10 Podemos tener vectores con los siguientes puntos

XX=0 0.42 0.83 1.25 1.67 2.08 2.50 2.92 3.33 3.75 4.17 4.58 5.00
YY=0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 7.5 8 8.5 9 9.5 10

El primer paso es tomar la primera columna de la matriz de imagen, y comprobar si existe algn cero (0) que representa el color negro, si es as guardamos el valor de xx en un vector vc en la misma posicin, despus contamos la posicin del cero en la fila correspondiente y escogemos el valor del vector yy de la posicin correspondiente en el vector vf; como se indica a continuacin vc(1)=xx(1) entonces vc(1)=0 para tenemos vf(1)=yy(8) entonces vf(1)=3.5 El otro cero de la columna no interesa debido a que en una funcin se debe tener una relacin uno a uno, por ende a cada x le corresponde un solo y vc(2)=xx(2) -> vc(2)=0.42 vf(2)=yy(9) entonces vf(2)=4 vc(3)=xx(3) -> vc(3)=0.83 vf(3)=yy(10) entonces vf(3)=4.5 vc(4)=xx(4) -> vc(4)=1.25 vf(4)=yy(10) entonces vf(4)=4.5 vc(5)=xx(5) -> vc(1)=0 no existe valor (0) alguno en la columna vf(5)=0 entonces vf(5)=0 vc(6)=xx(6) -> vc(6)=2.08 vf(6)=yy(12) entonces vf(6)=5.5 vc(7)=xx(7) -> vc(7)=2.50 vf(7)=yy(13) entonces vf(7)=6 vc(8)=xx(8) -> vc(1)=2.92 vf(8)=yy(15) entonces vf(8)=7 vc(9)=xx(9) -> vc(9)=0 vf(9)=0 entonces vf(9)=0 vc(10)=xx(10) -> vc(10)=3.75 vf(10)=yy(16) entonces vf(10)=7.5 vc(11)=xx(11) -> vc(11)=4.17 vf(11)=yy(18) entonces vf(11)=8

vc(12)=xx(12) -> vc(12)=4.48 vf(12)=yy(18) entonces vf(11)=8 Los vectores resultantes serian
vc=0 vy=3.5 0.42 4 0.83 4.5 1.25 4.5 0 0 2.08 5.5 2.50 6 2.92 7 0 0 3.75 7.5 4.17 8 4.58 8 5.00 8.5

Eliminando los ceros de los vectores tenemos datoX 0.42 0.83 1.25 2.08 2.5 2.92 3.75 4.17 4.58 5 datoy 3.5 4 4.5 4.5 5.5 6 7 7.5 8 8

La grafica que se obtiene es:

Con las escalas seleccionadas Con estos valores se puede interpolar para conocer cualquier valor de y para un x especfico. Por ejemplo para un x= 3.54 el comando interp1 nos da como resultado interp1(r,s,3.54) x(3.54)= 6.7470 Con este proceso se puede tomar cualquier figura y vectorizarla, sin importar cul sea su tamao en pixeles o la escala que el usuario desea darla.

5) Algoritmo del programa. (Diagrama de flujo o pseudocdigo)

6) Pruebas y resultados. (Con varias imgenes) En la elaboracin del programa de realiz varias pruebas y se obtuvieron los siguientes resultados: PRUEBA 1: En la misma se parti con de la Figura 1.

Figura 1 Se propuso intervalos en las coordenas (x,y): Xmn =0, Xmax=10; Ymn=0 y Ymax=10, con ello se obtiene la vectorizacin y los datos:

ESCALA

VECTORIZACIN

COORDENADAS
As mismo, se probaron con varios intervalos, Xmn =0, Xmax=100; Ymn=0 y Ymax=100

Adicional, se ubic el cursos sobre la grfica vectorizada para determinar las coordenadas en la grfica.

PRUEBA 2:Con de la Figura 2.

Figura 2 Se propuso varios intervalos en las coordenas (x,y) y se realizaron varias sub-pruebas, para la muestra: Xmn =0, Xmax=100; Ymn=0 y Ymax=100, con ello se obtiene la vectorizacin y los datos:

PRUEBA 3:Con de la Figura 3.

Figura 3 Se propuso varios intervalos en las coordenas (x,y) y se realizaron varias sub-pruebas, para la muestra: Xmn =0, Xmax=10; Ymn=0 y Ymax=10, con ello se obtiene la vectorizacin y los datos:

PRUEBA 4:Con de la Figura 4.

Figura 4 Resultados:

PRUEBA 5: Con la Imagen propuesta. Prueba Final.

Imagen Propuesta Resultados:

En todas las pruebas se probaron varios intervalos, culminando con xito los resultados. De igual manera en el Matlab se desplego el conjunto de puntos de las curvas probadas.

7) Conclusiones Para obtener los resultados finales, se parti de varias funciones descritas en el desarrollo del archivo .m, las mismas que dan como resultado la grfica de la vectorizacin y el conjunto de puntos en coordenadas X,Y de todas las curvas que se probaron en el programa. La funcin automatizada para transformar una imagen (rster) en un conjunto de puntos, consiste en varias sub-funciones, que llevan hacia un solo objetivo, aplicando los conocimientos adquiridos en el desarrollo de las clases impartidas durante este nivel. Se realizaron 5 pruebas en el desarrollo de este programa, las mismas que fueron corridas en varios intervalos, siempre en el eje positivo de las coordenadas cartesianas, como se puede observar en los resultados. Es decir, Xmn y Ymn igual a cero. Xmax y Ymx con valores indistintos, que para efectos de las pruebas de hizo: Xmn =0, Xmax=5; Ymn=0 y Ymax=5 Xmn =0, Xmax=10; Ymn=0 y Ymax=10 Xmn =0, Xmax=100; Ymn=0 y Ymax=100 Xmn =0, Xmax=500; Ymn=0 y Ymax=500 Xmn =0, Xmax=1000; Ymn=0 y Ymax=1000

En estos intervalos para todas las curvas de las pruebas. En el GUI, se desarroll varias ventanas para mejor visualizacin de los resultados: ventana de ingreso de escalas; opcin de poner el cursor sobre el grfico vectorizado para tener las coordenadas de la curva punto por punto u opcin de Interpolar con el ingreso de un valor determinado previamente; Ventana de visualizacin de la imagen (curva); Ventana de la grfica vectorizada; Ventana de las coordenadas X, Y con sus respectivos puntos y barras deslizadoras para observar cada punto.

La vectorizacin consiste en representar los contornos obtenidos mediante un conjunto de curvas. La GUI, es un programa Informtico que acta de interfaz de usuario, utilizando un conjunto de imgenes y objetos grficos para representar la informacin y acciones disponibles en la interfaz. Su principal uso, consiste en proporcionar un entorno visual sencillo para permitir la comunicacin con el sistema operativo de una mquina o computador. Con este programa se puede digitalizar curvas ingenieriles como las mostradas en las pruebas, obteniendo la data del Command Window para ser analizada. 8) Bibliografa An improved algorithm for the secuential extraction of boundaries from a raster scan. David W. Capson. Computer Vision, graphics and image processing 28,109-125 (1984)

Line structure extraction from line-drawing images. Toru Kaneko. Pattern Recognition. Vol. 25 n 9 p. 963-973, 1992. http://www.mathworks.com/access/helpdesk/help/toolbox/compiler/compiler.shtml Fundamentos de Informtica y Programacin Cientfica, Jess M. Zamarreo, UVa, 2006. Soluciones de problemas de ingeniera con Matlab, DeloresEtter, Prentice Hall, 1997. Matlab, Getting Started Guide, TheMathWorks, 2009. Matlab, Programming Fundamentals, TheMathWorks, 2009. Matlab, Symbolic Math Toolbox 3 User's Guide, 2007. Soluciones de problemas de ingeniera con Matlab, DeloresEtter, Prentice Hall, 1997. Numerical Methods in Engineering with MATLAB, Cambridge, JaanKiusalaas, 2005. Manual de Interfaz Grfica de Usuario en Matlab, Barragn Diego, 2008.