Manuales para la línea de comandos

Man » Manual de pam en línea: documentación detallada en línea para la página de manual de pam

🌍
pam - Formato de mapa bidimensional común de Netpbm

GENERAL

El formato de imagen PAM es un formato de mapa bidimensional común.

Está diseñado para ser utilizado para cualquiera de los innumerables tipos de gráficos, pero teóricamente podría utilizarse para cualquier tipo de datos que estén dispuestos como una matriz rectangular bidimensional. En realidad, desde otra perspectiva, puede verse como un formato para datos dispuestos como una matriz tridimensional.

El nombre "PAM" es un acrónimo derivado de "Portable Arbitrary Map" (Mapa arbitrario portátil). Esta derivación tiene más sentido si se considera en el contexto de los otros nombres de formato de Netpbm: PBM, PGM y PPM.

Este formato no define el significado de los datos en ningún punto particular de la matriz. Podrían ser intensidades de luz roja, verde y azul, de modo que la matriz represente una imagen visual, o podrían ser los mismos componentes rojo, verde y azul más un componente de transparencia, o podría contener las precipitaciones anuales de lugares en la superficie de la Tierra. Cualquier proceso que utilice el formato PAM debe definir además el formato para especificar el significado de los datos.

Una imagen PAM describe una cuadrícula bidimensional de tuplas. Las tuplas están dispuestas en filas y columnas. El ancho de la imagen es el número de columnas. La altura de la imagen es el número de filas. Todas las filas tienen el mismo ancho y todas las columnas tienen la misma altura. Las tuplas pueden tener cualquier grado, pero todas las tuplas tienen el mismo grado. El grado de las tuplas se denomina profundidad de la imagen. Cada miembro de una tupla se denomina muestra. Una muestra es un entero sin signo que representa un lugar a lo largo de una escala que comienza en cero y termina en un valor máximo llamado maxval. El maxval es el mismo para cada muestra en la imagen. La matriz bidimensional de todas las N-ésimas muestras de cada tupla se denomina el N-ésimo plano o canal de la imagen.

Aunque el formato básico no asigna ningún significado a los valores de la tupla, incluye una cadena opcional que describe ese significado. El contenido de esta cadena, denominado tipo de tupla, es arbitrario desde el punto de vista del formato PAM básico, pero los usuarios del formato pueden asignarle un significado mediante la convención para que puedan identificar sus implementaciones particulares del formato PAM. Algunos tipos de tuplas se definen como subformatos oficiales de PAM. Consulte Tipos de tuplas definidos.

El confuso universo de los formatos Netpbm

Es fácil confundirse con la relación entre el formato PAM y PBM, PGM, PPM y PNM. Aquí hay una pequeña aclaración:

"PNM" no es realmente un formato. Es una abreviatura de los formatos PBM, PGM y PPM colectivamente. También es el nombre de un grupo de funciones de biblioteca que pueden manejar los tres formatos.

"PAM" es, de hecho, un cuarto formato. Pero es tan general que se puede representar la misma información en una imagen PAM que en una imagen PBM, PGM o PPM. Y, de hecho, un programa diseñado para leer PBM, PGM o PPM y que lo haga con una versión reciente de la biblioteca Netpbm leerá una imagen PAM equivalente sin problemas y el programa ni siquiera lo notará.

Para añadir más confusión, existe una colección de rutinas de biblioteca llamadas funciones "pam" que leen y escriben el formato PAM, pero también leen y escriben los formatos PBM, PGM y PPM. Lo hacen porque estos últimos formatos son mucho más antiguos y populares, por lo que incluso un programa nuevo debe funcionar con ellos. Tener la biblioteca que gestione todos los formatos facilita la escritura de programas que también utilicen el formato PAM más reciente.

EL DISEÑO

Una forma cómoda de leer y escribir el formato PAM con precisión es a través de la biblioteca de subrutinas C [libnetpbm(1)](1).

Un archivo PAM consta de una secuencia de una o más imágenes PAM. No hay datos, delimitadores ni relleno antes, después o entre las imágenes.

Cada imagen PAM consta de una cabecera seguida inmediatamente de un mapa de bits.

Aquí hay un ejemplo de cabecera:

P7
WIDTH 227
HEIGHT 149
DEPTH 3
MAXVAL 255
TUPLTYPE RGB
ENDHDR

La cabecera comienza con los caracteres ASCII "P7" seguidos de un salto de línea. Este es el número mágico.

Nota: Las imágenes de vista previa de xv también comienzan con el número mágico "P7". (Esta y PAM fueron extensiones independientes de los formatos Netpbm). El resto del formato facilita la distinción entre PAM y ese formato).

La cabecera continúa con un número arbitrario de líneas de texto ASCII. Cada línea termina con y está delimitada por un carácter de salto de línea.

Cada línea de cabecera consta de cero o más tokens separados por espacios o comienza con "#". Si comienza con "#", es un comentario y el resto de esta especificación no se aplica a él.

Una línea de cabecera que tiene cero tokens es válida pero no tiene ningún significado.

El tipo de línea de cabecera se identifica por su primer token, que tiene 8 caracteres o menos:

ENDHDR Esta es la última línea de la cabecera. La cabecera debe contener exactamente una de estas líneas de cabecera.

HEIGHT El segundo token es un número decimal que representa la altura de la imagen (número de filas). La cabecera debe contener exactamente una de estas líneas de cabecera.

WIDTH El segundo token es un número decimal que representa el ancho de la imagen (número de columnas). La cabecera debe contener exactamente una de estas líneas de cabecera.

DEPTH El segundo token es un número decimal que representa la profundidad de la imagen (número de planos o canales). La cabecera debe contener exactamente una de estas líneas de cabecera.

MAXVAL El segundo token es un número decimal que representa el valor máximo de la imagen. La cabecera debe contener exactamente una de estas líneas de cabecera.

TUPLTYPE

La cabecera puede contener cualquier número de estas líneas de cabecera, incluido cero. El resto de la línea forma parte del tipo de tupla. El resto de la línea no se tokeniza, pero el tipo de tupla no incluye ningún espacio en blanco inmediatamente después del token TUPLTYPE o al final de la línea. Tampoco incluye un salto de línea. Debe haber algo que no sea espacio en blanco después del token TUPLTYPE.


Si hay múltiples líneas de encabezado TUPLTYPE, el tipo de tupla es la concatenación de los valores de cada una de ellas, separados por un solo espacio en blanco, en el orden en que aparecen en el encabezado. Si no hay líneas de encabezado TUPLTYPE, el tipo de tupla es la cadena nula.

El mapa de bits consta de cada fila de la imagen, en orden de arriba a abajo, concatenadas sin ningún tipo de delimitador entre, antes o después de las filas.

Cada fila consta de cada tupla de la fila, en orden de izquierda a derecha, concatenadas sin ningún tipo de delimitador entre, antes o después de las tuplas.

Cada tupla consta de cada muestra de la tupla, en orden, concatenadas sin ningún tipo de delimitador entre, antes o después de las muestras.

Cada muestra consta de un entero sin signo en formato binario puro, con el byte más significativo primero. El número de bytes es el número mínimo de bytes necesarios para representar el valor máximo de la imagen.

El carácter al que se hace referencia como "nueva línea" aquí es el carácter conocido en ASCII como Salto de línea o LF.

LIMITACIONES

Altura, ancho, profundidad y valor máximo son al menos 1.

Altura, ancho y profundidad no tienen un máximo definido, pero los procesadores y generadores de imágenes suelen tener sus propias limitaciones.

El valor máximo de una imagen nunca es mayor que 65535. (La razón por la que está limitado es para facilitar la creación de un procesador de imágenes, en el que los valores aritméticos intermedios a menudo tienen que ajustarse a 31 o 32 bits). No había ninguna limitación especificada antes de octubre de 2005, pero esencialmente todas las implementaciones siempre la han respetado.

TIPOS DE TUPLAS DEFINIDOS

Algunos tipos de tuplas se definen en esta especificación para especificar subformatos oficiales de PAM para aplicaciones especialmente populares del formato. Los usuarios del formato también pueden definir sus propios tipos de tuplas y, por lo tanto, sus propios subformatos.

El tipo de tupla afecta solo a los significados de las muestras (que son enteros sin signo) en las tuplas de la imagen. No afecta a la forma en que se codifican las muestras o las tuplas. El tipo de tupla puede afectar al significado de la posición de una tupla en la matriz (por ejemplo, puede indicar en una imagen visual que una tupla en la fila 1 está en la parte superior de la imagen en lugar de en la inferior).

El tipo de tupla nunca determina cuántas muestras hay en una tupla (esto en cambio lo determina la línea de encabezado DEPTH). Se podría decir que el tipo de tupla implica una profundidad (número de muestras por tupla) porque ciertos tipos de tuplas solo son válidos en combinación con ciertos valores de DEPTH, pero es una buena práctica de programación usar DEPTH para la profundidad al decodificar el mapa de bits y validar por separado que la profundidad sea coherente con el tipo de tupla. Además, es una buena práctica aceptar una profundidad que sea demasiado grande e ignorar simplemente las de mayor número.


PAM utilizado para imágenes visuales

Un uso común de las imágenes PAM es representar imágenes visuales, como las que se representan típicamente con las imágenes de los formatos PBM, PGM y PPM más antiguos y concretos.

Blanco y negro

Una imagen en blanco y negro, como la que se representaría alternativamente con una imagen PBM, tiene un tipo de tupla de "BLACKANDWHITE". Dicha imagen PAM tiene una profundidad de 1 y un maxval de 1, donde la única muestra en cada tupla es 0 para representar un píxel negro y 1 para representar un píxel blanco. El maxval, la altura, el ancho y el orden de las tuplas en el mapa de bits tienen la relación obvia con los de la imagen PBM equivalente.

Tenga en cuenta que en el formato PBM, un valor de muestra de cero significa blanco, pero en PAM, cero significa negro.

Escala de grises

Una imagen en escala de grises, como la que se representaría alternativamente con una imagen PGM, tiene un tipo de tupla de "GRAYSCALE". Dicha imagen PAM tiene una profundidad de 1. El maxval, la altura, el ancho y el mapa de bits tienen la relación obvia con los de la imagen PGM equivalente.

Color

Una imagen en color, como la que se representaría alternativamente con una imagen PPM, tiene un tipo de tupla de "RGB". Dicha imagen PAM tiene una profundidad de 3. El maxval, la altura, el ancho y el mapa de bits tienen la relación obvia con los de la imagen PPM equivalente. El primer plano representa el rojo, el segundo el verde y el tercero el azul.

Transparencia

Cada uno de los formatos de imagen visual mencionados anteriormente tiene una variación que contiene información de transparencia. En esa variación, el tipo de tupla tiene "\_ALPHA" añadido (por ejemplo, "RGB\_ALPHA") y un plano más. El plano de mayor número es el plano de opacidad (a veces denominado plano alfa o plano de transparencia).

En este tipo de imagen, el color representado por un píxel es en realidad una combinación de un color de primer plano especificado explícitamente y un color de fondo que se identificará más tarde.

Los planos distintos del plano de opacidad describen el color de primer plano. Una muestra en el plano de opacidad indica la opacidad del píxel, indicando qué fracción de la luz del píxel proviene del color de primer plano. El resto de la luz del píxel proviene del color de fondo (que no se especifica).

Por ejemplo, en una imagen GRAYSCALE\_ALPHA, suponga que el plano 0 indica un tono de gris del 60% y el plano 1 indica una opacidad del 25%. El color de primer plano es el gris del 60% y el 25% de ese valor contribuye al color final del píxel. El otro 75% proviene de algún color de fondo. Supongamos además que el color de fondo del píxel es blanco completo. Entonces, el color del píxel es el 90% de blanco: el 25% del primer plano del 60%, más el 75% del fondo del 100%.

El valor de la muestra es la fracción de opacidad descrita, como una fracción del maxval. Tenga en cuenta que no está ajustado gamma como las muestras de color de primer plano.

TIPO DE MEDIO DE INTERNET

No se ha registrado ningún tipo de medio de Internet (también conocido como tipo MIME, tipo de contenido) para PAM con IANA, pero el valor no oficial image/x-portable-arbitrarymap es asignado por esta especificación, para ser consistente con los valores convencionales para los formatos Netpbm más antiguos.

NOMBRE DE ARCHIVO

El sufijo convencional para el nombre de un archivo PAM es ".pam". Pero esto no es obligatorio.

VÉASE TAMBIÉN

Netpbm(1), pbm(1), pgm(1), ppm(1), pnm(1), libnetpbm(1)

FUENTE DEL DOCUMENTO

Esta página de manual fue generada por la herramienta Netpbm 'makeman' a partir de una fuente HTML. La documentación maestra está en

http://netpbm.sourceforge.net/doc/pam.html