miércoles, 18 de febrero de 2009

Un poco de imágenes

Antes de iniciar la explicación del método LSB para ocultar información en una imagen, es conveniente hablar de teoría básica de imágenes digitales. En esta entrada se describirán los aspectos básicos como: tipos de imágenes, resolución, profundidad, modelos de color, etc.

Una imagen digital es una matriz de dos dimensiones (filas y columnas). Cada elemento de la matriz representa un color. Cada elemento es llamado píxel. Este nombre viene de la contracción de las palabras en inglés picture element (elemento de imagen).

píxel=picture element

Nota. Este tipo de contracciones son llamadas portmanteaus. Otros ejemplos son: emoticon, internet, billón, wikipedia, etc.

De esta forma, una imágen está compuesta de píxeles (ojo...se acentúa la i).

La resolución de una imágen digital (tamaño) es la cantidad de píxeles que hay en una imágen. Así, podemos encontrar imágenes de 256 × 256, 640 × 480, 1024 × 768 píxeles, etc. Aquí, la resolución está dada por las filas y columnas de la imagen. Otra forma de expresar la resolución de la imágen es utilizando la cantidad explicita de píxeles en la imágen (multiplicando filas con columnas) en millones de píxeles o megapíxeles (Mpx). De esta forma, existen imágenes de 1 megapíxel, 2 megapíxeles,...,3.1 megapíxeles, etc. Por ejemplo:

Una imagen con resolución de 640 x 480 píxeles se dice que tiene 0.3 Mpx (640 × 480 = 307,200 = 0.307,200 millones de píxeles).

Una imagen con resolución de 2048 x 1536 píxeles se dice que tiene 3.1 Mpx (2048 × 1536 = 3,145,728 = 3.145,728 millones de píxeles).


Un píxel es un elemento de la imágen y cuya magnitud representa un color. Dicha magnitud es en realidad un número entero el cual puede ser representado por un número fijo de bits. El número de bits (o profundidad de la imagen) determina cuántos colores o gamas de gris pueden ser mostrados. Por ejemplo, en una imagen de 8-bits se utilizan 8 bits para cada pixel, permitiendo mostrar 2 elevado a 8 (256) colores diferentes o gamas de gris.

Siendo más específicos, la siguiente imagen (Lena) tiene una resolución de 256 × 256 píxeles y una profundidad de 8 bits en escala de grises. Es decir sólo se puede representar 256 colores, los cuales van desde el negro (magnitud 0) hasta el blanco (magnitud 255), un colo gris tendría una magnitud cercana a 128.

Imagen de Lena

Un acercamiento a una porción de la imagen de Lena (su ojo izquierdo) se muestra en la siguiente figura, en ella podemos apreciar cada píxel en detalle y el valor de cada uno.

Acercamiento a una porción de la imagen de Lena

Para que un píxel represente multiples colores (y no solamente escala de grises) normalmente se utilizan más bits, generalmente 24. Esto permite tener una cantidad de 2 elevado a la 24 colores, es decir, 16,777,216 opciones de color.

Con tantos colores como saber ¿cuál es cuál?, para ello se utilizan los modelos de color. El modelo de color más utlizado es el modelo RGB, otros modelos utilizados son el CYMK, RYB, etc.

Un paréntesis. En esta página se muestran diversos modelos de color. Además se puede descargar un software muy interesante también. Se las recomiendo si quieren profundizar más al respecto.

En el modelo RGB (del inglés Red, Green, Blue; "rojo, verde, azul"), RGB para simplificar, cada color es representado mediante la mezcla por adición de esos tres colores. Por lo general cada uno de ellos tiene una profundidad de 8 bits, es decir que pueden tomar un valor entre 0 y 255 (un total de 256 colores). Con lo que se pueden obtener 256 × 256 × 256 = 16,777,216 colores.

Para indicar con qué proporción mezclamos cada color, se asigna un valor a cada uno de los colores primarios, de manera que el valor 0 significa que no interviene en la mezcla y, a medida que ese valor aumenta, se entiende que aporta más intensidad a la mezcla.

Por lo tanto, el rojo se obtiene con (255,0,0), el verde con (0,255,0) y el azul con (0,0,255), obteniendo, en cada caso un color resultante monocromático. La ausencia de color (lo que nosotros conocemos como color negro) se obtiene cuando las tres componentes son 0, (0,0,0).

La combinación de dos colores a nivel 255 con un tercero en nivel 0 da lugar a tres colores intermedios. De esta forma el amarillo es (255,255,0), el cyan (0,255,255) y el magenta (255,0,255).

Obviamente, el color blanco se forma con los tres colores primarios a su máximo nivel (255,255,255).

El conjunto de todos los colores se puede representar en forma de cubo. Cada color es un punto de la superficie o del interior de éste. La escala de grises estaría situada en la diagonal que une al color blanco con el negro.
Hasta el momento hemos hablado de imágenes fijas o rasterizadas (llamadas también bitmap, imagen matricial o pixmap). Este tipo de imágenes, como se mencionó anteriormente, son representadas por una rejilla (raster) de píxeles y cuyas características principales son el tamaño y la profundidad.

Sin embargo existen otro tipo de imágenes: las imágenes vectoriales. Éstas son formadas por objetos geométricos independientes (segmentos, polígonos, arcos, etc.), cada uno de ellos definido por distintos atributos matemáticos de forma, de posición, de color, etc. Por ejemplo un círculo de color rojo quedaría definido por la posición de su centro, su radio, el grosor de línea y su color. El interés principal de los gráficos vectoriales es poder ampliar el tamaño de una imagen a voluntad sin sufrir el efecto de escalado que sufren las imágenes rasterizadas. Asimismo, permiten mover, estirar y retorcer imágenes de manera relativamente sencilla.


La imagen de la izquierda es un ejemplo en el que se pueden comparar las imágenes vectoriales (columna de la izquierda) con las imágenes rasterizadas (columna de la derecha) al ampliar las respectivas imágenes. Como se puede comprobar, a medida que aumenta el zoom las imágenes de la izquierda mantienen su calidad, mientras que los de la derecha van revelando paulatinamente los píxeles que conforman la imagen. Las imágenes vectoriales pueden ser escaladas ilimitadamente sin perder su calidad. Los dos ejemplos de ampliación al 300% y al 600% ilustran especialmente bien esta propiedad de las imágenes vectoriales: los contornos de las figuras geométricas (franjas blancas detrás de la letra A) no aumentan proporcionalmente en la figura en el caso de la imagen rasterizado.

Con esta breve introducción a imágenes digitales quedan establecidas la bases necesarias para entender el medio en donde ocultaremos información. Sólo nos queda el utilizar las técnicas para esconder información dentro de ellas. Los métodos que se tratarán en este blog utilizaran imágenes fijas.

En la siguiente entrada veremos cómo ocultar información en una imagen rasterizada utilizando la técnica LSB.

Como nota final, de ahora en adelante llamaremos a las imágenes rasterizadas simplemente como imágenes.

Que estén bien :)


lunes, 2 de febrero de 2009

Clasificaciones de las marcas de agua

Existen muchas clasificaciones de la marcas de agua pero las principales se muestran a continuación

De todas estas, nos centraremos en la clasificación por su uso específico. De esta forma, las marcas de agua se pueden usar para evitar detección del mensaje incrustado. Para lograr este objetivo la incrustación del mensaje debe distorsionar poco al medio portador, esto se hace para no levantar sospecha alguna de que hay algo oculto. Por ejemplo, si se esconde información en una imagen y la imagen marcada resulta muy distorsionada, entonces se generarán sospechas de que la imagen ha sido modificada provocando que la imagen sea analizada para ver si existe información dentro de ella. Entonces, para evitar la detección del mensaje incrustado se deben evitar distorsiones en el medio marcado. A las técnicas de marcas de agua encargadas de esto se llaman técnicas de ocultamiento de información.

Las marcas de agua se pueden usar para evitar la eliminación del mensaje incrustado para ello se utilizan las llamadas marcas de agua robustas. Este tipo de marcas de agua resisten ciertos ataques hechos al medio marcado, de esta forma se utilizan para esconder información de protección de derechos de autor y de copia, entre otros.

Las marcas de agua frágiles y semi frágiles son utilizadas para evitar falsificaciones hechas a los medios marcados. Una característica de este tipo de esquemas es, al contrario de las marcas de agua robustas, que no resisten ataques o distorsiones hechas al medio marcado. Si el medio marcado es modificado entonces la marca se pierde, lo que constituye una posible falsificación.

Como podemos ver las cada uno de estos tipos de marcas de agua son utilizados por aplicaciones específicas:
  • El ocultamiento de información es utilizada por aplicaciones en las que se desea mantener la información incrustada en secreto. Es decir, estas aplicaciones requieren un bajo impacto perceptal (pocas distorsiones) para evitar sospechas.
  • Las marcas de agua robustas son utilizadas por aplicaciones que se necesita resistir distorsiones en el medio marcado.
  • Las marcas de agua frágiles y semi frágiles son usadas por aplicaciones que verifican la integridad u originalidad del medio marcado, para ello no resisten distorsiones hechas a los medios marcados.
----------------
Antes de continuar.....Hablemos de ataques
Los ataques se clasifican en:
  • Ataques activos: Distorsionan o modifican el medio marcado para eliminar el mensaje incrustado o evitar que la función de extracción lo encuentre. Ejemplos de estos ataques son: en imágenes: Compresiones son pérdida(JPEG,GIF), filtrados, cambio de contraste, brillo, histogramas, modificaciones geométricas (rotaciones, translaciones, espejo,etc) entre otras.
  • Ataques pasivos: Analizan el medio marcado para determinar la existencia de un mensaje, el tamaño del mismo o simplemente para extraerlo. Ejemplos de estos son los ataques visuales y los ataques estadísticos (Chi-cuadrada).
Más adelante haremos ejemplos de estos ataques.
----------------

Los requerimientos básicos de una aplicación de marcas de agua son tres:
  1. Capacidad: Es la cantidad máxima de información que puede ser ocultada en un medio.
  2. Robustez: Es la capacidad que tiene un algoritmo de marcas de agua para poder extraer el mensaje incrustado del medio marcado después de que éste último haya sido atacado.
  3. Impacto perceptual: Un algoritmo de marcas de agua es verdaderamente imperceptible si no se puede distinguir a simple vista las diferencias entre el medio marcado y el medio original. Aunque esta capacidad es en origen subjetiva, existen métricas para evaluarla. Como ejemplo se tiene a la relación señal a ruido (PSNR), el error cuadrático medio (EMS), la correlación, el error absoluto máximo (MAE), etc. Nótese que para poder evaluar esta capacidad es necesario comparar al medio marcado con el medio original. Como normalmente se distribuye el medio marcado sin el medio portador es suficiente que las modificaciones en el medio marcado pasen desapercibidas para que el algoritmo de marcas de agua utilizado sea considerado como imperceptible.
De esta forma una aplicación hecha para verificar la integridad de imágenes médicas (para evitar modificar ultrasonidos, imágenes de rayos X, etc.) requiere un bajo impacto perceptual, una poca robustez y poca capacidad, es decir se ubicaría en la región más azul (cercana al cruce de ejes) de la gráfica siguiente. Esta gráfica muestra la relación entre estos requerimientos básicos.


Por otro lado, una aplicación para proteger imágenes satelitales (derechos de autor), necesita ser resistente a diferentes esquemas de compresión con pérdida (es decir que la imagen comprimida no es la misma que la imagen original, puesto que existió una perdida en los píxeles e. g. JPEG). Se necesita esta resistencia pues los posibles ladrones de las imágenes, por lo general, saben de la existencia de la marca (mensaje oculto), entonces ellos proceden a tratar de eliminarla modificando el medio marcado, evitando dejarlo muy distorsionado ya que no les serviría. Este tipo de aplicaciones robustas impactan perceptualmente al medio marcado pues se utiliza mucha redundancia de información(repetir muchas veces la misma marca) y métodos que guardan información distorsionando mucho al medio. Hay que notar que la capacidad de este tipo de esquemas es mínima, pues la redundancia decrementa la capacidad. La ubicación de estos esquemas en la gráfica anterior es cercana a la zona amarilla y roja.


Bueno... ya basta de choro mareador (bla bla bla) en la siguiente entrada realizaremos un esquema de marcas de agua para imágenes llamado LSB (least significant bit).

Que estén bien, estamos en contact...