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)
|
| 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
TensorImageyang datanya disalin darisrcdan jenis datanya adalahdataType
publik statis TensorImage fromBitmap (Bitmap bitmap)
Menginisialisasi objek TensorImage dari DataType.UINT8 dengan Bitmap .
Parameter
| bitmap |
|---|
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
- referensi ke
Bitmapdalam konfigurasiARGB_8888(saluran "A" selalu buram) atau dalamALPHA_8, bergantung padaColorSpaceTypedariTensorBufferini.
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
ByteBufferyang 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
- tipe data. Saat ini, hanya
DataType.UINT8danDataType.FLOAT32yang didukung.
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
- referensi ke
Bitmapdalam konfigurasiARGB_8888(saluran "A" selalu buram) atau dalamALPHA_8, bergantung padaColorSpaceTypedariTensorBufferini.
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
- referensi ke
TensorBufferyang menyimpan data gambar
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 |
|---|