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 diferenciado para la imagen

Descripción

ejemplo

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

ejemplo

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

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

ejemplo

blockproc(___,Name,Value) procesa la imagen de entrada, especificando los argumentos y los valores correspondientes que controlan diversos aspectos del comportamiento del bloque. Los nombres de argumento no distinguen mayúsculas de minúsculas.

Ejemplos

contraer todo

Leer la imagen en el espacio de trabajo.

I = imread('pears.png');

Crear 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);

Visualice la imagen original y la imagen procesada.

figure; imshow(I);

figure; imshow(I2);

Crear 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);

Visualice la imagen original y la versión procesada.

figure; imshow('moon.tif');

figure; imshow(I2,[]);

Leer la imagen en el espacio de trabajo.

I = imread('peppers.png');

Crear 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');

Visualice la imagen original y la imagen procesada.

figure; imshow('peppers.png');

figure; imshow('grb_peppers.tif');

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

Crear función de procesamiento de bloques.

fun = @(block_struct) block_struct.data; 

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

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

Argumentos de entrada

contraer todo

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

Nombre de archivo de origen, especificado como vector de caracteres. Los archivos deben tener uno de estos tipos de archivo y deben nombrarse 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 Una es una clase definida por el usuario que proporciona una API común para leer y escribir en un formato de archivo de imagen determinado.ImageAdapterblockproc Para obtener más información, consulte.Realice el procesamiento de bloques en archivos de imagen en formatos no admitidos

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

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

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

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.Name,ValueNameValueName 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 que consta de y uno de los siguientes.'Destination'

  • Un vector de caracteres con un nombre de archivo de destino. Los archivos deben tener uno de estos tipos de archivo y deben nombrarse 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, que proporciona una API común para leer y escribir en un formato de archivo de imagen determinado.ImageAdapter Para obtener más información, consulte.Realice el procesamiento de bloques en archivos de imagen en formatos no admitidos

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

Nota

No 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, especificados como el par separado por comas que consta de un vector de 2 elementos de enteros positivos, y uno de ellos, del formulario.'BorderSize'[v h] La función agrega filas por encima y por debajo de cada bloque y columnas a la izquierda y a la derecha de cada bloque.vh El tamaño de cada bloque resultante es:

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

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

Los pads de función se bloquean 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 que consta de y o.'PadPartialBlocks'falsetrue 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, pads bloques parciales para hacerlos de tamaño completo por bloques.trueblockprocmn El valor predeterminado es, lo que significa que la función no Pad los bloques parciales, pero los procesa como-es. utiliza ceros para rellenar bloques parciales cuando sea necesario.falseblockproc

Método utilizado para rellenar el contorno de la imagen, especificado como el par separado por comas que consta de y uno de los siguientes.'PadMethod'

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

Tipos de datos: char | string

Quite los píxeles del borde de la salida de la función de usuario, especificado como el par separado por comas que consta de y o.'TrimBorder'truefalse Cuando se establece en, la función quita los píxeles del borde de la salida de la función de usuario,.trueblockprocfun La función quita las filas de la parte superior e inferior de la salida y de las columnas de los bordes izquierdo y derecho.vfunh El argumento define y.BorderSizevh

Utilice el procesamiento paralelo, especificado como el par separado por comas que consta de y o.'UseParallel'falsetrue Si ha instalado, cuando se establece en, se abre automáticamente un grupo paralelo de trabajadores en el equipo local. ejecuta el cálculo entre los trabajadores disponibles.Parallel Computing Toolbox™trueMATLAB®blockproc Para obtener más información, consulte.Procesamiento de bloques paralelos en archivos de imagen grandes

Mostrar barra de espera, especificada como el par separado por comas que consta de y o.'DisplayWaitbar'truefalse Cuando se establece en, muestra una barra de espera para indicar el progreso de las operaciones de ejecución prolongada.trueblockproc Para evitar que se muestre una barra de espera, se establece en.blockprocDisplayWaitbarfalse

Argumentos de salida

contraer todo

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

Más acerca de

contraer todo

Bloque struct

A es una estructura que contiene los datos de bloque y otra información sobre el bloque.block structMATLAB Los campos en el son:block struct

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

Sugerencias

  • La elección de un tamaño de bloque adecuado puede mejorar significativamente el rendimiento. Para obtener más información, consulte.Tamaño de bloque y rendimiento

  • Si la matriz de salida es demasiado grande para caber en la memoria, omita el argumento de salida y, en su lugar, use el argumento de par nombre-valor para escribir la salida en un archivo.BDestination

Capacidades ampliadas

Introducido en R2009b