TensorImage

публичный класс TensorImage

TensorImage — это класс-оболочка для объекта Image. При использовании утилит обработки изображений в библиотеке TFLite.support обычно сначала преобразуются объекты изображений в вариантах типов в TensorImage.

В настоящее время поддерживаются только изображения RGB, а канал A всегда игнорируется.

Подробности хранения данных: объект TensorImage может иметь два потенциальных источника истины: Bitmap или TensorBuffer . TensorImage сохраняет состояние и преобразует одно в другое только при необходимости. Типичный вариант использования TensorImage — сначала загрузить Bitmap изображение, затем обработать его с помощью ImageProcessor и, наконец, получить базовый ByteBuffer TensorBuffer и передать его в интерпретатор TFLite.

ВАЖНО: для достижения максимальной производительности TensorImage избегает копирования данных, когда это возможно. Следовательно, он не владеет своими данными. Вызывающие объекты не должны изменять объекты данных, которые передаются в load(Bitmap) или load(TensorBuffer, ColorSpaceType) .

ВАЖНО: не все методы являются потокобезопасными.

Публичные конструкторы

ТензорИмидж ()
Инициализирует объект TensorImage .
TensorImage ( Тип данныхТип данных)
Инициализирует объект TensorImage указанным типом данных.

Публичные методы

статический тензорный образ
createFrom ( TensorImage src, DataType dataType)
Создает глубокую копию данного TensorImage с нужным типом данных.
статический тензорный образ
fromBitmap (растровое изображение)
Инициализирует объект TensorImage DataType.UINT8 с помощью Bitmap .
Битовая карта
получить битмап ()
Возвращает Bitmap представление этого TensorImage .
Байтбуфер
получитьбуфер ()
Возвращает представление ByteBuffer этого TensorImage с ожидаемым типом данных.
ЦветПространствоТип
getColorSpaceType ()
Получает тип цветового пространства этого TensorImage .
Тип данных
получитьТипДанных ()
Получает тип данных этого TensorImage .
интервал
получитьВысоту ()
Получает высоту изображения.
Изображение
getMediaImage ()
Возвращает представление Image этого TensorImage .
ТензорБуфер
getTensorBuffer ()
Возвращает представление TensorBuffer этого TensorImage с ожидаемым типом данных.
интервал
получить ширину ()
Получает ширину изображения.
пустота
загрузить (буфер TensorBuffer , ColorSpaceType colorSpaceType)
Загружает TensorBuffer , содержащий значения пикселей с определенным ColorSpaceType .
пустота
загрузить (растровое изображение)
Загружает объект Bitmap изображения в этот TensorImage .
пустота
загрузить (int[] пикселей, int[] форму)
Загружает массив int в виде пикселей RGB в этот TensorImage , представляющий пиксели внутри.
пустота
загрузить (пиксели float[], форма int[])
Загружает массив с плавающей запятой в виде пикселей RGB в этот TensorImage , представляющий пиксели внутри.
пустота
загрузить (буфер ByteBuffer , ImageProperties imageProperties)
Загружает ByteBuffer , содержащий значения пикселей с определенными ImageProperties .
пустота
загрузить (буфер TensorBuffer , ImageProperties imageProperties)
Загружает TensorBuffer , содержащий значения пикселей с определенными ImageProperties .
пустота
загрузить (изображение изображения)
Загружает объект Image в этот TensorImage .

Унаследованные методы

Публичные конструкторы

общедоступный TensorImage ()

Инициализирует объект TensorImage .

Примечание. Тип данных этого TensorImageDataType.UINT8 . Используйте TensorImage(DataType) если предпочтительны другие типы данных.

общедоступный TensorImage ( DataType dataType)

Инициализирует объект TensorImage указанным типом данных.

При получении TensorBuffer или ByteBuffer из этого TensorImage , например, с помощью getTensorBuffer() и getBuffer() , значения данных будут преобразованы в указанный тип данных.

Примечание. Форма TensorImage не фиксирована. Его можно настроить в соответствии с формой изображения, загружаемого в этот TensorImage .

Параметры
тип данных ожидаемый тип данных результирующего TensorBuffer . Тип всегда фиксируется на протяжении всего срока службы TensorImage . Чтобы преобразовать тип данных, используйте createFrom(TensorImage, DataType) для одновременного создания копии и преобразования типа данных.
Броски
IllegalArgumentException если dataType не является ни DataType.UINT8 , ни DataType.FLOAT32

Публичные методы

public static TensorImage createFrom ( TensorImage src, DataType dataType)

Создает глубокую копию данного TensorImage с нужным типом данных.

Параметры
источник TensorImage для копирования
тип данных ожидаемый тип данных вновь созданного TensorImage
Возврат
  • TensorImage , данные которого копируются из src , а тип данных — dataType

общедоступный статический TensorImage fromBitmap (растровое изображение)

Инициализирует объект TensorImage DataType.UINT8 с помощью Bitmap .

Параметры
битовая карта

общедоступное растровое изображение getBitmap ()

Возвращает Bitmap представление этого TensorImage .

Числовое приведение и ограничение будут применены, если сохраненные данные не uint8.

Обратите внимание: надежный способ получить пиксели из растрового изображения ALPHA_8 — использовать copyPixelsToBuffer . Растровые методы, такие как setPixels() и getPixels, не работают.

Важно: это всего лишь ссылка. НЕ ИЗМЕНЯЙТЕ. Мы не создаем здесь копию из соображений производительности, но если необходимо внести изменения, сделайте копию.

Возврат
  • ссылка на Bitmap в конфигурации ARGB_8888 (канал A всегда непрозрачен) или в ALPHA_8 , в зависимости от ColorSpaceType этого TensorBuffer .
Броски
IllegalStateException если TensorImage никогда не загружает данные

общедоступный ByteBuffer getBuffer ()

Возвращает представление ByteBuffer этого TensorImage с ожидаемым типом данных.

Числовое приведение и ограничение будут применены, если сохраненные данные отличаются от типа данных TensorImage .

Важно: это всего лишь ссылка. НЕ ИЗМЕНЯЙТЕ. Мы не создаем здесь копию из соображений производительности, но если необходимо внести изменения, сделайте копию.

По сути, это сокращенный вариант getTensorBuffer().getBuffer() .

Возврат
  • ссылка на ByteBuffer , который содержит данные изображения
Броски
IllegalStateException если TensorImage никогда не загружает данные

общедоступный ColorSpaceType getColorSpaceType ()

Получает тип цветового пространства этого TensorImage .

Броски
IllegalStateException если TensorImage никогда не загружает данные

общедоступный тип данных getDataType ()

Получает тип данных этого TensorImage .

Возврат

public int getHeight ()

Получает высоту изображения.

Броски
IllegalStateException если TensorImage никогда не загружает данные
IllegalArgumentException если базовые данные повреждены

общедоступное изображение getMediaImage ()

Возвращает представление Image этого TensorImage .

Этот метод работает только тогда, когда TensorImage поддерживается Image , а это означает, что вам нужно сначала загрузить Image через load(Image) .

Важно: это всего лишь ссылка. НЕ ИЗМЕНЯЙТЕ. Мы не создаем здесь копию из соображений производительности, но если необходимо внести изменения, сделайте копию.

Возврат
  • ссылка на Bitmap в конфигурации ARGB_8888 (канал A всегда непрозрачен) или в ALPHA_8 , в зависимости от ColorSpaceType этого TensorBuffer .
Броски
IllegalStateException если TensorImage никогда не загружает данные

общедоступный TensorBuffer getTensorBuffer ()

Возвращает представление TensorBuffer этого TensorImage с ожидаемым типом данных.

Числовое приведение и ограничение будут применены, если сохраненные данные отличаются от типа данных TensorImage .

Важно: это всего лишь ссылка. НЕ ИЗМЕНЯЙТЕ. Мы не создаем здесь копию из соображений производительности, но если необходимо внести изменения, сделайте копию.

Возврат
  • ссылка на TensorBuffer , который содержит данные изображения
Броски
IllegalStateException если TensorImage никогда не загружает данные

public int getWidth ()

Получает ширину изображения.

Броски
IllegalStateException если TensorImage никогда не загружает данные
IllegalArgumentException если базовые данные повреждены

общедоступная недействительная загрузка (буфер TensorBuffer , ColorSpaceType colorSpaceType)

Загружает TensorBuffer , содержащий значения пикселей с определенным ColorSpaceType .

Поддерживается только ColorSpaceType.RGB и ColorSpaceType.GRAYSCALE . Используйте load(TensorBuffer, ImageProperties) для других типов цветового пространства.

Примечание. Если тип данных buffer не соответствует типу данных этого TensorImage , при вызове getTensorBuffer() и getBuffer() будут применяться числовое приведение и ограничение.

Параметры
буфер TensorBuffer для загрузки. Его форма должна быть либо (h, w, 3) или (1, h, w, 3) для изображений RGB, либо (h, w) или (1, h, w) для изображений СЕРОГО.
цветПространствоТип
Броски
IllegalArgumentException если форма буфера не соответствует типу цветового пространства или тип цветового пространства не поддерживается

общедоступная недействительная загрузка (растровое изображение)

Загружает объект Bitmap изображения в этот TensorImage .

Примечание. Если TensorImage имеет тип данных, отличный от DataType.UINT8 , числовое приведение и ограничение будут применяться при вызове getTensorBuffer() и getBuffer() , где Bitmap будет преобразован в TensorBuffer .

Важно: при загрузке растрового изображения НЕ ИЗМЕНЯЙТЕ его больше со стороны вызывающей стороны. Объект TensorImage будет полагаться на растровое изображение. Вероятно, это также изменит растровое изображение. В этом методе мы применяем подход с нулевым копированием этого растрового изображения, просто сохраняя его ссылку. Используйте bitmap.copy(bitmap.getConfig(), true) чтобы при необходимости создать копию.

Примечание. Для достижения максимальной производительности загружайте изображения одинаковой формы, чтобы избежать перераспределения памяти.

Параметры
битовая карта
Броски
IllegalArgumentException если bitmap отсутствует в ARGB_8888

общедоступная недействительная загрузка (пиксели int[], форма int[])

Загружает массив int в виде пикселей RGB в этот TensorImage , представляющий пиксели внутри.

Примечание: числовое приведение и ограничение будут применяться для преобразования значений в тип данных этого TensorImage при вызове getTensorBuffer() и getBuffer() .

Параметры
пиксели пиксели RGB, представляющие изображение
форма форма изображения, должна быть либо в форме (h,w,3), либо в форме (1,h,w,3)
Броски
IllegalArgumentException если форма не является ни (h, w, 3), ни (1, h, w, 3)

общедоступная недействительная загрузка (пиксели float[], форма int[])

Загружает массив с плавающей запятой в виде пикселей RGB в этот TensorImage , представляющий пиксели внутри.

Примечание. Если TensorImage имеет тип данных, отличный от DataType.FLOAT32 , числовое приведение и ограничение будут применяться при вызове getTensorBuffer() и getBuffer() .

Параметры
пиксели пиксели RGB, представляющие изображение
форма форма изображения, должна быть либо в форме (h,w,3), либо в форме (1,h,w,3)
Броски
IllegalArgumentException если форма не является ни (h, w, 3), ни (1, h, w, 3)

общедоступная недействительная загрузка (буфер ByteBuffer , ImageProperties imageProperties)

Загружает ByteBuffer , содержащий значения пикселей с определенными ImageProperties .

Примечание. Если тип данных buffer не соответствует типу данных этого TensorImage , при вызове getTensorBuffer() и getBuffer() будут применяться числовое приведение и ограничение.

Параметры
буфер
Свойства изображения
Броски
IllegalArgumentException если размер буфера меньше размера изображения, указанного высотой, шириной и типом цветового пространства изображения в ImageProperties

общедоступная недействительная загрузка (буфер TensorBuffer , ImageProperties imageProperties)

Загружает TensorBuffer , содержащий значения пикселей с определенными ImageProperties .

Форма TensorBuffer не будет использоваться для определения высоты и ширины изображения. Установите свойства изображения через ImageProperties .

Примечание. Если тип данных buffer не соответствует типу данных этого TensorImage , при вызове getTensorBuffer() и getBuffer() будут применяться числовое приведение и ограничение.

Параметры
буфер
Свойства изображения
Броски
IllegalArgumentException если размер буфера меньше размера изображения, указанного высотой, шириной и типом цветового пространства изображения в ImageProperties

общественная недействительная нагрузка (изображение изображения)

Загружает объект Image в этот TensorImage .

Основное использование этого метода — загрузка объекта Image в качестве входных данных модели в https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview . TensorImage поддерживаемый Image не поддерживается ImageProcessor .

* @throws IllegalArgumentException, если ImageFormat image не YUV_420_888

Параметры
изображение