image

condenseImages

Descripción

Condensa los valores de los píxeles de una tabla plana en una tabla de imágenes de CAS. Esta acción es la operación inversa a la acción `flattenImages`. Es útil para reconstruir imágenes a partir de datos de píxeles tabulares, por ejemplo, después de realizar manipulaciones de datos en los valores de los píxeles.

image.condenseImages <result=results> <status=rc> / casOut={<casouttable>}, copyVars={"variable-name-1" <, "variable-name-2", ...>}, decode={<decodeParmsList>}, depth="BIT32" | "BIT64" | "BIT8" | 64-bit-integer, groupedChannels=TRUE | FALSE, height=64-bit-integer, inputs={{casinvardesc-1} <, {casinvardesc-2}, ...>}, numberOfChannels="COLOR_IMAGE" | "GRAY_SCALE_IMAGE" | 64-bit-integer, table={<castable>}, width=64-bit-integer ;
Parámetros
ParámetroDescripción
casOutEspecifica la tabla de salida para almacenar las imágenes condensadas.
copyVarsEspecifica una lista de variables para copiar de la tabla de entrada a la tabla de salida.
decodeEspecifica si se deben decodificar las imágenes. Esto es útil si la tabla de salida necesita contener las imágenes en un formato visual en lugar de solo los datos binarios.
depthEspecifica la profundidad de bits de los píxeles en las imágenes de salida (por ejemplo, 8 para escala de grises, 32 para color).
groupedChannelsCuando se establece en True, asume que los píxeles de las imágenes en la tabla de entrada están agrupados por canal (por ejemplo, BB...GG...RR...).
heightEspecifica la altura de las imágenes de salida.
inputsEspecifica las variables de entrada que contienen los valores de los píxeles para construir las imágenes.
numberOfChannelsEspecifica el número de canales en las imágenes de salida (por ejemplo, 1 para escala de grises, 3 para color).
tableEspecifica la tabla de entrada que contiene los datos de los píxeles aplanados.
widthEspecifica la anchura de las imágenes de salida.
Creación de Datos de Píxeles Aplanados

Este bloque de código crea una tabla CAS llamada 'pixel_data' que contiene los valores de los píxeles para dos imágenes pequeñas de 2x2 en escala de grises. Cada fila representa un único píxel con su identificador de imagen, coordenadas (fila, columna) y valor.

¡Copiado!
1DATA casuser.pixel_data;
2 LENGTH _id_ $20;
3 /* Image 1 */
4 _id_ = 'image1'; _channel_ = 0; _row_ = 0; _col_ = 0; _value_ = 10; OUTPUT;
5 _id_ = 'image1'; _channel_ = 0; _row_ = 0; _col_ = 1; _value_ = 50; OUTPUT;
6 _id_ = 'image1'; _channel_ = 0; _row_ = 1; _col_ = 0; _value_ = 100; OUTPUT;
7 _id_ = 'image1'; _channel_ = 0; _row_ = 1; _col_ = 1; _value_ = 150; OUTPUT;
8 /* Image 2 */
9 _id_ = 'image2'; _channel_ = 0; _row_ = 0; _col_ = 0; _value_ = 200; OUTPUT;
10 _id_ = 'image2'; _channel_ = 0; _row_ = 0; _col_ = 1; _value_ = 210; OUTPUT;
11 _id_ = 'image2'; _channel_ = 0; _row_ = 1; _col_ = 0; _value_ = 220; OUTPUT;
12 _id_ = 'image2'; _channel_ = 0; _row_ = 1; _col_ = 1; _value_ = 230; OUTPUT;
13RUN;

Ejemplos

Este ejemplo toma la tabla 'pixel_data' y la condensa en una nueva tabla de imágenes llamada 'image_table'. Especifica que las imágenes son de 2x2 píxeles con 1 canal (escala de grises).

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1 
2PROC CAS;
3image.condenseImages / TABLE={name='pixel_data', groupBy={'_id_'}}, inputs={{name='_value_'}}, casOut={name='image_table', replace=true}, width=2, height=2, numberOfChannels=1;
4 
5RUN;
6 
Resultado :
Una tabla CAS llamada 'image_table' que contiene dos filas, una para cada imagen ('image1' e 'image2'). La tabla incluirá una columna '_image_' que contiene los datos binarios de la imagen condensada, así como las columnas de agrupación.

Este ejemplo demuestra cómo condensar datos de píxeles para una imagen en color (3 canales). También utiliza el parámetro `copyVars` para transferir una columna de metadatos ('source') de la tabla de entrada a la de salida.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1/* 1. Crear datos de ejemplo para una imagen en color */
2DATA casuser.pixel_data_color;
3 LENGTH _id_ $20 SOURCE $50;
4 SOURCE = 'synthetic_data';
5 /* Image 1 - Canal Rojo */
6 _id_ = 'color_image1'; _channel_ = 0; _row_ = 0; _col_ = 0; _value_ = 255; OUTPUT;
7 _id_ = 'color_image1'; _channel_ = 0; _row_ = 0; _col_ = 1; _value_ = 0; OUTPUT;
8 /* Image 1 - Canal Verde */
9 _id_ = 'color_image1'; _channel_ = 1; _row_ = 0; _col_ = 0; _value_ = 0; OUTPUT;
10 _id_ = 'color_image1'; _channel_ = 1; _row_ = 0; _col_ = 1; _value_ = 255; OUTPUT;
11 /* Image 1 - Canal Azul */
12 _id_ = 'color_image1'; _channel_ = 2; _row_ = 0; _col_ = 0; _value_ = 0; OUTPUT;
13 _id_ = 'color_image1'; _channel_ = 2; _row_ = 0; _col_ = 1; _value_ = 0; OUTPUT;
14RUN;
15 
16/* 2. Condensar la imagen */
17PROC CAS;
18 image.condenseImages /
19 TABLE={name='pixel_data_color', groupBy={'_id_'}},
20 inputs={{name='_value_'}},
21 copyVars={'source'},
22 casOut={name='color_image_table', replace=true},
23 width=2,
24 height=1,
25 numberOfChannels=3,
26 groupedChannels=false;
27RUN;
Resultado :
Una tabla CAS llamada 'color_image_table' con una fila para 'color_image1'. La tabla contendrá la columna de imagen binaria '_image_', la columna de agrupación '_id_', y la columna copiada 'source'.

FAQ

¿Qué hace la acción `condenseImages`?
¿Cuál es el propósito del parámetro `table`?
¿Para qué se utiliza el parámetro `casOut`?
¿Cómo puedo especificar las dimensiones de las imágenes de salida?
¿Qué controla el parámetro `numberOfChannels`?
¿Qué hace el parámetro `copyVars`?
¿Cómo funciona el parámetro `decode`?
¿Qué significa el parámetro `groupedChannels`?