Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

blockproc

Procesamiento de bloques distinto para la imagen

Sintaxis

B = blockproc(A,[m n],fun)
B = blockproc(src_filename,[m n],fun)
B = blockproc(adapter,[m n],fun)
blockproc(___,Name,Value)

Descripción

ejemplo

B = blockproc(A,[m n],fun) procesa la imagen A aplicando la función fun a cada bloque distintivo de tamaño [m n] y concatenando los resultados en la matriz de salida, B.

ejemplo

B = blockproc(src_filename,[m n],fun) procesa la imagen con el nombre de archivo src_filename, leyendo y procesando un bloque a la vez. Esta sintaxis es útil para procesar imágenes grandes.

B = blockproc(adapter,[m n],fun) procesa la imagen de origen especificada por adapter, un objeto ImageAdapter .

ejemplo

blockproc(___,Name,Value) procesa la imagen de entrada, especificando argumentos y valores correspondientes que controlan varios aspectos del comportamiento del bloque. Los nombres de argumentos son insensibles a mayúsculas.

Ejemplos

contraer todo

Lea la imagen en el espacio de trabajo.

I = imread('pears.png');

Crear la función de procesamiento de bloques.

fun = @(block_struct) imresize(block_struct.data,0.15);

Procese la imagen bloque por bloque.

I2 = blockproc(I,[100 100],fun);

Mostrar la imagen original y la imagen procesada.

figure; imshow(I);

figure; imshow(I2);

Crear la función de procesamiento de bloques.

fun = @(block_struct) ...    std2(block_struct.data) * ones(size(block_struct.data));

Realice la operación de procesamiento de bloques, especificando la imagen de entrada por nombre de archivo.

I2 = blockproc('moon.tif',[32 32],fun);

Muestra la imagen original y la versión procesada.

figure; imshow('moon.tif');

figure; imshow(I2,[]);

Lea la imagen en el espacio de trabajo.

I = imread('peppers.png');

Crear la función de procesamiento de bloques.

fun = @(block_struct) block_struct.data(:,:,[2 1 3]);

Realice la operación de procesamiento de bloques.

blockproc(I,[200 200],fun,'Destination','grb_peppers.tif');

Mostrar la imagen original y la imagen procesada.

figure; imshow('peppers.png');

figure; imshow('grb_peppers.tif');

Nota: Para ejecutar este ejemplo, debe reemplazar 'largeImage.tif' por el nombre del archivo.

Crear la función de procesamiento de bloques.

fun = @(block_struct) block_struct.data; 

Convertir una imagen TIFF en una nueva imagen JPEG2000. Reemplace 'largeImage.tif' con el nombre de un archivo de imagen real.

blockproc('largeImage.tif',[1024 1024],fun,'Destination','New.jp2'); 

Argumentos de entrada

contraer todo

Imagen de entrada, especificada como una matriz numérica.

Nombre del archivo de origen, especificado como vector de carácter. Los archivos deben tener uno de estos tipos de archivos y deben ser nombrados con una de las extensiones de archivo enumeradas.

  • TIFF (*. tif, *. TIFF)

  • JPEG2000 (*. jp2, *. JPF, *. jpx, *. J2C, *. J2K)

Tipos de datos: char

Adaptador de imagen, especificado como un objeto ImageAdapter . Un ImageAdapter es una clase definida por el usuario que proporciona a blockproc una API común para leer y escribir en un formato de archivo de imagen determinado. Para obtener más información, consulte Perform Block Processing on Image Files in Unsupported Formats.

Tamaño de bloque, especificado como un vector de 2 elementos. m es el número de filas y n es el número de columnas del bloque.

Identificador de función, especificado como identificador. La función debe aceptar un block_struct como entrada y devolver una matriz, Vector, o escalar. Si fun vuelve a estar vacío, entonces blockproc no genera ninguna salida y devuelve vacío después de procesar todos los bloques.

Para obtener más información acerca de los identificadores de función, consulte Crear identificador de función (MATLAB).

Argumentos de par nombre-valor

Especifique pares opcionales separados por comas de argumentos Name,Value . Name es el nombre del argumento y Value es el valor correspondiente. Name debe aparecer dentro de comillas simples (' '). Puede especificar varios argumentos de par de nombre y valor en cualquier orden como Name1,Value1,...,NameN,ValueN.

Ejemplo: 'BorderSize',[8 4]

Destino de la salida, especificado como el par separado por comas consistente en 'Destination' y uno de los siguientes.

  • Un vector de caracteres con un nombre de archivo de destino. Los archivos deben tener uno de estos tipos de archivos y deben ser nombrados con una de las extensiones de archivo enumeradas.

    • TIFF (*. tif, *. TIFF)

    • JPEG2000 (*. jp2, *. J2C, *. J2K)

    Si existe un archivo con este nombre, se sobrescribe.

  • Un objeto ImageAdapter , que proporciona una API común para leer y escribir en un formato de archivo de imagen determinado. Para obtener más información, consulte Perform Block Processing on Image Files in Unsupported Formats.

Cuando se especifica el argumento 'Destination' , blockproc no devuelve la imagen procesada como un argumento de salida, sino que escribe el resultado en el 'Destination'. El argumento 'Destination' es útil cuando se espera que el resultado sea demasiado grande para que quepa en la memoria. Proporciona un flujo de trabajo para el procesamiento de imágenes de archivo a archivo para imágenes arbitrariamente grandes.

Nota

No se puede solicitar un argumento de salida cuando se especifica el argumento'Destination' .

Número de píxeles de borde que se agregan a cada bloque, especificado como el par separado por comas consistente en 'BorderSize' y un vector de 2 elementos de enteros positivos, del formulario [v h]. La función añade v filas por encima y por debajo de cada bloque y h columnas izquierda y derecha de cada bloque. El tamaño de cada bloque resultante es:

[m+2*v, n+2*h]

De forma predeterminada, la función elimina automáticamente el borde del resultado de fun. Consulte el argumento TrimBorder para obtener más información.

La función rellena bloques con bordes que se extienden más allá de los bordes de la imagen con ceros.

Bloques parciales de pad para hacerlos de tamaño completo, especificados como el par separado por comas consistente en 'PadPartialBlocks' y false o true. Los bloques parciales surgen cuando el tamaño de la imagen no es exactamente divisible por el tamaño del bloque. Si existen, los bloques parciales se encuentran a lo largo del borde derecho e inferior de la imagen.

Cuando se establece en true, blockproc pads bloques parciales para hacerlos de tamaño completo m-por-n bloques. El valor predeterminado es false, lo que significa que la función no rellenará los bloques parciales, sino que los procesará tal cual. blockproc usa ceros para rellenar bloques parciales cuando es necesario.

Método utilizado para rellenar el límite de imagen, especificado como el par separado por comas consistente en 'PadMethod' y uno de los siguientes.

ValorDescripción
'replicate'Repita los elementos fronterizos.
'symmetric'Imagen de pad con reflejos espejo de sí mismo.
escalar numéricoImagen de pad con un valor escalar. De forma predeterminada, el límite de la imagen se rellena con el valor 0.

Tipos de datos: char | string

Elimine los píxeles de borde de la salida de la función de usuario, especificados como pares separados por comas que consisten en 'TrimBorder' y true o false. Cuando se establece en true, la función blockproc quita los píxeles de borde de la salida de la función User, fun. La función quita v filas de la parte superior e inferior de la salida de fun, y h columnas de los bordes izquierdo y derecho. El argumento BorderSize define v y h.

Utilice el procesamiento en paralelo, especificado como el par separado por comas consistente en 'UseParallel' y false o true. Este modo de procesamiento de imágenes requiere el Parallel Computing Toolbox™. Cuando se establece en true, blockproc intenta ejecutarse en modo paralelo, distribuyendo el procesamiento entre varios trabajadores (sesionesMATLAB® ) en un pool de MATLAB abiertos. En modo paralelo, la imagen de entrada no puede ser un ImageAdapter Objeto. Consulte parpool para obtener información sobre cómo configurar su entorno paralelo.

Mostrar barra de espera, especificada como el par separado por comas consistente en 'DisplayWaitbar' y true o false. Cuando se establece en true, blockproc muestra un waitbar para indicar el progreso de las operaciones de ejecución prolongada. Para evitar que blockproc muestre un waitbar, establezca DisplayWaitbar en false.

Argumentos de salida

contraer todo

Matriz de salida, devuelta como una matriz numérica.

Más acerca de

contraer todo

Block struct

Un Block struct es una estructura MATLAB que contiene los datos del bloque y otra información sobre el bloque. Los campos en el Block struct son:

CampoDescripción
borderVector de 2 elementos de la forma [v h]. El campo border especifica el tamaño del relleno vertical y horizontal alrededor del bloque de datos. Consulte el argumento BorderSize para obtener más información.
blockSizeVector de 2 elementos de la forma [rows cols]. El campo blockSize especifica el tamaño de los datos de bloque. Si se ha especificado un borde, el tamaño no incluye los píxeles del borde.
datam-por-n o m-por-n-por-p matriz de datos de bloque.
imageSizeVector de 2 elementos de la forma [rows cols]. El campo imageSize especifica el tamaño completo de la imagen de entrada.
locationVector de 2 elementos de la forma [row col]. El campo location especifica la posición del primer píxel (mínimo-fila, mínima-columna) de los datos de bloque en la imagen de entrada. Si se ha especificado un borde, la ubicación se refiere al primer píxel de los datos de bloques discretos, no a los píxeles de borde agregados.

Sugerencias

  • Elegir un tamaño de bloque adecuado puede mejorar significativamente el rendimiento. Para obtener más información, consulte Block Size and Performance.

  • Si la matriz de salida B es demasiado grande para caber en la memoria, omita el argumento Output y, en su lugar, utilice el argumento Destination name-value pair para escribir el resultado en un archivo.

Introducido en R2009b