TensorImage

class publik TensorImage

TensorImage adalah class wrapper untuk objek Image. Saat menggunakan utilitas pemrosesan gambar di TFLite.support library, biasanya objek gambar dalam jenis varian dapat dikonversi terlebih dahulu ke TensorImage.

Saat ini, hanya gambar RGB yang didukung, dan saluran A selalu diabaikan.

Detail penyimpanan data: objek TensorImage dapat memiliki 2 potensi sumber tepercaya: Bitmap atau TensorBuffer. TensorImage mempertahankan status dan hanya mengonversi satu status ke status lainnya jika diperlukan. Kasus penggunaan umum TensorImage adalah memuat gambar Bitmap terlebih dahulu, lalu memprosesnya menggunakan ImageProcessor, dan terakhir mendapatkan ByteBuffer yang mendasarinya dari TensorBuffer dan memasukkannya ke penafsir TFLite.

PENTING: untuk mencapai performa terbaik, TensorImage menghindari penyalinan data jika memungkinkan. Oleh karena itu, entitas tersebut tidak memiliki datanya. Pemanggil tidak boleh mengubah objek data yang diteruskan ke load(Bitmap) atau load(TensorBuffer, ColorSpaceType).

PENTING: semua metode tidak terbukti aman untuk thread.

Konstruktor Publik

TensorImage()
Menginisialisasi objek TensorImage.
TensorImage(dataType DataType)
Menginisialisasi objek TensorImage dengan jenis data yang ditentukan.

Metode Publik

TensorImage statis
createFrom(TensorImage src, dataType DataType)
Membuat salinan mendalam dari TensorImage tertentu dengan jenis data yang diinginkan.
TensorImage statis
fromBitmap(Bitmap bitmap)
Menginisialisasi objek TensorImage dari DataType.UINT8 dengan Bitmap .
Bitmap
getBitmap()
Menampilkan representasi Bitmap dari TensorImage ini.
ByteBuffer
getBuffer()
Menampilkan representasi ByteBuffer dari TensorImage ini dengan jenis data yang diharapkan.
ColorSpaceType
getColorSpaceType()
Mendapatkan jenis ruang warna TensorImage ini.
DataType
getDataType()
Mendapatkan jenis data TensorImage ini.
int
getHeight()
Mendapatkan tinggi gambar.
Gambar
getMediaImage()
Menampilkan representasi Image dari TensorImage ini.
TensorBuffer
getTensorBuffer()
Menampilkan representasi TensorBuffer dari TensorImage ini dengan jenis data yang diharapkan.
int
getWidth()
Mendapatkan lebar gambar.
void
load(buffer TensorBuffer, ColorSpaceType colorSpaceType)
Memuat TensorBuffer yang berisi nilai piksel dengan ColorSpaceType tertentu.
void
load(Bitmap bitmap)
Memuat objek gambar Bitmap ke TensorImage ini.
void
load(int[] piksel, bentuk int[])
Memuat array int sebagai piksel RGB ke dalam TensorImage ini, yang mewakili piksel di dalamnya.
void
load(float[] piksel, bentuk int[])
Memuat array float sebagai piksel RGB ke dalam TensorImage ini, yang mewakili piksel di dalamnya.
void
load(buffer ByteBuffer, ImageProperties imageProperties)
Memuat ByteBuffer yang berisi nilai piksel dengan ImageProperties tertentu.
void
load(buffer TensorBuffer, ImageProperties imageProperties)
Memuat TensorBuffer yang berisi nilai piksel dengan ImageProperties tertentu.
void
load(Gambar)
Memuat objek Image ke TensorImage ini.

Metode Turunan

Konstruktor Publik

publik TensorImage ()

Menginisialisasi objek TensorImage.

Catatan: jenis data TensorImage ini adalah DataType.UINT8. Gunakan TensorImage(DataType) jika jenis data lain lebih disukai.

publik TensorImage (DataType dataType)

Menginisialisasi objek TensorImage dengan jenis data yang ditentukan.

Saat mendapatkan TensorBuffer atau ByteBuffer dari TensorImage ini, seperti menggunakan getTensorBuffer() dan getBuffer(), nilai data akan dikonversi ke jenis data yang ditentukan.

Catatan: bentuk TensorImage tidak tetap. Bentuk ini dapat disesuaikan dengan bentuk gambar yang dimuat ke TensorImage ini.

Parameter
dataType jenis data yang diharapkan dari TensorBuffer yang dihasilkan. Jenis ini selalu diperbaiki selama masa aktif TensorImage. Untuk mengonversi jenis data, gunakan createFrom(TensorImage, DataType) untuk membuat salinan dan mengonversi jenis data secara bersamaan.
Menampilkan
IllegalArgumentException jika dataType bukan DataType.UINT8 atau DataType.FLOAT32

Metode Publik

publik statis TensorImage createFrom (TensorImage src, DataType dataType)

Membuat salinan mendalam dari TensorImage tertentu dengan jenis data yang diinginkan.

Parameter
src TensorImage untuk disalin dari
dataType jenis data yang diharapkan dari TensorImage yang baru dibuat
Hasil
  • TensorImage yang datanya disalin dari src dan jenis datanya adalah dataType

publik Bitmap getBitmap ()

Menampilkan representasi Bitmap dari TensorImage ini.

Transmisi dan pembatasan numerik akan diterapkan jika data yang disimpan bukan uint8.

Perhatikan bahwa cara yang andal untuk mendapatkan piksel dari Bitmap ALPHA_8 adalah dengan menggunakan copyPixelsToBuffer. Metode bitmap seperti, `setPixels()` dan `getPixels` tidak berfungsi.

Penting: ini hanya referensi. JANGAN MENGUBAH. Kami tidak membuat salinan di sini karena masalah performa, tetapi jika perlu modifikasi, harap buat salinannya.

Hasil
Menampilkan
IllegalStateException jika TensorImage tidak pernah memuat data

publik ByteBuffer getBuffer ()

Menampilkan representasi ByteBuffer dari TensorImage ini dengan jenis data yang diharapkan.

Transmisi dan klem numerik akan diterapkan jika data yang disimpan berbeda dengan jenis data TensorImage.

Penting: ini hanya referensi. JANGAN MENGUBAH. Kami tidak membuat salinan di sini karena masalah performa, tetapi jika perlu modifikasi, harap buat salinannya.

Pada dasarnya ini adalah jalan pintas untuk getTensorBuffer().getBuffer().

Hasil
  • referensi ke ByteBuffer yang menyimpan data gambar
Menampilkan
IllegalStateException jika TensorImage tidak pernah memuat data

publik ColorSpaceType getColorSpaceType ()

Mendapatkan jenis ruang warna TensorImage ini.

Menampilkan
IllegalStateException jika TensorImage tidak pernah memuat data

publik DataType getDataType ()

Mendapatkan jenis data TensorImage ini.

Hasil

public int getHeight ()

Mendapatkan tinggi gambar.

Menampilkan
IllegalStateException jika TensorImage tidak pernah memuat data
IllegalArgumentException jika data yang mendasarinya rusak

public Gambar getMediaImage ()

Menampilkan representasi Image dari TensorImage ini.

Metode ini hanya berfungsi saat TensorImage didukung oleh Image, yang berarti Anda harus memuat Image melalui load(Image) terlebih dahulu.

Penting: ini hanya referensi. JANGAN MENGUBAH. Kami tidak membuat salinan di sini karena masalah performa, tetapi jika perlu modifikasi, harap buat salinannya.

Hasil
Menampilkan
IllegalStateException jika TensorImage tidak pernah memuat data

publik TensorBuffer getTensorBuffer ()

Menampilkan representasi TensorBuffer dari TensorImage ini dengan jenis data yang diharapkan.

Transmisi dan klem numerik akan diterapkan jika data yang disimpan berbeda dengan jenis data TensorImage.

Penting: ini hanya referensi. JANGAN MENGUBAH. Kami tidak membuat salinan di sini karena masalah performa, tetapi jika perlu modifikasi, harap buat salinannya.

Hasil
Menampilkan
IllegalStateException jika TensorImage tidak pernah memuat data

public int getWidth ()

Mendapatkan lebar gambar.

Menampilkan
IllegalStateException jika TensorImage tidak pernah memuat data
IllegalArgumentException jika data yang mendasarinya rusak

public void load (buffer TensorBuffer, ColorSpaceType colorSpaceType)

Memuat TensorBuffer yang berisi nilai piksel dengan ColorSpaceType tertentu.

Hanya mendukung ColorSpaceType.RGB dan ColorSpaceType.GRAYSCALE. Gunakan load(TensorBuffer, ImageProperties) untuk jenis ruang warna lainnya.

Catatan: jika jenis data buffer tidak cocok dengan jenis data TensorImage ini, transmisi dan klem numerik akan diterapkan saat memanggil getTensorBuffer() dan getBuffer().

Parameter
buffer TensorBuffer yang akan dimuat. Bentuknya harus (h, w, 3) atau (1, h, w, 3) untuk gambar RGB, dan (h, w) atau (1, h, w) untuk gambar GRAYSCALE
colorSpaceType
Menampilkan
IllegalArgumentException jika bentuk buffer tidak cocok dengan jenis ruang warna, atau jika jenis ruang warna tidak didukung

public void muat (Bitmap bitmap)

Memuat objek gambar Bitmap ke TensorImage ini.

Catatan: jika TensorImage memiliki jenis data selain DataType.UINT8, transmisi dan clamping numerik akan diterapkan saat memanggil getTensorBuffer() dan getBuffer(), dengan Bitmap akan dikonversi menjadi TensorBuffer.

Penting: saat memuat bitmap, JANGAN MEMODIFIKASI bitmap dari sisi pemanggil lagi. Objek TensorImage akan bergantung pada bitmap. Tindakan ini mungkin juga akan memodifikasi bitmap tersebut. Dalam metode ini, kami melakukan pendekatan zero-copy untuk bitmap tersebut, hanya dengan menyimpan referensinya. Gunakan bitmap.copy(bitmap.getConfig(), true) untuk membuat salinan jika perlu.

Catatan: untuk mendapatkan performa terbaik, muat gambar dalam bentuk yang sama untuk menghindari alokasi ulang memori.

Parameter
bitmap
Menampilkan
IllegalArgumentException jika bitmap tidak dalam ARGB_8888

public void load (int[] piksel, int[] shape)

Memuat array int sebagai piksel RGB ke dalam TensorImage ini, yang mewakili piksel di dalamnya.

Catatan: transmisi dan klem numerik akan diterapkan untuk mengonversi nilai ke dalam jenis data TensorImage ini saat memanggil getTensorBuffer() dan getBuffer().

Parameter
piksel piksel RGB yang mewakili gambar
bentuk bentuk gambar, harus dalam bentuk (h, w, 3), atau dalam bentuk (1, h, w, 3)
Menampilkan
IllegalArgumentException jika bentuknya bukan (h, w, 3) atau (1, h, w, 3)

public void load (float[] piksel, int[] shape)

Memuat array float sebagai piksel RGB ke dalam TensorImage ini, yang mewakili piksel di dalamnya.

Catatan: jika TensorImage memiliki jenis data selain DataType.FLOAT32, transmisi dan klem numerik akan diterapkan saat memanggil getTensorBuffer() dan getBuffer().

Parameter
piksel piksel RGB yang mewakili gambar
bentuk bentuk gambar, harus dalam bentuk (h, w, 3), atau dalam bentuk (1, h, w, 3)
Menampilkan
IllegalArgumentException jika bentuknya bukan (h, w, 3) atau (1, h, w, 3)

public void load (buffer ByteBuffer, ImageProperties imageProperties)

Memuat ByteBuffer yang berisi nilai piksel dengan ImageProperties tertentu.

Catatan: jika jenis data buffer tidak cocok dengan jenis data TensorImage ini, transmisi dan klem numerik akan diterapkan saat memanggil getTensorBuffer() dan getBuffer().

Parameter
buffer
imageProperties
Menampilkan
IllegalArgumentException jika ukuran buffer kurang dari ukuran gambar yang ditunjukkan oleh tinggi, lebar, dan jenis ruang warna gambar di ImageProperties

public void load (buffer TensorBuffer, ImageProperties imageProperties)

Memuat TensorBuffer yang berisi nilai piksel dengan ImageProperties tertentu.

Bentuk TensorBuffer tidak akan digunakan untuk menentukan tinggi dan lebar gambar. Tetapkan properti gambar melalui ImageProperties.

Catatan: jika jenis data buffer tidak cocok dengan jenis data TensorImage ini, transmisi dan klem numerik akan diterapkan saat memanggil getTensorBuffer() dan getBuffer().

Parameter
buffer
imageProperties
Menampilkan
IllegalArgumentException jika ukuran buffer kurang dari ukuran gambar yang ditunjukkan oleh tinggi, lebar, dan jenis ruang warna gambar di ImageProperties

public void muat (Gambar gambar)

Memuat objek Image ke TensorImage ini.

Penggunaan utama metode ini adalah memuat objek Image sebagai input model ke https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview. TensorImage yang didukung oleh Image tidak didukung oleh ImageProcessor.

* @throws IllegalArgumentException jika ImageFormat dari image bukan YUV_420_888

Parameter
gambar