TensorImage

classe pubblica TensorImage

TensorImage è la classe wrapper per l'oggetto Image. Quando si utilizzano util di elaborazione delle immagini nella libreria TFLite.support, è frequente convertire inizialmente in TensorImage gli oggetti immagine nei tipi di varianti.

Al momento sono supportate solo le immagini RGB e il canale A viene sempre ignorato.

Dettagli sull'archiviazione dei dati: un oggetto TensorImage può avere due potenziali fonti di dati: Bitmap o TensorBuffer. TensorImage mantiene lo stato e converte l'uno nell'altro solo quando necessario. Un caso d'uso tipico di TensorImage consiste nel caricare prima un'immagine Bitmap, quindi elaborarla utilizzando ImageProcessor e infine ottenere il valore ByteBuffer sottostante di TensorBuffer e trasmetterlo all'interprete TFLite.

IMPORTANTE: per ottenere le migliori prestazioni, TensorImage evita di copiare i dati quando è possibile. Di conseguenza, non possiede i dati. I chiamanti non devono modificare gli oggetti dati che vengono passati a load(Bitmap) o load(TensorBuffer, ColorSpaceType).

IMPORTANTE: tutti i metodi non sono sicuri per i thread.

Costruttori pubblici

TensorImage()
Inizializza un oggetto TensorImage.
TensorImage(Tipo di dati DataType)
Inizializza un oggetto TensorImage con il tipo di dati specificato.

Metodi pubblici

statico TensorImage
createFrom(TensorImage src, DataType dataType)
Crea una copia approfondita di un determinato TensorImage con il tipo di dati desiderato.
statico TensorImage
fromBitmap(bitmap bitmap)
Inizializza un oggetto TensorImage di DataType.UINT8 con un Bitmap .
Bitmap
getBitmap()
Restituisce una rappresentazione Bitmap di questo TensorImage.
ByteBuffer
getBuffer()
Restituisce una rappresentazione ByteBuffer di questo TensorImage con il tipo di dati previsto.
ColorSpaceType
getColorSpaceType()
Recupera il tipo di spazio colore di TensorImage.
DataType
getDataType()
Recupera il tipo di dati di TensorImage.
int
getHeight()
Restituisce l'altezza dell'immagine.
Immagine
getMediaImage()
Restituisce una rappresentazione Image di questo TensorImage.
TensorBuffer
getTensorBuffer()
Restituisce una rappresentazione TensorBuffer di questo TensorImage con il tipo di dati previsto.
int
getWidth()
Restituisce la larghezza dell'immagine.
void
load(buffer TensorBuffer, ColorSpaceType colorSpaceType)
Carica un elemento TensorBuffer contenente valori di pixel con il valore ColorSpaceType specifico.
void
load(bitmap bitmap)
Carica un oggetto immagine Bitmap in questo TensorImage.
void
load(int[] pixel, int[] forma)
Carica un array int come pixel RGB in questo TensorImage, che rappresenta i pixel all'interno.
void
load(float[] pixel, int[] forma)
Carica un array mobile come pixel RGB in questo TensorImage, che rappresenta i pixel all'interno.
void
load(buffer ByteBuffer, ImageProperties imageProperties)
Carica un elemento ByteBuffer contenente valori di pixel con il valore ImageProperties specifico.
void
load(buffer TensorBuffer, ImageProperties imageProperties)
Carica un elemento TensorBuffer contenente valori di pixel con il valore ImageProperties specifico.
void
load(immagine immagine)
Carica un oggetto Image in questo TensorImage.

Metodi ereditati

Costruttori pubblici

pubblica TensorImage ()

Inizializza un oggetto TensorImage.

Nota: il tipo di dati di questo TensorImage è DataType.UINT8. Utilizza TensorImage(DataType) se preferisci altri tipi di dati.

pubblico TensorImage (tipo di dati DataType)

Inizializza un oggetto TensorImage con il tipo di dati specificato.

Quando ottieni un valore TensorBuffer o ByteBuffer da questo valore TensorImage, ad esempio utilizzando getTensorBuffer() e getBuffer(), i valori dei dati verranno convertiti nel tipo di dati specificato.

Nota: la forma di TensorImage non è fissa. Può essere regolato in base alla forma dell'immagine caricata in questo TensorImage.

Parametri
dataType il tipo di dati previsto dell'oggetto TensorBuffer risultante. Il tipo è sempre fisso per tutta la durata di TensorImage. Per convertire il tipo di dati, utilizza createFrom(TensorImage, DataType) per creare una copia e convertire contemporaneamente il tipo di dati.
Lanci
IllegalArgumentException se dataType non è né DataType.UINT8DataType.FLOAT32

Metodi pubblici

pubblico statico TensorImage createFrom (TensorImage src, DataType dataType)

Crea una copia approfondita di un determinato TensorImage con il tipo di dati desiderato.

Parametri
src il TensorImage da cui copiare
dataType il tipo di dati previsto per le istanze TensorImage
Ritorni
  • un TensorImage i cui dati vengono copiati da src e il tipo di dati è dataType

pubblica Bitmap getBitmap ()

Restituisce una rappresentazione Bitmap di questo TensorImage.

Se i dati memorizzati non sono uint8, verranno applicati i metodi di fusione e blocco numerici.

Tieni presente che il modo affidabile per ottenere i pixel da una bitmap ALPHA_8 è utilizzare copyPixelsToBuffer. I metodi bitmap come "setPixels()" e "getPixels" non funzionano.

Importante: si tratta solo di un riferimento. NON MODIFICARE. Non creiamo una copia qui per problemi di prestazioni, ma se sono necessarie modifiche, creane una copia.

Ritorni
Lanci
IllegalStateException se TensorImage non carica mai dati

pubblica ByteBuffer getBuffer ()

Restituisce una rappresentazione ByteBuffer di questo TensorImage con il tipo di dati previsto.

Se i dati memorizzati sono diversi dal tipo di dati di TensorImage, verranno applicati i metodi di fusione e blocco numerici.

Importante: si tratta solo di un riferimento. NON MODIFICARE. Non creiamo una copia qui per problemi di prestazioni, ma se sono necessarie modifiche, creane una copia.

È essenzialmente una scorciatoia per getTensorBuffer().getBuffer().

Ritorni
  • un riferimento a ByteBuffer che contiene i dati dell'immagine
Lanci
IllegalStateException se TensorImage non carica mai dati

pubblico ColorSpaceType getColorSpaceType ()

Recupera il tipo di spazio colore di TensorImage.

Lanci
IllegalStateException se TensorImage non carica mai dati

pubblico DataType getDataType ()

Recupera il tipo di dati di TensorImage.

Ritorni

pubblica int getHeight ()

Restituisce l'altezza dell'immagine.

Lanci
IllegalStateException se TensorImage non carica mai dati
IllegalArgumentException se i dati sottostanti sono danneggiati

pubblica Immagine getMediaImage ()

Restituisce una rappresentazione Image di questo TensorImage.

Questo metodo funziona solo quando TensorImage è supportato da Image, il che significa che devi prima caricare un elemento Image tramite load(Image).

Importante: si tratta solo di un riferimento. NON MODIFICARE. Non creiamo una copia qui per problemi di prestazioni, ma se sono necessarie modifiche, creane una copia.

Ritorni
Lanci
IllegalStateException se TensorImage non carica mai dati

pubblico TensorBuffer getTensorBuffer ()

Restituisce una rappresentazione TensorBuffer di questo TensorImage con il tipo di dati previsto.

Se i dati memorizzati sono diversi dal tipo di dati di TensorImage, verranno applicati i metodi di fusione e blocco numerici.

Importante: si tratta solo di un riferimento. NON MODIFICARE. Non creiamo una copia qui per problemi di prestazioni, ma se sono necessarie modifiche, creane una copia.

Ritorni
  • un riferimento a TensorBuffer che contiene i dati dell'immagine
Lanci
IllegalStateException se TensorImage non carica mai dati

Public int getWidth ()

Restituisce la larghezza dell'immagine.

Lanci
IllegalStateException se TensorImage non carica mai dati
IllegalArgumentException se i dati sottostanti sono danneggiati

Public void load (buffer TensorBuffer, ColorSpaceType colorSpaceType)

Carica un elemento TensorBuffer contenente valori di pixel con il valore ColorSpaceType specifico.

Supporta solo ColorSpaceType.RGB e ColorSpaceType.GRAYSCALE. Utilizza load(TensorBuffer, ImageProperties) per altri tipi di spazio colore.

Nota: se il tipo di dati di buffer non corrisponde a quello di questo TensorImage, la trasmissione e il blocco numerici verranno applicati quando si chiamano getTensorBuffer() e getBuffer().

Parametri
buffer l'elemento TensorBuffer da caricare. La sua forma dovrebbe essere (h, w, 3) o (1, h, w, 3) per le immagini RGB e (h, w) o (1, h, w) per le immagini in SCALA DI GRIGIO
colorSpaceType
Lanci
IllegalArgumentException se la forma del buffer non corrisponde al tipo di spazio colore o se il tipo di spazio colore non è supportato

pubblica void carica (bitmap bitmap)

Carica un oggetto immagine Bitmap in questo TensorImage.

Nota: se TensorImage ha un tipo di dati diverso da DataType.UINT8, la trasmissione e il blocco numerici verranno applicati quando chiami getTensorBuffer() e getBuffer(), dove Bitmap verrà convertito in TensorBuffer.

Importante: quando carichi una bitmap, NON MODIFICARE più la bitmap dal lato chiamante. L'oggetto TensorImage si baserà sulla bitmap. Probabilmente modificherà anche la bitmap. In questo metodo, eseguiamo un approccio "zero-copy" per la bitmap in questione, tenendo semplicemente il suo riferimento. Se necessario, utilizza bitmap.copy(bitmap.getConfig(), true) per creare una copia.

Nota: per ottenere prestazioni ottimali, carica le immagini nella stessa forma per evitare la riallocazione della memoria.

Parametri
bitmap
Lanci
IllegalArgumentException se bitmap non è in ARGB_8888

pubblica void carica (int[] pixel, int[] forma)

Carica un array int come pixel RGB in questo TensorImage, che rappresenta i pixel all'interno.

Nota: la trasmissione e il blocco numerici verranno applicati per convertire i valori nel tipo di dati di questo TensorImage quando chiami getTensorBuffer() e getBuffer().

Parametri
pixel i pixel RGB che rappresentano l'immagine
shape la forma dell'immagine, dovrebbe essere nella forma (h, w, 3) o nella forma (1, h, w, 3)
Lanci
IllegalArgumentException se la forma non è né (h, w, 3) né (1, h, w, 3)

pubblica void carica (float[] pixel, int[] forma)

Carica un array mobile come pixel RGB in questo TensorImage, che rappresenta i pixel all'interno.

Nota: se TensorImage ha un tipo di dati diverso da DataType.FLOAT32, la trasmissione e il blocco numerici verranno applicati quando chiami getTensorBuffer() e getBuffer().

Parametri
pixel i pixel RGB che rappresentano l'immagine
shape la forma dell'immagine, dovrebbe essere nella forma (h, w, 3) o nella forma (1, h, w, 3)
Lanci
IllegalArgumentException se la forma non è né (h, w, 3) né (1, h, w, 3)

Public void load (buffer ByteBuffer, ImageProperties imageProperties)

Carica un elemento ByteBuffer contenente valori di pixel con il valore ImageProperties specifico.

Nota: se il tipo di dati di buffer non corrisponde a quello di questo TensorImage, la trasmissione e il blocco numerici verranno applicati quando si chiamano getTensorBuffer() e getBuffer().

Parametri
buffer
imageProperties
Lanci
IllegalArgumentException se la dimensione del buffer è inferiore a quella dell'immagine indicata dall'altezza, dalla larghezza e dal tipo di spazio colore dell'immagine in ImageProperties

Public void carica (buffer TensorBuffer, ImageProperties imageProperties)

Carica un elemento TensorBuffer contenente valori di pixel con il valore ImageProperties specifico.

La forma dell'elemento TensorBuffer non verrà utilizzata per determinare l'altezza e la larghezza dell'immagine. Imposta le proprietà dell'immagine tramite ImageProperties.

Nota: se il tipo di dati di buffer non corrisponde a quello di questo TensorImage, la trasmissione e il blocco numerici verranno applicati quando si chiamano getTensorBuffer() e getBuffer().

Parametri
buffer
imageProperties
Lanci
IllegalArgumentException se la dimensione del buffer è inferiore a quella dell'immagine indicata dall'altezza, dalla larghezza e dal tipo di spazio colore dell'immagine in ImageProperties

pubblica void carica (immagine immagine)

Carica un oggetto Image in questo TensorImage.

L'utilizzo principale di questo metodo consiste nel caricare un oggetto Image come input del modello in https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview. Il backup di TensorImage da parte di Image non è supportato da ImageProcessor.

* @throws IllegalArgumentException se ImageFormat di image non è YUV_420_888

Parametri
immagine