miércoles, 22 de abril de 2020

Tipos de Imágenes en Matlab


Una imagen digital está compuesta de píxeles, los cuales pueden definirse de alguna manera como pequeños puntos en la pantalla o imagen. Cada píxel es capaz de proporcionar información visual acerca de una pequeña región en particular de la imagen. A partir de esto, se puede considerar a una Imagen Digital, como un arreglo de instrucciones de cómo se encuentra coloreado cada píxel. 

En general se puede decir que una imagen de m x n si está compuesta de m píxeles en la dirección vertical y n píxeles en la dirección horizontal. Es decir que tener una imagen de 512 x 1024 píxeles, significa que la imagen contiene en sí información para 524288 píxeles, los cuales requiere mucha memoria. Por lo tanto, la compresión de las imágenes es algo esencial para el procesamiento eficiente de la imagen.

El Clasificar las imágenes es una tarea que puede realizarse basándose en múltiples criterios, en el caso que nos ocupa nos interesa exclusivamente la forma en que esta imagen se encuentra descrita en el ordenador.

En base a esta premisa, podemos distinguir dos grupos de imágenes digitalizadas: las que están descritas en base a fórmulas matemáticas que definen su relleno y contorno, llamadas vectoriales y las que se encuentran descompuestas en píxeles, es decir, pequeños cuadraditos de color que, al observarse todos en conjunto proporcionan la representación total de la imagen se denominan imágenes en mapa de bits.

La naturaleza y características particulares de cada uno de estos dos tipos son profundamente diferentes y están concebidas para destinos totalmente distintos, por eso es muy importante conocerlas y comprender la esencia de cada una de ellas para poder utilizarlas adecuadamente.

Cuando observamos una imagen en la pantalla del ordenador, ésta siempre se nos representa en mapa de bits independientemente del tipo de imagen que se trate, pues el monitor muestra todos los contenidos mediante píxeles, sin embargo, las diferencias resultarán decisivas cuando recuperemos la imagen en cualquier otro medio de reproducción.

Las imágenes que desean ser procesadas, normalmente se encuentran en la forma de un archivo, mientras que el trabajo en Matlab se desarrolla con una imagen vista como una matriz. Estas imágenes una vez procesadas deben ser guardadas en un formato de imagen que sea compatible con otros programas, tal como JPEG, TIFF, etc.

   La función imread lee imágenes que se encuentren en cualquiera de los formatos de archivo de gráficos de imágenes, con cualquier profundidad de bit. La mayoría de las imágenes utiliza 8 bits para guardar los valores del píxel. Cuando estos son guardados en Matlab se archivan como clase uint8. Para formatos de archivo que soportan información de 16 bits, PNG y TIFF, por ejemplo, Matlab guarda las imágenes como clase uint16.

Para imágenes indexadas, imread siempre lee el mapa de color dentro de una matriz de clase double, aunque el mismo arreglo de la imagen sea clase uint8 o uint16.
 En primer lugar, leeremos la siguiente imagen

a=imread('Playa.jpg');

    Lo que hace para una imagen en blanco y negro, es crear una matriz a, donde cada elemento tendrá un valor de nivel de gris:




 
a (1,1) a (1,2) ... a (1, N)
a (2,1) a (2,2) ... a (2, N)
*        *            *
  a (M,1) a(M,2) ...a (M, N)

 A.     Para determinar el tamaño de la imagen utilizaremos el siguiente comando
size(a);  
B.      Si lo queremos almacenar en una variable.
  [M, N]=size(a);
C.     Así mismo existe otro comando para dicha imagen el cual nos muestra información más detallada de esta.
whos (a)

Name
    Size             
Byte
Class
Attributes
a
425x591
251175
uint8


Para mostrar la imagen 1 se aplica el comando
                                                                  imshow(a);


Imshow (a,b) donde a es la imagen a mostrar y b es el número de niveles de intensidad a mostrar. Si a se omite, se usa 256 y se muestra la imagen 2.

La sintaxis es imshow(b,[low high])
imshow(a)


Esto lo que hace es expandir el rango dinámico de la imagen, pone como límite inferior, el valor mínimo de intensidad de la imagen y como límite superior su valor máximo como se muestra.

imshow(f,[0 123])


Matlab usualmente cuando dibuja una nueva figura, sobrescribe la ventana de la figura anteriormente mostrada.

    Para mostrar la imagen 3 en una ventana independiente, ejecutamos el siguiente comando:

figure, imshow(f)

Donde f es la matriz que almacena la imagen y Playa es el nombre de fichero donde vamos a guardar la imagen. filename tiene que tener una extensión que reconozca Matlab.

imfinfo Playa.jpg
                                                   ans  =   Filename: [1x42 char]
FileModDate: [1x20 char]
FileSize: 64422
Format: 'jpg'
FormatVersion: ''
Width: 591
Height: 425
BitDepth: 8
ColorType: 'grayscale'
FormatSignature: ''
NumberOfSamples: 1
CodingMethod: 'Huffman'
CodingProcess: 'Sequential'
Comment: {} 

·         Doublé Doble precisión, números en punto flotante que varían en un rango aproximado de -10 a 10 (8 bytes por elemento)
·         Uint8 Enteros de 8 bits en el rango de [0,255] (1 byte por elemento)
·         Uint16 Enteros de 16 bits en el rango de [0, 65535] (2 bytes por elemento)
·         Uint32 Enteros de 32 bits en el rango de [0, 4294967295] (4 bytes por elemento)
·         Int8 Enteros de 8 bits en el rango de [-128, 127] (1 byte por elemento)
·         Int16 Enteros de 16 bits en el rango de [-32768, 32767] (2 bytes por elemento)
·         Int32 Enteros de 32 bits en el rango de [-2147483648,2147483647] (4 bytes por elemento)
·         Single Número en punto flotante de precisión simple, con valores aproximadamente en el rango de -10 a 10 (4 bytes por elemento)
·         Char Caracteres (2 byte por elemento)
·         Logica Los valores son 0 ó 1 (1 byte por elemento)

Imágenes de intensidad: Una matriz cuyos valores han sido escalados para representar intensidad. Pueden ser uint8 o uint16. Si son double, los valores están escalados entre [0, 1]

Imágenes binarias: Imágenes que solamente tienen valor 0 o 1. Se representan en Matlab a partir de arrays lógicos. Para convertir en Matlab una Matriz (array) de 0's y 1's en array lógico:

B = logical(A) Para comprobar si un array es lógico:
isLogical(A)

devuelve un 1 si es lógica y un 0 si no lo es.

Imágenes indexadas: En una imagen indexada, sólo se usa un conjunto limitado de colores discretos, generalmente 256 o menos. Estos colores forman un “mapa de colores” de la imagen, y a cada punto en la imagen se le asigna un color de este mapa de colores. Las imágenes indexadas tienen la ventaja de poder ser representadas dentro de un ordenador consumiendo relativamente poca memoria

Imágenes RGB: En este modelo, cada color se representa como 3 valores de R, G y B, que indica las cantidades de rojo, verde y azul que componen el color.

A) Convirtiendo tipos y clases de imágenes


B) Las Matrices en Matlab

Como antes comentábamos, una de las características de Matlab es que esta especialmente diseñado para trabajar con variables vectoriales y matriciales. Podemos hacer esta asignación

a= [2 3 0 1];

Sin haberle indicado previamente al programa que a no es una variable escalar (es decir, una variable en la que almacenamos un solo número) sino una variable vectorial. De hecho, en MATLAB no hay propiamente variables numéricos escalares ni vectoriales, sino matriciales (arrays)

En Matlab una imagen a escala de grises es representada por medio de una matriz bidimensional de m x n elementos en donde n representa el número de píxeles de ancho y m el número de píxeles de largo. El elemento v11 corresponde al elemento de la esquina superior izquierda donde cada elemento de la matriz de la imagen tiene un valor de 0 (negro) a 255 (blanco).



lunes, 26 de junio de 2017

Electrónica: Teoría de circuitos y dispositivos electrónicos


La edición anterior de Electrónica: Teoría de Circuitos y Dispositivos Electrónicos requirió varios cambios significativos en cuanto a pedagogía y contenido. Esta décima edición fue mas selectiva en las adecuaciones que se debían hacer. Los títulos de los capítulos no se modificaron y se agrego un numero limitado de secciones nuevas. Los cambios se efectuaron sobre todo para mejorar la forma en que se presenta el material mas importante y para mantener actualizado el contenido. Hubo varias configuraciones determinantes de BJT y FET que se debían tratar mas a fondo recalcando sus características terminales importantes. Este material adicional es la razón principal por la que se agregaron nuevas secciones al texto. Tales adiciones produjeron mas ejemplos y una selección mas amplia de los problemas. En esta edición se desarrollaron listas de objetivos para el material incluido en cada capitulo; ademas al final de cada uno de ellos se incluye una lista de conclusiones conceptos y ecuaciones importantes. Estos tres elementos resumen el material para una revisión y aplicación futuras. Se agrego una tabla de resumen al capitulo 4 de polarización de CD de los BJT en concordancia con las provistas para el análisis de ca de los BJT y la investigación de CA y CD de las FET.



Descargar Libro: Teoría de circuitos y dispositivos electrónicos






domingo, 5 de octubre de 2014

Amplificadores Operacionales

Los amplificadores operacionales son circuitos integrados que sirven para amplificar señales de voltaje. Son muy útiles en la elaboración de circuitos.


Un amplificador operacional tiene dos entradas, invertida (-) y no invertida (+), y una salida. 

La polaridad de una señal aplicada a la entrada invertida se invierte a la salida. Una señal aplicada a la entrada no invertida mantiene su polaridad a la salida. 

La ganancia (grado de amplificación) de un amplificador operacional está determinada por una resistencia de retroalimentación que alimenta parte de la señal amplificada de la salida a la entrada invertida. 
Esto reduce la amplitud de la señal de salida, y con ello la ganancia. 

Mientras mas pequeña es esta resistencia menor será la ganancia. 

En la figura 1 se muestra un diagrama de la conexión básica de un amplificador operacional con salida invertida, en ella

Amplificador operacional
Fig.1 Diagrama de Conexión Básica.


Ganancia = Ren / Rent
Vsal = - Vent (Rre / Rent )


La ganancia es independiente del voltaje de alimentación. Observe como la entrada que no se usa se conecta a tierra por lo que el amplificador operacional amplifica la diferencia entre la entrada Vent y tierra (0 voltios).

la resistencia de retroalimentación Rre y el amplificador operacional forman un lazo de retroalimentación cerrado. Cuando la resistencia Rrese omite el amplificador entrega su máxima ganancia, en este caso la salida permuta de  completamente abierto a completamente cerrado o viceversa para muy pequeños cambios de la señal de entrada. En este modo de lazo abierto el amplificador operacional no tiene uso práctico como amplificador lineal y se usa para determinar cuando el voltaje de una de las entradas difiere del voltaje de la otra entrada, como compara los dos voltajes son conocidos como comparadores.

La mayoría de los amplificadores operacionales necesitan una entrada de voltaje + y otra - como puede verse en la figura 1, esta fuente de voltaje puede lograrse conectando dos baterías iguales en serie, luego se conecta el cable de unión entre ellas a tierra quedando los otros extremos como +V y -V.


Conexión no inversor


La figura 2 muestra la conexión típica de un amplificador operacional con la salida no invertida con respecto a la entrada. Se ha usado uno de los mas populares amp-op el IC-741.

En el dibujo aparecen las fórmulas para determinar los índices básicos del circuito así como los valores nominales de voltaje de alimentación.


diagrama

Fig. 2 Conexión No Inversor

Conexión invertida

La figura 3 muestra la conexión típica de un amplificador operacional con la salida invertida con respecto a la entrada. Se ha usado uno de los mas populares amp-op el IC-741.


En este caso:



Ganancia= - (R2 / R1)



R3 = (R1 R2) / (R1 + R2)



Siendo el voltaje nominal de alimentación igual al de la figura 2


diagrama
Fig.3


Algunas de las características de los CI Opam son:

  • Alta ganancia, del orden de un millón.
  • Alta impedancia de entrada y baja impedancia de salida.
  • Se usa con alimentación partida, normalmente +/-15V.
  • Se usa con re-alimentación, dando una ganancia determinada por la red de re-alimentación.

Sus características a menudo llegan a la del op-amp ideal, y se puede estudiar con ayuda de las reglas de oro.

Fig.4

El Op-amp 741

El amplificador diferencial mas común y famoso es el mA741C o exactamente el 741, que viene en formato de mini-DIP de 8 patillas. El circuito integrado contiene 20 transistores y 11 resistencias. Introducido por Fairchild en 1968, el 741 y los siguientes op-amps de IC incluyendo los op-amps de entrada FET, se han transformado en la herramienta estándar para producir la amplificación y un sinnúmero de aplicaciones. Aun que tiene algunas limitaciones prácticas, el 741 es un chollo electrónico que cuesta menos de 10 Pesos Mexicanos


El circuito estándar del Op-amp 741 contiene 20 transistores y 11 resistencias. Empieza con una etapa de entrada diferencial, con una carga de espejo de corriente. A esto le sigue una etapa amplificadora de voltaje npn, con una salida activa. Un seguidor emisor pnp impulsa una etapa de salida formada por un seguidor emisor en push-pull. La etapa de salida incluye un circuito limitador de corriente.


Op-amp Real vs Ideal

Los fácilmente disponibles y baratos circuitos integrados de op-amps tienen características que son aproximaciones razonables a un op-amp ideal (datos de Simpson):



Estas características nos conduce a las reglas de oro de los op-amps. Estas nos permite deducir de manera lógica la operación de cualquier circuito de op-amp.


  • Libro de Amplificadores operacionales y circuitos integrales lineales 5Ed - Robert L Couglin aqui.
  • Proyectos con amplificadores operacionales aquí.