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

Descripción

ejemplo

B = blockproc(A,[m n],fun) procesa la imagen aplicando la función a cada bloque distinto de tamaño 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, leyendo y procesando un bloque a la vez.src_filename Esta sintaxis es útil para procesar imágenes grandes.

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

ejemplo

blockproc(___,Name,Value) utiliza argumentos de par nombre-valor para controlar varios aspectos del comportamiento del bloque.

Ejemplos

contraer todo

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

Procesa la imagen, bloque por bloque.

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

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

Muestre 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 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 lo que 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 por 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 tener un nombre 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 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 .Realizar el procesamiento de bloques en archivos de imagen en formatos no compatibles

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 identificador. La función debe aceptar un Más acerca deblock_struct como entrada y devolver una matriz, vector o escalar. Si devuelve vacío, 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, consulte .Create Function Handle

Argumentos de par nombre-valor

Especifique pares opcionales separados por comas de argumentos. es el nombre del argumento y es el valor correspondiente. deben aparecer entre comillas.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' Cuando se especifica el argumento, no devuelve la imagen procesada como argumento de salida, sino que escribe la salida en el archivo de destino.'Destination'blockproc

  • Un vector de caracteres con un nombre de archivo de destino. Los archivos deben tener uno de estos tipos de archivo y deben tener un nombre 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 .Realizar el procesamiento de bloques en archivos de imagen en formatos no compatibles

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 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 agregarán a cada bloque, especificado como el par separado por comas que consta de un vector de 2 elementos de enteros positivos, de la forma.'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 elimina automáticamente el borde del resultado de .fun Consulte el argumento para obtener más información.TrimBorder

Los paneles de funciones se bloquean con bordes que se extienden más allá de los bordes de la imagen con ceros.

Rellena los bloques parciales 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 , rellena bloques parciales para convertirlos en bloques de tamaño completo -por-.trueblockprocmn El valor predeterminado es , lo que significa que la función no rellena los bloques parciales, sino que los procesa tal como está. utiliza ceros para rellenar bloques parciales cuando es necesario.falseblockproc

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

ValorDescripción
'replicate'Repita los elementos de borde.
'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 el par separado por comas que consta de o .'TrimBorder'truefalse Cuando se establece en , la función elimina los píxeles de borde de la salida de la función de usuario, .trueblockprocfun La función elimina filas de la parte superior e inferior de la salida de , y 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 , 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 imágenes 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, establezca en .blockprocDisplayWaitbarfalse

Argumentos de salida

contraer todo

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

Más acerca de

contraer todo

Estructura de bloques

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

CampoDescripción
borderVector de 2 elementos de la forma.[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 de la forma.[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 de borde.
data-por- o -por- -por- matriz de datos de bloque.mnmnp
imageSizeVector de 2 elementos de la forma.[rows cols] El campo especifica el tamaño completo de la imagen de entrada.imageSize
locationVector de 2 elementos de la forma.[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 de borde agregados.

Sugerencias

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

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

  • Si escribe una imagen TIFF en un archivo utilizando el argumento de par nombre-valor y el tamaño del archivo es mayor que 4,0 Gb, guarda la imagen como una imagen BigTIFF.Destinationblockproc Para determinar si el archivo es TIFF estándar o BigTIFF, consulte la firma de formato de imagen utilizando la función:imfinfo

    tiffinfo = imfinfo(Destination); tiffformat = tiffinfo.FormatSignature

    Si el último valor distinto de cero es 42, el archivo está en el formato TIFF estándar.tiffformat Si el último valor distinto de cero es 43, el archivo está en el formato BigTIFF.

Capacidades ampliadas

Introducido en R2009b