







Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Diseño de un cluster en LabVIEW
Tipo: Apuntes
1 / 13
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!








reporte DE ACTIVIDAD objetivo: Crear un programa que introduzca a otra perspectiva de LabVIEW, que es el modificar imágenes; utilizando diversos componentes de LabVIEW, se crea un programa que cumpla con estas características. Como objetivo subsiguiente, se tiene el aprender y conocer otras funciones como: path, 2D Picture, unbundle, initialize array, insert into array y fraw flattened pixmap.
introducci Ó n: ¿Cómo manejar la imagen?: Dentro de nuestra computadora una imagen es un conjunto de datos que podemos leer y modificar a nuestro antojo, en el caso de LabVIEW estos datos están agrupados en un cluster que podemos dividir usando la función unbundle vista anteriormente. Como ya sabes, el tamaño de las imágenes se mide en píxeles, que son pequeños puntos que se definen por su brillo y color. Por ejemplo si cambiamos la resolución de nuestra pantalla veremos la misma imagen (de 600×400 píxeles) más pequeña o más grande. Los píxeles pueden tomar valores distintos según el tipo de imagen. Las imágenes en blanco y negro son las más básicas, pudiendo tomar sus píxeles valores entre 0 (completamente negro) y 255 (completamente blanco). Sin embargo las imágenes de color contienen tres canales de colores distintos (los famosos RGB (R : rojo, G : verde, B : Azul). Cada canal puede tomar un valor entre 0 y 255, por ejemplo un R = 255, G = 0, y B = 0 será un píxel completamente rojo. Si los tres valores son 255 el píxel será blanco, y si los tres valen 0 el píxel será negro. Existe además el sistema HSB (Hue, Saturation, Brightness (Matiz, Saturación, Luminosidad)) también llamado HSV, con el que también se puede crear cualquier color, y que tiene transformación directa a su representación en el sistema RGB mediante la siguiente formula: Sea MAX el valor máximo de los componentes (R, G, B), y MIN el valor mínimo de esos mismo valores, los componentes del espacio HSV se pueden calcular como:
Hay incluso televisiones que actualmente incluyen el amarillo entre sus canales de color, por lo que incrementa mucho el número de colores posibles. Toda esta información de los colores la tenemos guardada en LabVIEW en el array de una dimensión que forma parte de los datos del cluster de la imagen. El tamaño de dicho array es exactamente altura x anchura x canales. Para recorrer una imagen en LabVIEW se va de izquierda a derecha, y de arriba a abajo. Teniendo en cuenta además que los canales están ordenados en RGB (rojo, verde y azul), si quisiésemos acceder al valor verde del píxel número 40 de la fila 24 tendríamos que acceder al dato: anchura_fila23 + numero_canales39 + 1, donde anchura_fila será la anchura de la imagen multiplicada por el número de canales. Esta es la única forma de recorrer imágenes, y se implementa con bucles generalmente.
Es posible procesar imágenes con LabVIEW, lo que es de gran utilidad ya que desde LabVIEW podemos además manejar al NXT directamente. Esto nos puede servir para procesar las imágenes que tome una cámara en tiempo real, lo que tiene muchas aplicaciones prácticas. Lectura y Escritura de una Imagen: En LabVIEW podemos tanto abrir como escribir imágenes. Las funciones que necesitamos se encuentran en Programming → Graphics & Sound → Graphics Formats como puedes ver en la siguiente imagen:
Las funciones para lectura de imágenes reciben como parámetro de entrada la dirección de la imagen, y devuelven un cluster con los datos de la imagen en caso de que la lectura haya resultado exitosa, o un error por la salida de error en caso de que haya habido algún fallo a la hora de abrir la imagen. Puedes ver todas las entradas y salidas de las funciones gracias a la ayuda contextual:
Para dibujar la imagen en la pantalla es necesario usar la siguiente instrucción:
La ruta del archivo a leer se lee con la instrucción File Phat Indicator que se encuentra en Controls → Modern → String & Path A la hora de tratar con la imagen que acabamos de leer es necesario poder acceder a los distintos componentes del cluster de información de la imagen, especialmente al que tiene la información de los píxeles. Para ello necesitaremos usar la función unbundle cluster que se encuentra en Programming → Cluster, Class & Variant:
Nos interesa especialmente el array de una dimensión, que contiene toda la información de los píxeles de la imagen. Recorriendo dicho array podremos saber de qué color es cada píxel, y poder operar con la imagen para crear una nueva imagen modificada. Igualmente necesitaremos hacer uso de la función Unbundle cluster situada también en Programming → Cluster, Class & Variant para juntar la información de la imagen y escribirla en el disco duro (mirar la imagen anterior).
mATERIAL:
Etapa 1: analizar el problema a resolver ■ considerar las operaciones a realizar, así como nuestros controladores e indicadores en el panel frontal y las variables que necesitemos en el bloque de diagramas. Etapa 2: abrir nuestro programa labVIEW y crear un nuevo proyecto. Etapa 3: crear los indicadores necesarios junto con las herramientas que necesitamos para implementar en nuestro programa de análisis de imagen junto con las constantes y operaciones necesarias en nuestras estructuras, en este caso While loop y For loop. Etapa 4: establecer conexiones ■ realizar conexiones con nuestros controles e indicadores con diversas funciones respectivamente. Etapa 6: comprobar
Una vez teniendo nuestro File path control lo conectaremos directamente a un read JPEG file para leer nuestra imagen, colocaremos a ambos en un while loop y el read JPEG file lo conectaremos directamente a nuestro while.
Como se ve, en nuestro read JPEG file conectaremos a un unbundle by y sacaremos de ahí otras 2 filas conectando a su vez la fila de status a nuestro stop de while y cambiando a un ciclo repetitivo, es decir, el programa no dejara de correr a menos a que se lo indique.
En nuestra paleta de funciones en la sección Picture, sacaremos la opción Draw Flattened Pixmap para indicar de donde saldrá la imagen, al mismo tiempo crearemos un indicador para este y conectaremos con nuestro read JPEG y nombraremos nuestros indicadores como se muestra.
Conectaremos nuestro while loop a un unbundle by name como se muestra en la imagen.
Crearemos 3 constantes, 401, 172 y 3, 401 estará enlazada con nuestro indicador de numero de repeticiones (N), a su vez se multiplicara con nuestra segunda constante de 172 y este resultado será multiplicado con la constante de 3; el resultado de esta operación se conectara a un array de inicio
el cual tendrá el valor de 255. Para finalizar esta primera parte de la función de esta operación, crearemos un shift register con la estructura.
La constante de 172 tendrá dos túneles en la estructura y 3, tendrá uno. El primer túnel de 172 se enlazara directamente con el segundo indicador de la estructura de adentro, (N); el segundo túnel se multiplicará con el indicador de Y y su resultado se multiplicará con la constante 3, este resultado crea un túnel en la segunda estructura, y de igual manera nuestra constante de 3 directamente creara
un túnel. Cabe indicar que nuestro contador, también estará enlazado con el indicador de Y. Por último, conectamos nuestro shift register a la siguiente estructura, creando otro shift register. Las conexiones hasta este punto quedan como se muestra en la imagen.
Ahora bien, el túnel que creamos directo de 3, se multiplicará con nuestro inicializador que a su vez
estará conectado con nuestro indicador de X , y este resultado se sumara con el túnel de la operación de multiplicación anterior y el resultado se enlazara a un array de inicializador y a dos incrementos que a su vez se enlazaran con un array de inicio. Este mismo alambrado después del incremento y antes del array de cada uno, creará un túnel en una estructura Case que insertaremos adelante. Ahora bien regresamos a las 3 array de inicio, estos estarán conectados entre ellos con una diferencia de menor que 100, pero para no crear constantes para cada uno, solamente creamos una constante de 100 y esta la enlazamos a los 3 controles. El resultado del primero con el segundo
se conectaran con esta operación y el resultado de este se conectará con el último y este resultado se conectará a la estructura case en el signo de interrogación.
Por último desplazamos nuestro shift register inicial a la estructura cas y terminamos con nuestras operaciones para poder empezar con le estructura case, quedando las conexiones de la siguiente manera.
Ahora bien, nuestra estructura ya cuenta con 6 conexiones iniciales, 5 tuneles y 1 que se enlaza a nuestro signo de interrogación, en la estructura introduciremos 3 controles de tipo “Insert to Array”
, todo esto en caso verdadero. Nuestro túnel creado de la suma, será el primero que conectaremos a nuestro primer array junto con una constante de 10 que será creada fuera de nuestra
Pasamos a nuestro panel frontal en donde se mostraran los 2 indicadores de imagen, el de X y Y y nuestro control donde podremos insertar el nombre de nuestra imagen, corremos nuestro programa.
Al momento de correr nuestro programa emergerá nuestra ventana de imágenes, en donde seleccionaremos la imagen a cambiar. Para este programa corresponde una imagen de 401 pixeles por 172, por lo que se debe de tener cuidado con el tamaño de la imagen, de lo contrario nuestro programa no la detectará y marcar de color negro.
Después de seleccionar la imagen, nuestro programa empieza a correr y a detectar niveles de color de la imagen, seguido de esto, el programa modificará la imagen y solo aparecerá lo que detecte de color negro, como se muestra en la siguiente imagen.