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 オブジェクトを初期化します。 |
|
パブリック メソッド
| static TensorImage | |
| static TensorImage |
fromBitmap(ビットマップ ビットマップ)
|
| ビットマップ |
getBitmap()
この
TensorImage の Bitmap 表現を返します。 |
| ByteBuffer |
getBuffer()
想定されるデータ型でこの
TensorImage の ByteBuffer 表現を返します。 |
| ColorSpaceType |
getColorSpaceType()
この
TensorImage の色空間タイプを取得します。 |
| DataType |
getDataType()
この
TensorImage のデータ型を取得します。 |
| 整数 |
getHeight()
画像の高さを取得します。
|
| 画像 |
getMediaImage()
この
TensorImage の Image 表現を返します。 |
| TensorBuffer |
getTensorBuffer()
想定されるデータ型を含むこの
TensorImage の TensorBuffer 表現を返します。 |
| 整数 |
getWidth()
画像の幅を取得します。
|
| void |
load(TensorBuffer バッファ、ColorSpaceType colorSpaceType)
特定の
ColorSpaceType でピクセル値を含む TensorBuffer を読み込みます。 |
| void |
load(ビットマップ ビットマップ)
Bitmap 画像オブジェクトをこの TensorImage に読み込みます。 |
| void |
load(int[] ピクセル, int[] shape)
内部のピクセルを表す int 配列を RGB ピクセルとしてこの
TensorImage に読み込みます。 |
| void |
load(float[] pixel, int[] shape)
内部のピクセルを表す浮動小数点配列を RGB ピクセルとしてこの
TensorImage に読み込みます。 |
| void |
load(ByteBuffer バッファ、ImageProperties imageProperties)
特定の
ImageProperties でピクセル値を含む ByteBuffer を読み込みます。 |
| void |
load(TensorBuffer バッファ、ImageProperties imageProperties)
特定の
ImageProperties でピクセル値を含む TensorBuffer を読み込みます。 |
| void |
load(画像画像)
この
TensorImage に Image オブジェクトを読み込みます。 |
継承されるメソッド
パブリック コンストラクタ
public TensorImage ()
TensorImage オブジェクトを初期化します。
注: この TensorImage のデータ型は DataType.UINT8 です。他のデータ型が好まれる場合は、TensorImage(DataType) を使用します。
public TensorImage (DataType dataType)
指定されたデータ型で TensorImage オブジェクトを初期化します。
getTensorBuffer() や getBuffer() を使用するなどして、この TensorImage から TensorBuffer または ByteBuffer を取得すると、データ値は指定されたデータ型に変換されます。
注: TensorImage の形状は固定されていません。この TensorImage に読み込まれる画像の形状に合わせて調整できます。
パラメータ
| dataType | 結果の TensorBuffer の想定されるデータ型。この型は、TensorImage の存続期間中は常に固定されます。データ型を変換するには、createFrom(TensorImage, DataType) を使用してコピーを作成し、データ型を変換します。 |
|---|
例外
| IllegalArgumentException | dataType が DataType.UINT8 でも DataType.FLOAT32 でもない場合
|
|---|
パブリック メソッド
public static TensorImage createFrom (TensorImage src, DataType dataType)
目的のデータ型で指定された TensorImage のディープコピーを作成します。
パラメータ
| src | コピー元の TensorImage |
|---|---|
| dataType | 新しく作成された TensorImage の想定されるデータ型 |
戻り値
- データが
srcからコピーされ、データ型がdataTypeのTensorImage
public static TensorImage fromBitmap (ビットマップ ビットマップ)
public ビットマップ 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 | 基になるデータが破損している場合 |
public Image 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 load (TensorBuffer バッファ、ColorSpaceType colorSpaceType)
特定の ColorSpaceType のピクセル値を含む TensorBuffer を読み込みます。
ColorSpaceType.RGB と ColorSpaceType.GRAYSCALE のみをサポートしています。他の色空間タイプには load(TensorBuffer, ImageProperties) を使用します。
注: buffer のデータ型がこの TensorImage のデータ型と一致しない場合、getTensorBuffer() と getBuffer() を呼び出すときに数値のキャストとクランプが適用されます。
パラメータ
| buffer | 読み込む TensorBuffer。RGB 画像の形状は、(h, w, 3) または (1, h, w, 3)、GRAYSCALE 画像の場合は (h, w) または (1, h, w) にする必要があります。 |
|---|---|
| colorSpaceType |
例外
| IllegalArgumentException | バッファの形状が色空間のタイプと一致しない場合、または色空間のタイプがサポートされていない場合 |
|---|
public void load (ビットマップ ビットマップ)
Bitmap 画像オブジェクトをこの TensorImage に読み込みます。
注: TensorImage のデータ型が DataType.UINT8 以外の場合、getTensorBuffer() と getBuffer() を呼び出すときに数値のキャストとクランプが適用され、Bitmap は TensorBuffer に変換されます。
重要: ビットマップを読み込むときは、呼び出し元側からビットマップを変更しないでください。TensorImage オブジェクトはビットマップに依存します。おそらくビットマップも変更されます。この方法では、単に参照を保持することで、そのビットマップに対してゼロコピー アプローチを実行します。必要に応じて、bitmap.copy(bitmap.getConfig(), true) を使用してコピーを作成します。
注: 最高のパフォーマンスを得るには、メモリの再割り当てを避けるため、同じ形状で画像を読み込んでください。
パラメータ
| ビットマップ |
|---|
例外
| IllegalArgumentException | bitmap が ARGB_8888 にない場合
|
|---|
public void load (int[] pixel, int[] shape)
内部のピクセルを表す int 配列を RGB ピクセルとしてこの TensorImage に読み込みます。
注: getTensorBuffer() と getBuffer() を呼び出すときに、数値のキャストとクランプを適用して、値をこの TensorImage のデータ型に変換します。
パラメータ
| ピクセル | 画像を表す RGB ピクセル |
|---|---|
| シェイプ | 画像の形状。形式は (h, w, 3) または (1, h, w, 3) のいずれかです。 |
例外
| IllegalArgumentException | 形状が (h, w, 3) でも (1, h, w, 3) でもない場合 |
|---|
public void load (float[] pixels, int[] shape)
内部のピクセルを表す浮動小数点配列を 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 load (ByteBuffer バッファ、ImageProperties imageProperties)
特定の ImageProperties のピクセル値を含む ByteBuffer を読み込みます。
注: buffer のデータ型がこの TensorImage のデータ型と一致しない場合、getTensorBuffer() と getBuffer() を呼び出すときに数値のキャストとクランプが適用されます。
パラメータ
| buffer | |
|---|---|
| imageProperties |
例外
| IllegalArgumentException | バッファサイズが、ImageProperties の画像の高さ、幅、色空間タイプで指定された画像サイズより小さい場合
|
|---|
public void load (TensorBuffer バッファ、ImageProperties imageProperties)
特定の ImageProperties のピクセル値を含む TensorBuffer を読み込みます。
TensorBuffer の形状は、画像の高さと幅の決定には使用されません。
ImageProperties を使用して画像のプロパティを設定します。
注: buffer のデータ型がこの TensorImage のデータ型と一致しない場合、getTensorBuffer() と getBuffer() を呼び出すときに数値のキャストとクランプが適用されます。
パラメータ
| buffer | |
|---|---|
| imageProperties |
例外
| IllegalArgumentException | バッファサイズが、ImageProperties の画像の高さ、幅、色空間タイプで指定された画像サイズより小さい場合
|
|---|
public void load (画像画像)
Image オブジェクトをこの TensorImage に読み込みます。
このメソッドの主な用途は、Image オブジェクトをモデル入力として https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview に読み込むことです。Image に基づく TensorImage は、ImageProcessor ではサポートされていません。
* @image の ImageFormat が YUV_420_888 でない場合、IllegalArgumentException をスローします。
パラメータ
| イメージ |
|---|