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 をスローします。
パラメータ
イメージ |
---|