TensorImage

TensorImage kelas publik

TensorImage adalah kelas pembungkus untuk objek Gambar. Saat menggunakan utilitas pemrosesan gambar di pustaka TFLite.support, biasanya objek gambar dalam tipe varian dikonversi ke TensorImage terlebih dahulu.

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

Detail penyimpanan data: objek TensorImage mungkin memiliki 2 sumber kebenaran potensial: Bitmap atau TensorBuffer . TensorImage mempertahankan status dan hanya mengonversi satu status ke status lainnya bila diperlukan. Kasus penggunaan umum TensorImage adalah memuat gambar Bitmap terlebih dahulu, lalu memprosesnya menggunakan ImageProcessor , dan terakhir mendapatkan ByteBuffer yang mendasari TensorBuffer dan memasukkannya ke dalam interpreter TFLite.

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

PENTING: semua metode tidak terbukti aman untuk thread.

Konstruktor Publik

Gambar Tensor ()
Menginisialisasi objek TensorImage .
TensorImage ( Tipe DataTipe data)
Menginisialisasi objek TensorImage dengan tipe data yang ditentukan.

Metode Publik

Gambar Tensor statis
buatDari ( TensorImage src, Tipe Data tipe data)
Membuat salinan dalam TensorImage tertentu dengan tipe data yang diinginkan.
Gambar Tensor statis
dariBitmap (Bitmap bitmap)
Menginisialisasi objek TensorImage DataType.UINT8 dengan Bitmap .
peta bit
dapatkanBitmap ()
Mengembalikan representasi Bitmap dari TensorImage ini.
ByteBuffer
dapatkanBuffer ()
Mengembalikan representasi ByteBuffer dari TensorImage ini dengan tipe data yang diharapkan.
Tipe Ruang Warna
dapatkanColorSpaceType ()
Mendapatkan tipe ruang warna TensorImage ini.
Tipe data
dapatkanTipeData ()
Mendapatkan tipe data TensorImage ini.
ke dalam
dapatkan Tinggi ()
Mendapatkan tinggi gambar.
Gambar
dapatkanMediaImage ()
Mengembalikan representasi Image dari TensorImage ini.
TensorBuffer
dapatkanTensorBuffer ()
Mengembalikan representasi TensorBuffer dari TensorImage ini dengan tipe data yang diharapkan.
ke dalam
dapatkan Lebar ()
Mendapatkan lebar gambar.
ruang kosong
memuat (buffer TensorBuffer , ColorSpaceType colorSpaceType)
Memuat TensorBuffer yang berisi nilai piksel dengan ColorSpaceType tertentu.
ruang kosong
memuat (bitmap bitmap)
Memuat objek gambar Bitmap ke dalam TensorImage ini.
ruang kosong
memuat (int[] piksel, int[] bentuk)
Memuat array int sebagai piksel RGB ke dalam TensorImage ini, yang mewakili piksel di dalamnya.
ruang kosong
memuat (float[] piksel, int[] bentuk)
Memuat array float sebagai piksel RGB ke dalam TensorImage ini, yang mewakili piksel di dalamnya.
ruang kosong
memuat (buffer ByteBuffer , ImageProperties imageProperties)
Memuat ByteBuffer yang berisi nilai piksel dengan ImageProperties tertentu.
ruang kosong
memuat (buffer TensorBuffer , ImageProperties imageProperties)
Memuat TensorBuffer yang berisi nilai piksel dengan ImageProperties tertentu.
ruang kosong
memuat (Gambar gambar)
Memuat objek Image ke dalam TensorImage ini.

Metode Warisan

Konstruktor Publik

Gambar Tensor publik ()

Menginisialisasi objek TensorImage .

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

TensorImage publik ( Tipe Data tipe data)

Menginisialisasi objek TensorImage dengan tipe data yang ditentukan.

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

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

Parameter
tipe data tipe data yang diharapkan dari TensorBuffer yang dihasilkan. Jenisnya selalu diperbaiki selama masa pakai TensorImage . Untuk mengonversi tipe data, gunakan createFrom(TensorImage, DataType) untuk membuat salinan dan mengonversi tipe data secara bersamaan.
Melempar
Pengecualian Argumen Ilegal jika dataType bukan DataType.UINT8 atau DataType.FLOAT32

Metode Publik

TensorImage statis publik createFrom ( TensorImage src, Tipe Data tipe data)

Membuat salinan dalam TensorImage tertentu dengan tipe data yang diinginkan.

Parameter
src TensorImage yang akan disalin
tipe data tipe data yang diharapkan dari TensorImage yang baru dibuat
Kembali
  • TensorImage yang datanya disalin dari src dan tipe datanya adalah dataType

Bitmap publik getBitmap ()

Mengembalikan representasi Bitmap dari TensorImage ini.

Pengecoran dan penjepitan numerik akan diterapkan jika data yang disimpan bukan uint8.

Perhatikan bahwa cara 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 DIUBAH. Kami tidak membuat salinan di sini karena alasan kinerja, namun jika diperlukan modifikasi, silakan buat salinannya.

Kembali
Melempar
IlegalStateException jika TensorImage tidak pernah memuat data

ByteBuffer publik getBuffer ()

Mengembalikan representasi ByteBuffer dari TensorImage ini dengan tipe data yang diharapkan.

Transmisi dan penjepitan numerik akan diterapkan jika data yang disimpan berbeda dari tipe data TensorImage .

Penting: ini hanya referensi. JANGAN DIUBAH. Kami tidak membuat salinan di sini karena alasan kinerja, namun jika diperlukan modifikasi, silakan buat salinannya.

Ini pada dasarnya adalah jalan pintas untuk getTensorBuffer().getBuffer() .

Kembali
  • referensi ke ByteBuffer yang menyimpan data gambar
Melempar
IlegalStateException jika TensorImage tidak pernah memuat data

ColorSpaceType publik getColorSpaceType ()

Mendapatkan tipe ruang warna TensorImage ini.

Melempar
IlegalStateException jika TensorImage tidak pernah memuat data

Tipe Data publik getDataType ()

Mendapatkan tipe data TensorImage ini.

Kembali

publik int getHeight ()

Mendapatkan tinggi gambar.

Melempar
IlegalStateException jika TensorImage tidak pernah memuat data
Pengecualian Argumen Ilegal jika data yang mendasarinya rusak

Gambar publik getMediaImage ()

Mengembalikan representasi Image dari TensorImage ini.

Metode ini hanya berfungsi jika TensorImage didukung oleh Image , artinya Anda harus memuat Image terlebih dahulu melalui load(Image) .

Penting: ini hanya referensi. JANGAN DIUBAH. Kami tidak membuat salinan di sini karena alasan kinerja, namun jika diperlukan modifikasi, silakan buat salinannya.

Kembali
Melempar
IlegalStateException jika TensorImage tidak pernah memuat data

TensorBuffer publik dapatkanTensorBuffer ()

Mengembalikan representasi TensorBuffer dari TensorImage ini dengan tipe data yang diharapkan.

Transmisi dan penjepitan numerik akan diterapkan jika data yang disimpan berbeda dari tipe data TensorImage .

Penting: ini hanya referensi. JANGAN DIUBAH. Kami tidak membuat salinan di sini karena alasan kinerja, namun jika diperlukan modifikasi, silakan buat salinannya.

Kembali
Melempar
IlegalStateException jika TensorImage tidak pernah memuat data

int publik getWidth ()

Mendapatkan lebar gambar.

Melempar
IlegalStateException jika TensorImage tidak pernah memuat data
Pengecualian Argumen Ilegal jika data yang mendasarinya rusak

beban kekosongan publik (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 tipe ruang warna lainnya.

Catatan: jika tipe data buffer tidak cocok dengan TensorImage ini, pengecoran dan penjepitan numerik akan diterapkan saat memanggil getTensorBuffer() dan getBuffer() .

Parameter
penyangga 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
Melempar
Pengecualian Argumen Ilegal jika bentuk buffer tidak cocok dengan tipe ruang warna, atau jika tipe ruang warna tidak didukung

beban kekosongan publik (Bitmap bitmap)

Memuat objek gambar Bitmap ke dalam TensorImage ini.

Catatan: jika TensorImage memiliki tipe data selain DataType.UINT8 , pengecoran dan penjepitan numerik akan diterapkan saat memanggil getTensorBuffer() dan getBuffer() , yang mana Bitmap akan diubah menjadi TensorBuffer .

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

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

Parameter
bitmap
Melempar
Pengecualian Argumen Ilegal jika bitmap tidak ada di ARGB_8888

beban kekosongan publik (int[] piksel, int[] bentuk)

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

Catatan: pengecoran dan penjepitan numerik akan diterapkan untuk mengonversi nilai menjadi tipe data TensorImage ini saat memanggil getTensorBuffer() dan getBuffer() .

Parameter
piksel piksel RGB yang mewakili gambar
membentuk bentuk bayangannya, harus dalam bentuk (h, w, 3), atau dalam bentuk (1, h, w, 3)
Melempar
Pengecualian Argumen Ilegal jika bentuknya bukan (h, w, 3) atau (1, h, w, 3)

beban kekosongan publik (float[] piksel, int[] bentuk)

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

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

Parameter
piksel piksel RGB yang mewakili gambar
membentuk bentuk bayangannya, harus dalam bentuk (h, w, 3), atau dalam bentuk (1, h, w, 3)
Melempar
Pengecualian Argumen Ilegal jika bentuknya bukan (h, w, 3) atau (1, h, w, 3)

beban kekosongan publik (buffer ByteBuffer , ImageProperties imageProperties)

Memuat ByteBuffer yang berisi nilai piksel dengan ImageProperties tertentu.

Catatan: jika tipe data buffer tidak cocok dengan TensorImage ini, pengecoran dan penjepitan numerik akan diterapkan saat memanggil getTensorBuffer() dan getBuffer() .

Parameter
penyangga
properti gambar
Melempar
Pengecualian Argumen Ilegal jika ukuran buffer lebih kecil dari ukuran gambar yang ditunjukkan oleh tinggi gambar, lebar, dan jenis ruang warna di ImageProperties

beban kekosongan publik (buffer TensorBuffer , ImageProperties imageProperties)

Memuat TensorBuffer yang berisi nilai piksel dengan ImageProperties tertentu.

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

Catatan: jika tipe data buffer tidak cocok dengan TensorImage ini, pengecoran dan penjepitan numerik akan diterapkan saat memanggil getTensorBuffer() dan getBuffer() .

Parameter
penyangga
properti gambar
Melempar
Pengecualian Argumen Ilegal jika ukuran buffer lebih kecil dari ukuran gambar yang ditunjukkan oleh tinggi gambar, lebar, dan jenis ruang warna di ImageProperties

beban kekosongan publik (Gambar gambar)

Memuat objek Image ke dalam TensorImage ini.

Penggunaan utama metode ini adalah memuat objek Image sebagai masukan 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 image bukan YUV_420_888

Parameter
gambar