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.

bigimageDatastore

Almacén de datos para gestionar bloques de big image data

Descripción

A administra una colección de bloques de imagen que pertenecen a uno o varios objetos.bigimageDatastorebigimage A es análogo a un , que administra una colección de imágenes no relacionadas.bigimageDatastoreimageDatastore

Creación

Descripción

bigds = bigimageDatastore(Images,Levels) crea un almacén de datos que administra una colección de bloques de imagen que pertenecen a uno o más objetos,bigimage Images, en los niveles de resolución especificados, Levels.

ejemplo

bigds = bigimageDatastore(Images,Levels,Name,Value) también utiliza pares nombre-valor para establecer uno o más de los BlockSize, BlockOffsets, Masks, InclusionThresholdO IncompleteBlocks Propiedades. Puede especificar varios pares nombre-valor. Incluya cada nombre de propiedad entre comillas.

Por ejemplo, crea un almacén de datos que lee bloques de tamaño 128 por 128 en el nivel de resolución 3 a partir de bloques de borde parciales de imagen grande y cero pads.bigimageDatastore(bigimg,3,'BlockSize',[128 128],'IncompleteBlocks','pad')bigimg

Propiedades

expandir todo

Imágenes grandes que proporcionan bloques para el , especificado como un vector -elemento de objetos.bigimageDatastorebbigimage Para leer diferentes niveles de resolución de la misma imagen grande, especifique la misma imagen varias veces en el vector.

Nivel de resolución de bloques de cada imagen grande en Images, especificado como un escalar entero positivo o un vector -elemento de enteros positivos.b Si especifica un valor escalar, todas las imágenes grandes suministran bloques al mismo nivel de resolución.bigimageDatastore

Tipos de datos: double

Tamaño de bloque de los datos de lectura, especificado como un vector 1 por 2 de enteros positivos del formulario.[numrows numcols] El valor predeterminado es igual a la propiedad del primer objeto enBlockSizebigimage Images en el primer nivel de resolución en Levels.

Imágenes de máscara, especificadas como un objeto escalar o un vector -elemento de objetos con una clase subyacente de tipo de datos.bigimagebbigimagelogical La propiedad determina qué bloques se incluirán al llamar a .Masksread De forma predeterminada, lee todos los bloques.bigimageDatastore

Umbral de inclusión para bloques de máscara, especificado como un vector numérico escalar o -elemento con valores en el intervalo [0, 1].b El umbral de inclusión especifica el porcentaje mínimo de píxeles distintos de cero ( ) en un bloque de máscara necesario para leer el bloque de imagen.true

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

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

Tamaño del borde, especificado como un vector 1 por 2 de enteros no negativos del formulario.[m n] 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.mn Para los bloques que se encuentran en el borde de una imagen, los datos se rellenan de acuerdo con IncompleteBlocks. De forma predeterminada, no se agrega ningún borde a los bloques.

Desplazamientos de bloque, especificados como vector 1 por 2 de enteros positivos de la forma.[numrows numcols]

El valor predeterminado es igual a BlockSize. Utilice un valor menor para obtener bloques superpuestos durante las llamadas a .read Utilice un valor mayor para agregar un espacio entre bloques.

Método para manejar bloques de borde que son más pequeños que BlockSize, especificado como uno de estos valores.

Valor

Significado

"same"

Devuelve datos del mismo tamaño que el bloque perimetral.

"exclude"

No incluya bloques de borde en las llamadas a .read

"pad"

Pad bloques incompletos al mismo tamaño que el uso del método de pad especificado porBlockSize PadMethod.

Método Pad de bloques de borde incompletos, especificado como uno de estos valores. De forma predeterminada, los bloques incompletos de cero pads.bigimageDatastore

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.

Número de bloques que se devolverán en cada llamada a , especificado como un entero positivo.read

Funciones del objeto

combineCombine data from multiple datastores
hasdataDetermine if data is available to read
numpartitionsNumber of datastore partitions
partitionParticiónbigimageDatastore
previewPreview subset of data in datastore
readLeer datos debigimageDatastore
readRelativeLeer bloque vecino de usar la posición relativabigimageDatastore
resetReset datastore to initial state
shuffleDatos aleatorios en el almacén de datos
transformTransform datastore

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

Mostrar el tamaño de bloque predeterminado de la en cada nivel de resolución.bigimage El tamaño de bloque es un vector de 2 elementos de la forma [ , ].numrowsnumcols

t = table((1:3)',bim.BlockSize,'VariableNames',["Level" "Block Size"]); disp(t)
    Level     Block Size      _____    ____________        1      1024    1024       2      1024    1024       3      1024    1024 

Visualice la función mediante la función.bigimagebigimageshow

bigimageshow(bim);

Cree un nivel de resolución 1.bigimageDatastore Especifique un tamaño de bloque no predeterminado. Establezca el almacén de datos para que lea cuatro bloques a la vez.

bimds = bigimageDatastore(bim,2,'BlockSize',[512 512])
bimds =    bigimageDatastore with properties:                ReadSize: 1             BorderSize: [0 0]              PadMethod: 0     InclusionThreshold: 0.5000                  Masks: [0x0 bigimage]                 Images: [1x1 bigimage]                 Levels: 2              BlockSize: [512 512]           BlockOffsets: [512 512]       IncompleteBlocks: 'same'  
bimds.ReadSize = 4;

Lea un lote de datos del almacén de datos. Observe que el tercer bloque es un bloque de borde parcial y tiene un tamaño menor que los bloques interiores. Muestre los parches de imagen devueltos como un montaje. El montaje muestra el tercer bloque con un borde más grueso porque el ancho del bloque es menor que el ancho de los bloques completos.

blocks = read(bimds)
blocks=4×1 cell
    {512x512x3 uint8}
    {512x512x3 uint8}
    {512x316x3 uint8}
    {512x512x3 uint8}

montage(blocks,'Size',[1 bimds.ReadSize],'BorderSize',5,'BackgroundColor','k');

Lea el siguiente lote de datos del almacén de datos y muestre las revisiones de imagen devueltas como un montaje. El montaje muestra bloques parciales con un borde más grueso porque las dimensiones de los bloques son más pequeñas que las dimensiones del bloque completo.

blocks = read(bimds)
blocks=4×1 cell
    {512x512x3 uint8}
    {512x316x3 uint8}
    {226x512x3 uint8}
    {226x512x3 uint8}

montage(blocks,'Size',[1 bimds.ReadSize],'BorderSize',5,'BackgroundColor','k');

Lea el último lote de datos del almacén de datos. La operación de lectura devuelve un lote parcial que contiene la única revisión restante. Muestre el parche.

blocks = read(bimds)
blocks = 1x1 cell array
    {226x316x3 uint8}

montage(blocks,'Size',[1 bimds.ReadSize],'BorderSize',5,'BackgroundColor','k');

Cree un archivo .bigimage Este ejemplo utiliza una versión modificada de la imagen "tumor_091.tif" de la 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');

Visualice la función mediante la función.bigimagebigimageshow

h = bigimageshow(bim);

Cree una máscara en el nivel de resolución más grueso, conservando la información de referencia espacial original.

clevel = bim.CoarsestResolutionLevel; imcoarse = getFullLevel(bim,clevel); stainMask = ~imbinarize(rgb2gray(imcoarse)); bmask = bigimage(stainMask,'SpatialReferencing',bim.SpatialReferencing(clevel));

Cree un a partir de datos de imagen en el nivel de resolución más fino.bigimageDatastore Especifique la propiedad para que el almacén de datos lea parches que estén al menos un 75% dentro del ROI definido por la máscara.InclusionThreshold0.75

bimds = bigimageDatastore(bim,1,'BlockSize',[256 256], ...     'Masks',bmask,'InclusionThreshold',0.75); bimds.ReadSize = 4;

Para obtener una vista previa de los parches leídos por el almacén de datos, muestre la máscara sobre el original con el mismo tamaño de bloque y umbral de inclusión.bigimage La superposición resalta en verde los parches que están al menos un 75% dentro del ROI definido por la máscara.

showmask(h,bmask,'BlockSize',[256 256],'InclusionThreshold',0.75)

Lea el primer lote de datos del almacén de datos y muestre las revisiones de imagen devueltas como un montaje. El contenido de estos parches coincide con los bloques verdes de la superposición.

blocks = read(bimds); montage(blocks,'Size',[1 bimds.ReadSize],'BorderSize',5,'BackgroundColor','k');

Introducido en R2019b