TensorImage は Image オブジェクトのラッパー クラスです。 TFLite.support ライブラリの画像処理ユーティリティを使用する場合、最初にバリアント型の画像オブジェクトを TensorImage に変換するのが一般的です。
現時点では、RGB 画像のみがサポートされており、A チャネルは常に無視されます。
データ ストレージの詳細: TensorImage
オブジェクトには、 Bitmap
またはTensorBuffer
という 2 つの潜在的な真実のソースがある場合があります。 TensorImage
状態を維持し、必要な場合にのみ一方を他方に変換します。 TensorImage
の典型的な使用例は、最初にBitmap
イメージをロードし、次にImageProcessor
を使用してそれを処理し、最後にTensorBuffer
の基礎となるByteBuffer
を取得して、それを TFLite インタープリタにフィードすることです。
重要: 最高のパフォーマンスを実現するために、 TensorImage
可能な限りデータのコピーを避けます。したがって、データは所有しません。呼び出し元は、 load(Bitmap)
またはload(TensorBuffer, ColorSpaceType)
に渡されるデータ オブジェクトを変更しないでください。
重要: すべてのメソッドがスレッドセーフであることが証明されているわけではありません。
パブリックコンストラクター
テンソルイメージ() TensorImage オブジェクトを初期化します。 | |
パブリックメソッド
静的TensorImage | |
静的TensorImage | fromBitmap (ビットマップ ビットマップ) |
ビットマップ | getBitmap () この TensorImage のBitmap 表現を返します。 |
バイトバッファ | getBuffer () 期待されるデータ型を持つこの TensorImage のByteBuffer 表現を返します。 |
カラースペースタイプ | getColorSpaceType () この TensorImage の色空間タイプを取得します。 |
データ・タイプ | getDataType () この TensorImage のデータ型を取得します。 |
整数 | getHeight () 画像の高さを取得します。 |
画像 | getメディアイメージ() この TensorImage のImage 表現を返します。 |
テンソルバッファ | getTensorBuffer () 期待されるデータ型を持つこの TensorImage のTensorBuffer 表現を返します。 |
整数 | getWidth () 画像の幅を取得します。 |
空所 | ロード( TensorBufferバッファー、 ColorSpaceType colorSpaceType) 特定の ColorSpaceType を持つピクセル値を含むTensorBuffer を読み込みます。 |
空所 | ロード(ビットマップ ビットマップ) Bitmap 画像オブジェクトをこのTensorImage にロードします。 |
空所 | ロード(int[] ピクセル、int[] 形状) int 配列を RGB ピクセルとしてこの TensorImage にロードし、内部のピクセルを表します。 |
空所 | ロード(float[] ピクセル、int[] 形状) float 配列を RGB ピクセルとしてこの TensorImage にロードし、内部のピクセルを表します。 |
空所 | ロード( ByteBufferバッファー、 ImageProperties imageProperties) 特定の ImageProperties を持つピクセル値を含むByteBuffer をロードします。 |
空所 | ロード( TensorBufferバッファー、 ImageProperties imageProperties) 特定の ImageProperties を持つピクセル値を含むTensorBuffer をロードします。 |
空所 | ロード(イメージ画像) Image オブジェクトをこのTensorImage にロードします。 |
継承されたメソッド
パブリックコンストラクター
パブリックTensorImage ()
TensorImage
オブジェクトを初期化します。
注: このTensorImage
のデータ型はDataType.UINT8
です。他のデータ型が優先される場合は、 TensorImage(DataType)
を使用してください。
public TensorImage ( DataType dataType)
指定されたデータ型でTensorImage
オブジェクトを初期化します。
getTensorBuffer()
やgetBuffer()
を使用するなど、このTensorImage
からTensorBuffer
またはByteBuffer
を取得する場合、データ値は指定されたデータ型に変換されます。
注: TensorImage
の形状は固定されていません。このTensorImage
にロードされる画像の形状に合わせて調整できます。
パラメーター
データ・タイプ | 結果として得られるTensorBuffer の予期されるデータ型。型はTensorImage の存続期間中常に固定されます。データ型を変換するには、 createFrom(TensorImage, DataType) を使用してコピーを作成し、同時にデータ型を変換します。 |
---|
投げる
IllegalArgumentException | dataType がDataType.UINT8 でもDataType.FLOAT32 でもない場合 |
---|
パブリックメソッド
public static TensorImage createFrom ( TensorImage src, DataType dataType)
指定されたTensorImage
のディープコピーを、必要なデータ型で作成します。
パラメーター
送信元 | コピー元のTensorImage |
---|---|
データ・タイプ | 新しく作成されたTensorImage の予期されるデータ型 |
戻り値
- データが
src
からコピーされ、データ型がdataType
であるTensorImage
public static TensorImage fromBitmap (ビットマップ ビットマップ)
パブリック ビットマップ getBitmap ()
このTensorImage
のBitmap
表現を返します。
格納されたデータが uint8 でない場合は、数値キャストとクランプが適用されます。
ALPHA_8
ビットマップからピクセルを取得する確実な方法は、 copyPixelsToBuffer
を使用することです。 `setPixels()` や `getPixels` などのビットマップ メソッドは機能しません。
重要: これは単なる参考値です。変更しないでください。パフォーマンスを考慮してここではコピーを作成しませんが、変更が必要な場合はコピーを作成してください。
戻り値
- この
TensorBuffer
のColorSpaceType
に応じて、ARGB_8888
構成 (「A」チャネルは常に不透明) またはALPHA_8
のBitmap
への参照。
投げる
IllegalStateException | TensorImage データをロードしない場合 |
---|
public ByteBuffer getBuffer ()
期待されるデータ型を持つこのTensorImage
のByteBuffer
表現を返します。
格納されたデータがTensorImage
のデータ型と異なる場合、数値キャストとクランプが適用されます。
重要: これは単なる参考値です。変更しないでください。パフォーマンスを考慮してここではコピーを作成しませんが、変更が必要な場合はコピーを作成してください。
これは基本的にgetTensorBuffer().getBuffer()
のショートカットです。
戻り値
- 画像データを保持する
ByteBuffer
への参照
投げる
IllegalStateException | TensorImage データをロードしない場合 |
---|
public ColorSpaceType getColorSpaceType ()
このTensorImage
の色空間タイプを取得します。
投げる
IllegalStateException | TensorImage データをロードしない場合 |
---|
public DataType getDataType ()
このTensorImage
のデータ型を取得します。
戻り値
- データ型。現在、
DataType.UINT8
とDataType.FLOAT32
のみがサポートされています。
public int getHeight ()
画像の高さを取得します。
投げる
IllegalStateException | TensorImage データをロードしない場合 |
---|---|
IllegalArgumentException | 基礎となるデータが破損している場合 |
パブリックイメージgetMediaImage ()
このTensorImage
のImage
表現を返します。
このメソッドは、 TensorImage
がImage
によってサポートされている場合にのみ機能します。つまり、最初にload(Image)
を通じてImage
をロードする必要があります。
重要: これは単なる参考値です。変更しないでください。パフォーマンスを考慮してここではコピーを作成しませんが、変更が必要な場合はコピーを作成してください。
戻り値
- この
TensorBuffer
のColorSpaceType
に応じて、ARGB_8888
構成 (「A」チャネルは常に不透明) またはALPHA_8
のBitmap
への参照。
投げる
IllegalStateException | TensorImage データをロードしない場合 |
---|
public TensorBuffer getTensorBuffer ()
期待されるデータ型を持つこのTensorImage
のTensorBuffer
表現を返します。
格納されたデータがTensorImage
のデータ型と異なる場合、数値キャストとクランプが適用されます。
重要: これは単なる参考値です。変更しないでください。パフォーマンスを考慮してここではコピーを作成しませんが、変更が必要な場合はコピーを作成してください。
戻り値
- 画像データを保持する
TensorBuffer
への参照
投げる
IllegalStateException | TensorImage データをロードしない場合 |
---|
public int getWidth ()
画像の幅を取得します。
投げる
IllegalStateException | TensorImage データをロードしない場合 |
---|---|
IllegalArgumentException | 基礎となるデータが破損している場合 |
public voidロード( TensorBufferバッファー、 ColorSpaceType colorSpaceType)
特定のColorSpaceType
を持つピクセル値を含むTensorBuffer
を読み込みます。
ColorSpaceType.RGB
およびColorSpaceType.GRAYSCALE
のみをサポートします。他の色空間タイプには、 load(TensorBuffer, ImageProperties)
を使用します。
注: buffer
のデータ型がこのTensorImage
のデータ型と一致しない場合、 getTensorBuffer()
およびgetBuffer()
を呼び出すときに数値キャストとクランプが適用されます。
パラメーター
バッファ | ロードされるTensorBuffer 。その形状は、RGB 画像の場合は (h, w, 3) または (1, h, w, 3) のいずれか、GRAYSCALE 画像の場合は (h, w) または (1, h, w) のいずれかでなければなりません。 |
---|---|
カラースペースタイプ |
投げる
IllegalArgumentException | バッファの形状が色空間タイプと一致しない場合、または色空間タイプがサポートされていない場合 |
---|
public voidロード(ビットマップ ビットマップ)
Bitmap
画像オブジェクトをこのTensorImage
にロードします。
注: TensorImage
のデータ型がDataType.UINT8
以外の場合、 getTensorBuffer()
およびgetBuffer()
を呼び出すときに数値キャストとクランプが適用され、 Bitmap
TensorBuffer
に変換されます。
重要: ビットマップをロードするときは、呼び出し側からビットマップを変更しないでください。 TensorImage
オブジェクトはビットマップに依存します。おそらくビットマップも変更されるでしょう。この方法では、ビットマップの参照を保持するだけで、そのビットマップに対してゼロコピー アプローチを実行します。必要に応じてbitmap.copy(bitmap.getConfig(), true)
を使用してコピーを作成します。
注: 最高のパフォーマンスを得るには、メモリの再割り当てを避けるために、同じ形状でイメージをロードしてください。
パラメーター
ビットマップ |
---|
投げる
IllegalArgumentException | bitmap が ARGB_8888 にない場合 |
---|
public voidロード(int[] ピクセル、int[] 形状)
int 配列を RGB ピクセルとしてこのTensorImage
にロードし、内部のピクセルを表します。
注: getTensorBuffer()
およびgetBuffer()
を呼び出すときに、数値のキャストとクランプが適用されて、値がこのTensorImage
のデータ型に変換されます。
パラメーター
ピクセル | 画像を表す RGB ピクセル |
---|---|
形 | 画像の形状は、形式 (h, w, 3) または形式 (1, h, w, 3) のいずれかである必要があります。 |
投げる
IllegalArgumentException | 形状が (h, w, 3) でも (1, h, w, 3) でもない場合 |
---|
public voidロード(float[] ピクセル、int[] 形状)
float 配列を RGB ピクセルとしてこのTensorImage
にロードし、内部のピクセルを表します。
注: TensorImage
のデータ型がDataType.FLOAT32
以外の場合、 getTensorBuffer()
およびgetBuffer()
を呼び出すときに数値キャストとクランプが適用されます。
パラメーター
ピクセル | 画像を表す RGB ピクセル |
---|---|
形 | 画像の形状は、形式 (h, w, 3) または形式 (1, h, w, 3) のいずれかである必要があります。 |
投げる
IllegalArgumentException | 形状が (h, w, 3) でも (1, h, w, 3) でもない場合 |
---|
public voidロード( ByteBufferバッファー、 ImageProperties imageProperties)
特定のImageProperties
を持つピクセル値を含むByteBuffer
をロードします。
注: buffer
のデータ型がこのTensorImage
のデータ型と一致しない場合、 getTensorBuffer()
およびgetBuffer()
を呼び出すときに数値キャストとクランプが適用されます。
パラメーター
バッファ | |
---|---|
画像プロパティ |
投げる
IllegalArgumentException | バッファ サイズが、 ImageProperties の画像の高さ、幅、色空間タイプで示される画像サイズより小さい場合 |
---|
public voidロード( TensorBufferバッファー、 ImageProperties imageProperties)
特定のImageProperties
を持つピクセル値を含むTensorBuffer
をロードします。
TensorBuffer
の形状は、画像の高さと幅を決定するために使用されません。 ImageProperties
を通じて画像プロパティを設定します。
注: buffer
のデータ型がこのTensorImage
のデータ型と一致しない場合、 getTensorBuffer()
およびgetBuffer()
を呼び出すときに数値キャストとクランプが適用されます。
パラメーター
バッファ | |
---|---|
画像プロパティ |
投げる
IllegalArgumentException | バッファ サイズが、 ImageProperties の画像の高さ、幅、色空間タイプで示される画像サイズより小さい場合 |
---|
public voidロード(イメージ画像)
Image
オブジェクトをこのTensorImage
にロードします。
このメソッドの主な使用法は、 Image
オブジェクトをモデル入力としてhttps://www.tensorflow.org/lite/inference_with_metadata/task_library/overviewにロードすることです。 Image
によってサポートされるTensorImage
、 ImageProcessor
ではサポートされていません。
* image
のImageFormat
YUV_420_888 でない場合は @throws IllegalArgumentException
パラメーター
画像 |
---|