Main Content

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.

apply

Bloques de proceso de imagen grande

Descripción

ejemplo

newbig = apply(bigimg,level,fun) procesa todos los bloques de la imagen grande en el nivel de resolución especificado utilizando la función y devuelve una nueva imagen grande que contiene los datos procesados.bigimgfunnewbig

newbig = apply(bigimg,level,fun,extraImages) procesa todos los bloques de imagen grande y una o más imágenes extra grandes.bigimgextraImages Utilice esta sintaxis cuando la función acepte varias entradas de imagen, como una imagen y una máscara.fun

newbig = apply(___,Name,Value) controla aspectos del procesamiento, como el procesamiento de datos en paralelo o bloques de relleno en el borde de la imagen, utilizando argumentos de par nombre-valor.

[newbig,other1,other2,...] = apply(___) devuelve varias salidas. Utilice esta sintaxis cuando la función devuelva varias salidas, incluidas las salidas de imagen y no de imagen.fun

Ejemplos

contraer todo

Cree un archivo .bigimage Este ejemplo utiliza una versión modificada de la imagen "tumor_091.tif" del archivo .Conjunto de datos CAMELYON16 La imagen original es una imagen de entrenamiento de un ganglio linfático que contiene tejido tumoral. La imagen original tiene ocho niveles de resolución, y el nivel más alto tiene resolución 53760-por-61440. La imagen modificada tiene solo tres niveles de resolución gruesa. La referencia espacial de la imagen modificada se ha ajustado para aplicar una relación de aspecto coherente y registrar entidades en cada nivel.

bim = bigimage('tumor_091R.tif'); 

Muestre la imagen grande utilizando la función.bigimageshow Visualice el nivel de resolución más fino en el lado izquierdo de una ventana de figura.

figure ha1 = subplot(1,2,1); bigimageshow(bim,'ResolutionLevel',1); title("Original Image") 

Mejore las estructuras de la imagen aplicando un filtro de medios no locales que conserva el borde a cada bloque en el nivel de resolución más fino, 1. Para este ejemplo, la función realiza estas operaciones en cada bloque de la entrada:applybigimage

  • Convierta el bloque al espacio de color L*a*b*.

  • Filtrar el bloque utilizando .imnlmfilt

  • Convierta el bloque de nuevo en el espacio de color RGB.

La función vuelve a combinar los bloques de salida para formar un nuevo archivo .applybigimage

bim_enhanced = apply(bim,1, ...     @(block)lab2rgb(imnlmfilt(rgb2lab(block),'DegreeOfSmoothing',15))); 

Muestre la imagen mejorada en el lado derecho de la ventana de figura.

ha2 = subplot(1,2,2); bigimageshow(bim_enhanced); title("Enhanced Image") 

Asegúrese de que ambas pantallas muestren las mismas extensiones y, a continuación, acerque una entidad.

linkaxes([ha1,ha2]); xlim([1600,2300]) ylim([1900,2600]) 

Argumentos de entrada

contraer todo

Imagen grande, especificada como un objeto.bigimage

Nivel de resolución, especificado como un entero positivo que es menor o igual que el número de niveles de resolución de .bigimg

Identificador de función, especificado como identificador. Para obtener más información, consulte .Create Function Handle

Entradas de función

La función debe aceptar al menos un bloque como entrada.fun

Opcionalmente, la función puede aceptar entradas adicionales que no son bloques. Para realizar el procesamiento con entradas que no son de bloque, debe llamar a la función y especificar la función anónima.applyfun Para obtener más información, consulte .Anonymous Functions

La tabla muestra firmas de función de ejemplo para diferentes tipos de entrada en .fun La tabla también muestra la sintaxis de ejemplo que se usará al llamar a .apply

Tipo de entradaFirma de funciónEjemplo de llamadaapply
Bloque único
function outblock = myfun(inblock)   ... end
newbig = apply(bigimg,level,@myfun);
Dos bloques
function outblock = myfun(inblock1,inblock2)   ... end

Especifique el segundo después del identificador de la función .bigimagemyfun

newbig = apply(bigimg,level,@myfun,otherbig);

Un bloque y un no-bloque
function outblock = myfun(inblock,nonblock)   ... end

Este ejemplo pasa un valor escalar a la función:37myfun

c = 37; mynewbig = apply(mybigimg,level,@(x) myfun(x,c));

Salidas de función

La función normalmente devuelve uno o más bloques de imagen del mismo tamaño que el bloque de entrada.fun En este caso, vuelve a combinar los bloques y devuelve un archivo .applybigimage Si especifica el argumento y desea una salida, recortará el borde de los bloques de salida.BorderSizeapplybigimageapply También puede recortar el bloque directamente dentro de .fun

Todos los ejemplos de la tabla anterior muestran una firma de función que devuelve un único bloque. Sin embargo, la función también puede devolver estructuras u otras salidas que no sean de imagen.fun

La tabla muestra firmas de función de ejemplo para diferentes tipos de salida de .fun La tabla también muestra la sintaxis de ejemplo que se usará al llamar a .apply

Tipo de salidaFunción de procesamiento de muestrasEjemplo de llamadaapply
Bloque del mismo tamaño que el bloque de entrada
function sameSizedBlock = myfun(inblock)   sameSizedBlock = imgaussfilt(inblock); end
bigimageOutput = apply(bigimg,level,@myfun);

es una resolución única.bigimageOutputbigimage En este ejemplo, tiene el mismo número de canales y tipo de datos que la entrada.bigimageOutputbigimg

Múltiples bloques del mismo tamaño que el bloque de entrada
function [sameSizedBlock,maskBlock] = myfun(inblock)   sameSizedBlock = rgb2lightness(inblock);   maskBlock = imbinarize(sameSizedBlock); end
[bigimageOutput1,bigimageOutput2] = apply(bigimgRGB,level,@myfun);

es una resolución única.bigimageOutput1bigimage En este ejemplo, si contiene una imagen de color, tiene un número diferente de canales que la entrada.bigimgRGBbigimageOutput1bigimgRGB

es una resolución única que tiene un número diferente de canales y un tipo de datos diferente que .bigimageOutput2bigimagebigimgRGB

No imagen
function nonimageOutput = myfun(inblock)   nonimageOutput = mean(inblock(:)) end

cellArrayOutput = apply(bigimg,level,@myfun);

es una matriz de celdas cuyos elementos son la salida no de imagen de cada bloque. tiene una columna adicional que especifica el origen (x,y) de cada bloque como un vector 1 por 2.cellArrayOutputcellArrayOutput

Estructura
function structOutput = myfun(inblock)   structOutput.num = numel(inblock);   structOutput.mean = mean(inblock(:));   structOutput.max = max(inblock(:)); end

es una tabla con cuatro variables: , , , y .

tableOutput = apply(mybigimg,level,@myfun);
tableOutputnummeanmaxBlockOrigin La variable especifica el origen (x,y) de cada bloque como un vector 1 por 2.BlockOrigin

Múltiples salidas
function [out1,out2,out3,out4,out5] = myfun(inblock)   % non-image output   out1 = min(inblock(:));   % image output of same size as input block   out2 = imgaussfilt(out2);   out3 = imbinarize(inblock);   % struct output   out4.originalMean = mean(inblock(:));   out4.filteredMean = mean(out2(:));   out4.fractionTrue = sum(out3(:))/numel(out3);   % non-image output   out5 = out4.fractionTrue; end

[c1,b2,b3,t4] = apply(mybigimg,level,@myfun);

es una matriz de celdas porque la primera salida de es una no imagen. y son s porque la segunda y tercera salidas de son bloques de imagen del mismo tamaño que el bloque de entrada. es una tabla porque la cuarta salida de es un struct.c1myfunb2b3bigimagemyfunt4myfun

La función omite el quinto argumento de salida de porque solo se especifican cuatro argumentos de salida en la llamada a .applymyfcnapply

Imágenes grandes de entrada adicionales, especificadas como un vector de objetos.bigimage Cada imagen grande debe tener las mismas extensiones espaciales que , pero los bloques no necesitan tener el mismo tamaño.bigimg Las imágenes grandes pueden tener diferentes valores de la ClassUnderlying Y Channels Propiedades.

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: newbig = apply(bigimg,level,@myfun,'UseParallel',true);

Utilice el procesamiento paralelo, especificado como el par separado por comas que consta de y o .'UseParallel'falsetrue El procesamiento paralelo requiere .Parallel Computing Toolbox™

Cuando se especifica como , se abre automáticamente un grupo paralelo en función de la configuración paralela predeterminada. los bloques a través de los trabajadores disponibles.UseParalleltrueMATLAB®applybigimage La propiedad de todas las entradas s debe ser una vía de acceso válida en cada uno de los trabajadores paralelos.DataSourcebigimage Si se utilizan rutas de acceso relativas, asegúrese de que los trabajadores y el proceso de cliente están en el mismo directorio de trabajo. Si los trabajadores no comparten el mismo sistema de archivos que el proceso de cliente, especifique .OutputFolder

Tipos de datos: logical

Ubicación para guardar la salida s, especificada como el par separado por comas que consta de y o .bigimage'OutputFolder'falsetrue El procesamiento paralelo requiere .Parallel Computing Toolbox

Tamaño de bloque, especificado como el par separado por comas que consta de un vector 1 por 2 de enteros positivos de la forma.'BlockSize'[numrows numcols] Si especifica , pasa bloques de tamaño a la función de procesamiento, . pasa todos los canales del bloque a .'BlockSize'apply[numrows numcols]funapplyfun

Tamaño de borde, especificado como el par separado por comas que consta de un vector 1 por 2 de enteros no negativos de la forma.'BorderSize'[numrows numcols] 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 con datos de los bloques vecinos.numrowsnumcols Para los bloques que se encuentran en el borde de una imagen, los datos se rellenan según .PadMethod De forma predeterminada, no se agrega ningún borde a los bloques.

Método Pad, especificado como el par separado por comas que consta de y uno de estos valores.'PadMethod'

Valor

Significado

escalar numérico

Matriz Pad con elementos de valor constante.

'replicate'

Pad repitiendo los elementos de borde de la matriz.

'symmetric'

Matriz pad con reflejos espejo de sí mismo.

Máscara, especificada como el par separado por comas que consta de y un objeto del mismo tamaño que y con un'Mask'bigimagebigimg ClassUnderlying valor de propiedad de .logical

La función solo procesa bloques que se superponen con bloques distintos de cero de la máscara.apply Si también especifica 'InclusionThreshold', el bloque que se debe procesar debe superponerse con un porcentaje mínimo de píxeles distintos de cero en un bloque de máscara. Si un bloque de imagen se superpone suficientemente a un bloque de máscara, envía todo el bloque de imagen a la función de procesamiento y procesa todos los píxeles del bloque. no puede acceder a la máscara directamente.applyfunfunfun

Un bloque de entrada puede superponerse a varios bloques de máscara cuando la imagen es más gruesa que la máscara o cuando el borde del bloque no se alinea con los bloques de máscara. Si un bloque de entrada se superpone a varios bloques de máscara, selecciona la máscara que se superpone con el centro del bloque de entrada.apply

Umbral de inclusión para bloques de máscara, especificado como el par separado por comas que consta de y un número en el intervalo [0, 1].'InclusionThreshold' El umbral de inclusión indica la fracción mínima de píxeles distintos de cero en un bloque de máscara necesario para procesar el bloque de imagen.

  • Cuando el umbral de inclusión es , procesa un bloque cuando al menos un píxel en el bloque de máscara correspondiente es distinto de cero.0apply

  • Cuando el umbral de inclusión es , solo procesa un bloque cuando todos los píxeles del bloque de máscara son distintos de cero.1apply

Mostrar barra de espera, especificada como el par separado por comas que consta de y o .'DisplayWaitbar'truefalse Cuando , la función muestra una barra de espera para las operaciones de larga ejecución.trueapply Si cierra la barra de espera, devuelve una salida parcial, si está disponible.apply

Tipos de datos: logical

Argumentos de salida

contraer todo

Imagen grande procesada, devuelta como un objeto con un único nivel de resolución.bigimage El número de filas y columnas de es igual al número de filas y columnas de la imagen grande de entrada a la resolución especificada.newbigbigimglevel Sin embargo, puede tener un número diferente de canales y una clase subyacente diferente.newbig

Salida adicional de la función de procesamiento , devuelta como una de las siguientes.fun Si devuelve varios argumentos de salida, puede devolver el mismo número o menos argumentos de salida.funapply

Valor

Ocurrencia

Objetobigimage

devuelve un argumento de salida correspondiente de devuelve datos como una matriz numérica o lógica del mismo tamaño que el bloque de entrada, o el tamaño rellenado del bloque de entrada cuando se especifica el argumento.applybigimagefcnBorderSize

El valor devuelto tiene un único nivel de resolución, pero puede tener un número diferente de canales y la clase subyacente.bigimage

Mesa

devuelve un argumento de salida cuando el argumento de salida correspondiente de devuelve datos como un archivo .applytablefcnstruct La tabla tiene una variable adicional que especifica el origen (x,y) de cada bloque como un vector 1 por 2 en coordenadas mundiales.BlockOrigin

matriz de células

devuelve una matriz de celdas cuando el argumento de salida correspondiente de devuelve datos como una imagen no.applyfcn La matriz de celdas tiene una columna adicional que especifica el origen (x,y) de cada bloque como un vector 1 por 2 en coordenadas mundiales.

Algoritmos

pasa los datos a la función de procesamiento, , un bloque a la vez en el orden más eficaz para recorrer los datos (a menudo orden de bloque de fila mayor). procesa cada bloque una sola vez.applyfunapply

Es ineficiente realizar muchas operaciones de procesamiento realizando varias llamadas a porque los datos se deben recorrer varias veces.apply Para optimizar el tiempo de procesamiento, defina de modo que realice varias operaciones de procesamiento.fun Esto minimiza la sobrecarga de lectura y escritura y garantiza la localización de datos. Puede reducir aún más el tiempo de procesamiento en un nivel determinado utilizando máscaras creadas a niveles de resolución más gruesos para excluir las regiones de la imagen del procesamiento.

Introducido en R2019b