Contenido principal

blockedImageDatastore

Almacén de datos para su uso con bloques a partir de objetos blockedImage

Desde R2021a

    Descripción

    Un objeto blockedImageDatastore gestiona una colección de bloques de imágenes que pertenecen a uno o varios objetos blockedImage. Un objeto blockedImageDatastore es análogo a un objeto imageDatastore, que gestiona una colección de imágenes no relacionadas.

    Creación

    Descripción

    bimds = blockedImageDatastore(images) crea un objeto blockedImageDatastore que gestiona una colección de bloques de imágenes de uno o varios objetos blockedImage, images.

    De forma predeterminada, si images contiene una imagen dividida en bloques con varios niveles de resolución, blockedImageDatastore escoge solo bloques del nivel de resolución más fino. De forma predeterminada, el tamaño de bloque del almacén de datos es igual a la propiedad BlockSize del primer elemento de images al nivel de resolución más fino.

    ejemplo

    bimds = blockedImageDatastore(sources) crea un almacén de datos a partir de los archivos especificados por sources.

    bimds = blockedImageDatastore(___,Name=Value) establece propiedades grabables utilizando uno o más argumentos nombre-valor. Por ejemplo, blockedImageDatastore(images,ReadSize=8) devuelve ocho bloques del almacén de datos en cada llamada a la función read.

    Argumentos de entrada

    expandir todo

    Imágenes divididas en bloques que proporcionan bloques para el objeto blockedImageDatastore, especificadas como un arreglo de objetos blockedImage. Todos los elementos de images deben contener el mismo número de dimensiones y ser del mismo tipo de datos.

    Este argumento establece la propiedad Images.

    Nombre de los archivos de imágenes divididas en bloques, especificado como un arreglo de celdas de vectores de caracteres, un escalar de cadena o un objeto FileSet.

    El objeto blockedImageDatastore convierte las imágenes de los archivos en imágenes divididas en bloques y las define como la propiedad Images.

    Argumentos de par nombre-valor

    expandir todo

    Especifique pares de argumentos opcionales como Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos de nombre-valor deben aparecer después de otros argumentos. Sin embargo, el orden de los pares no importa.

    Ejemplo: bimds = blockedImageDatastore(images,ReadSize=8) devuelve ocho bloques del almacén de datos en cada llamada a la función read.

    Bloques para incluir en el almacén de datos, especificados como un objeto blockLocationSet. El objeto especifica qué bloques se incluirán de las imágenes divididas en bloques. Puede repetir u omitir bloques de manera individual.

    Solo puede especificar uno de los argumentos nombre-valor BlockLocationSet y BlockSize. Cuando se especifica el argumento BlockLocationSet, la función blockedImageDatastore:

    • Establece la propiedad BlockLocationSet como el objeto blockLocationSet.

    • Establece la propiedad BlockSize como el tamaño de bloque del objeto blockLocationSet.

    Si no se especifican los argumentos de entrada BlockLocationSet ni BlockSize, la función blockedImageDatastore utilizará el valor predeterminado de la propiedad BlockLocationSet. El valor predeterminado será el objeto blockLocationSet devuelto cuando se llama a la función selectBlockLocations sin especificar el tamaño de bloque.

    Tamaño de bloque, especificado como un vector numérico de 1 por D. D es el número de dimensiones de la primera imagen dividida en bloques de Images, al primer nivel de resolución en Levels.

    Solo puede especificar uno de los argumentos nombre-valor BlockLocationSet y BlockSize. Cuando se especifica el argumento BlockSize, la función blockedImageDatastore:

    • Establece la propiedad BlockSize como el valor de ese argumento.

    • Llama a la función selectBlockLocations con el tamaño de bloque especificado y establece la propiedad BlockLocationSet como el objeto blockLocationSet devuelto.

    Si no se especifican los argumentos nombre-valor BlockLocationSet ni BlockSize, la función blockedImageDatastore utiliza el valor predeterminado de la propiedad BlockSize. El valor predeterminado será el tamaño de bloque de la primera imagen dividida en bloques en Images al nivel de resolución más fino.

    Tamaño de los elementos adicionales del borde del bloque en cada dimensión, especificado como un vector de 1 por D de enteros no negativos. D es el número de dimensiones de la primera imagen dividida en bloques de Images, al primer nivel de resolución en Levels. El valor predeterminado es zeros(1,D).

    Este argumento establece la propiedad BorderSize.

    Método utilizado para rellenar bloques incompletos, especificado como uno de los valores de la tabla. De forma predeterminada, el almacén de datos rellena los bloques numéricos con el valor de la propiedad InitialValue de la primera imagen dividida en bloques de Images.

    Valor

    Significado

    escalar numérico, lógico o categórico

    El arreglo se rellena con elementos del valor especificado. El tipo de datos de PadMethod debe coincidir con la propiedad ClassUnderlying de la imagen dividida en bloques.

    "replicate"

    Relleno mediante la repetición de elementos del borde del bloque.

    "symmetric" (desde R2023a)

    Relleno con reflejos de espejo de píxeles desde dentro del mismo bloque.

    Este argumento establece la propiedad PadMethod.

    Relleno de bloques parciales que existen en el borde, especificado como un escalar lógico true o false. Cuando se especifica como true, el almacén de datos de imágenes divididas por bloques añade relleno en función del método de relleno especificado en el argumento nombre-valor PadMethod.

    Este argumento establece la propiedad PadPartialBlocks.

    Número de bloques que se devolverán en cada llamada a la función read, especificado como un entero positivo. Cada llamada a la función read lee como máximo ReadSize bloques.

    Este argumento establece la propiedad ReadSize.

    Propiedades

    expandir todo

    Esta propiedad es de solo lectura después de la creación del objeto.

    Bloques que incluir en el almacén de datos, devueltos como un objeto blockLocationSet. El objeto especifica qué bloques se incluirán de la imagen dividida en bloques Images.

    Esta propiedad es de solo lectura después de la creación del objeto.

    Tamaño de bloque, devuelto como un vector numérico de 1 por D. D es el número de dimensiones de la primera imagen dividida en bloques de Images, al primer nivel de resolución en Levels.

    Tamaño de los elementos adicionales del borde del bloque en cada dimensión, especificado como un vector de 1 por D de enteros no negativos. D es el número de dimensiones de la primera imagen dividida en bloques de Images, al primer nivel de resolución en Levels. El valor predeterminado es zeros(1,D).

    Esta propiedad es de solo lectura después de la creación del objeto.

    Imágenes divididas en bloques que proporcionan bloques para el objeto blockedImageDatastore, devueltas como un arreglo de objetos blockedImage. Todos los elementos de Images contienen el mismo número de dimensiones y son del mismo tipo de datos.

    Método utilizado para rellenar bloques incompletos, especificado como uno de los valores de la tabla. De forma predeterminada, el almacén de datos rellena los bloques numéricos con el valor de la propiedad InitialValue de la primera imagen dividida en bloques de Images.

    Valor

    Significado

    escalar numérico, lógico o categórico

    El arreglo se rellena con elementos del valor especificado. El tipo de datos de PadMethod debe coincidir con la propiedad ClassUnderlying de la imagen dividida en bloques.

    "replicate"

    Relleno mediante la repetición de elementos del borde del bloque.

    "symmetric" (desde R2023a)

    Relleno con reflejos de espejo de píxeles desde dentro del mismo bloque.

    Relleno de bloques parciales que existen en el borde, especificado como un escalar lógico true o false. Cuando se especifica como true, el almacén de datos de imágenes divididas por bloques añade relleno en función del método de relleno especificado en la propiedad PadMethod.

    Número de bloques que se devolverán en cada llamada a la función read, especificado como un entero positivo. Cada llamada a la función read lee como máximo ReadSize bloques

    Esta propiedad o parámetro es de solo lectura.

    Número total de bloques disponibles, devuelto como un escalar numérico.

    Funciones del objeto

    combineCombine data from multiple datastores
    countEachLabelCounts number of pixel labels for each class
    hasdataReturns true if more data is available in blocked image datastore
    numpartitionsNumber of datastore partitions
    partitionReturn partitioned part of blocked image datastore
    previewPreview subset of data in datastore
    readRead data and metadata from blocked image datastore
    readallRead all data from blocked image datastore
    resetReset datastore to initial state
    shuffleRedistribuir el orden de los datos en un almacén de datos
    subsetCreate subset of datastore or FileSet
    transformTransform datastore
    writeallWrite blocked image datastore to files

    Ejemplos

    contraer todo

    Cree una imagen dividida en bloques.

    bim = blockedImage("tumor_091R.tif");

    Cree un almacén de datos especificando el nivel de resolución y el tamaño del bloque.

    bls = selectBlockLocations(bim,Levels=2,BlockSize=[512 512]);
    bimds = blockedImageDatastore(bim,BlockLocationSet=bls);

    Lea todos los bloques del almacén de datos.

    b = readall(bimds)
    b=9×1 cell array
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
    
    

    Muestre la imagen dividida en bloques.

    montage(b)

    Figure contains an axes object. The hidden axes object contains an object of type image.

    Cree un objeto FileSet que contenga múltiples archivos de imagen con el formato PNG.

    fs = matlab.io.datastore.FileSet( ...
         fullfile(matlabroot,"toolbox","images","imdata"), ...
        "FileExtensions",".png");

    Cree un objeto blockedImage especificando un adaptador. Esto ahorra tiempo al eliminar la necesidad de inspeccionar cada archivo para seleccionar un adaptador adecuado.

    readAdapter = images.blocked.GenericImage;
    bims = blockedImage(fs,"Adapter",readAdapter);

    Todas las imágenes deben tener el mismo número de dimensiones; conserve únicamente imágenes RGB.

    bims = bims([bims.NumDimensions]==3);
    bimds = blockedImageDatastore(bims,"BlockSize",[300 500], ...
         "PadMethod","replicate");

    Muestre todos los bloques de blockedImageDatastore.

    montage(readall(bimds),"Border",2,"BackgroundColor","w");

    Figure contains an axes object. The hidden axes object contains an object of type image.

    Cree una imagen dividida en bloques.

    bim = blockedImage("tumor_091R.tif");

    Especifique bloques superpuestos.

    blockSize = [512 512];
    overlapPct = 0.5;
    blockOffsets = round(blockSize.*overlapPct);
    bls = selectBlockLocations(bim,BlockSize=blockSize, ...
          BlockOffSets=blockOffsets,ExcludeIncompleteBlocks=true);

    Cree el almacén de datos de imágenes divididas en bloques.

    bimds = blockedImageDatastore(bim,BlockLocationSet=bls);

    Muestre los bloques superpuestos.

    bimds.ReadSize = 6;
    blocks = read(bimds);
    montage(blocks, BorderSize=5,BackgroundColor="b");

    Figure contains an axes object. The hidden axes object contains an object of type image.

    Cree un objeto blockedImage.

    bim = blockedImage('tumor_091R.tif');

    Cree una máscara con el nivel de resolución más grueso.

    bmask = apply(bim, @(bs)~imbinarize(im2gray(bs.Data)),"Level",3);

    Cree un objeto blockedImageDatastore para los bloques que tienen al menos un 90% de píxeles activados en la región teñida como define la máscara.

    mbls = selectBlockLocations(bim,...
         'Levels', 1, ...
         'Masks', bmask, 'InclusionThreshold', 0.90,...
         'BlockSize', [256 256]);
    bimds = blockedImageDatastore(bim, 'BlockLocationSet', mbls);

    Lea los bloques y muéstrelos.

    bimds.ReadSize = 5;
    blocks = read(bimds);
    montage(blocks, "BorderSize", 5, "BackgroundColor", 'b')

    Figure contains an axes object. The hidden axes object contains an object of type image.

    Cree imágenes divididas en bloques a partir de datos numéricos y etiquetados.

    bim = blockedImage("yellowlily.jpg",BlockSize=[512 512]);
    bimLabels = blockedImage("yellowlily-segmented.png",BlockSize=[512 512]);

    Cree objetos blockedImageDatastore para cada imagen dividida en bloques.

    bimds = blockedImageDatastore(bim);
    bimdsLabels = blockedImageDatastore(bimLabels);

    Transforme los datos numéricos etiquetados en datos categóricos.

    classes = ["Unknown","Flower","Leaf","Background"];
    classIDs = [0 1 2 3];
    bimdsCategorical = transform(bimdsLabels, ...
          @(bs){categorical(bs{1},classIDs,classes)});

    Combine el objeto blockedImageDatastore original con el almacén de datos categórico.

    bimdsCombined = combine(bimds,bimdsCategorical);  

    Lea y muestre los datos del almacén de datos combinado. La primera celda corresponde a los datos de imágenes y la segunda celda, a las etiquetas categóricas.

    data = read(bimdsCombined)
    data=1×2 cell array
        {512×512×3 uint8}    {512×512 categorical}
    
    
    imshow(labeloverlay(data{1},data{2}));  

    Figure contains an axes object. The hidden axes object contains an object of type image.

    Historial de versiones

    Introducido en R2021a

    expandir todo