<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />He leído 350 imágenes .jpeg en una tabla de datos JMP con las imágenes reales en una columna de Expresión. ¿Puedo usar el procesamiento de imágenes (por ejemplo, el guión de John Ponte) en las imágenes contenidas en la columna de expresión?
Me encanta la idea de leer las imágenes directamente de la columna de datos, por lo que acabo de modificar el Analizador de imágenes y creó el Analizador de columna de imagen . Funciona como el analizador de imágenes, excepto que en lugar de elegir un archivo de imagen, puede elegir la tabla de datos que contiene las imágenes. Puede desplazarse por las imágenes y crear una tabla de datos para cualquier imagen que desee.
También te iba a dar un script que haría lo mismo (más automatizado, sin interactividad) pero parece que vince.faller0 vencerme a eso
¡Disfrutar!
Si todo lo que necesitas es una tabla de datos para cada imagen y no la interactividad de su ventana. Esto debería funcionar.
// Edición del analizador de imágenes de John Ponte.
dt = tabla de datos actual ();
nr = las filas (dt);
image_col = Columna (dt, "Imagen" );
para (i = 1 , i <= nr, i ++,
img = image_col ;
{r, g, b} = img << Obtener píxeles ( "rgb" );
numRows = nrow (r);
numCols = ncol (r);
// Verificar imagen en escala de grises
grayScale = Y ( Todos (r == g), Todos (g == b));
Si (Escala de grises,
// r, g, b son todos iguales, entonces esa es la intensidad.
// tono y sat son 0 (sin color) y la luminancia es la misma que la intensidad.
intensidad = r;
dt_Ref = Nueva mesa ( "Dato de referencia" ,
nuevoColumna ( "X" , establecer valores ( repetir ( 1 :: numCols, numRows))),
nuevoColumna ( "Y" , establecer valores ( forma ( repetir ( 1 :: numRows, numCols) `, numCols, numRows))),
nuevoColumna ( "YO" , establecer valores (intensidad)),
);
,
// Convertir rgb a matriz de escala de grises (intensidad)
intensidad = 0.3 * r + 0,59 * g + 0.11 *segundo;
// Obtenga los valores de píxeles como colores JSL y luego conviértalos a tono, luminosidad y saturación
// Los colores HLS están en el espacio de color normalizado (0.0-1.0)
jslColors = img << getPixels ();
{h, l, s} = ColorToHLS (jslColors);
dt = Nueva mesa ( "Mesa " || Carbonizarse (yo),
nuevoColumna ( "X" , establecer valores ( repetir ( 1 :: numCols, numRows))),
nuevoColumna ( "Y" , establecer valores ( forma ( repetir ( 1 :: numRows, numCols) `, numCols, numRows))),
nuevoColumna ( "R" , establecer valores (r)),
nuevoColumna ( "SOL" , establecer valores (g)),
nuevoColumna ( "SEGUNDO" , establecer valores (b)),
nuevoColumna ( "YO" , establecer valores (intensidad)),
nuevoColumna ( "H" , establecer valores (h * 360 )),
nuevoColumna ( "L" , establecer valores (l)),
nuevoColumna ( "S" , establecer los valores (s),
);
);
);
Idealmente, me gustaría obtener una tabla de datos separada con los valores RGB y HLS para cada una de las 350 imágenes .jpeg en la columna Expresión. Encontré un script para leer en varios archivos .jpeg de una carpeta y Procesamiento de imágenes cada uno, pero no pude hacerlo funcionar. Pude leer las 350 imágenes en una tabla JMP utilizando el tipo de datos de Expresión, por lo que me preguntaba si podría procesar las imágenes directamente en esa columna.
Y sí, las imágenes son Char to Blob () con mucho jibberish entre los paréntesis.
Gracias de antemano por tu ayuda,
Brant
¿Necesitas la interactividad? La columna expr () debería ser simplemente char to blob () o algo (si recuerdo bien), por lo que toda la información debería estar allí.
Si editas el impresionante analizador de imágenes de John P para elegir una fila (o una fila nombrada por columna o algo), debería funcionar igual. Si necesita ayuda con esto, hágamelo saber. He jugado con su guión bastante extensamente.