TensorImage

lớp công khai TensorImage

TensorImage là lớp bao bọc cho đối tượng Image. Khi sử dụng các tiện ích xử lý hình ảnh trong thư viện TFLite.support, việc chuyển đổi các đối tượng hình ảnh ở các loại biến thể thành TensorImage lúc đầu là điều phổ biến.

Hiện tại, chỉ hỗ trợ hình ảnh RGB và kênh A luôn bị bỏ qua.

Chi tiết về lưu trữ dữ liệu: một đối tượng TensorImage có thể có 2 nguồn sự thật tiềm năng: Bitmap hoặc TensorBuffer . TensorImage duy trì trạng thái và chỉ chuyển đổi trạng thái này sang trạng thái khác khi cần. Trường hợp sử dụng điển hình của TensorImage là trước tiên tải hình ảnh Bitmap , sau đó xử lý nó bằng ImageProcessor và cuối cùng lấy ByteBuffer cơ bản của TensorBuffer và đưa nó vào trình thông dịch TFLite.

QUAN TRỌNG: để đạt được hiệu suất tốt nhất, TensorImage tránh sao chép dữ liệu bất cứ khi nào có thể. Vì vậy, nó không sở hữu dữ liệu của nó. Người gọi không nên sửa đổi các đối tượng dữ liệu được chuyển tới load(Bitmap) hoặc load(TensorBuffer, ColorSpaceType) .

QUAN TRỌNG: tất cả các phương pháp đều không được chứng minh là an toàn theo luồng.

Nhà xây dựng công cộng

TenorImage ()
Khởi tạo một đối tượng TensorImage .
TensorImage ( Kiểu dữ liệu kiểu dữ liệu)
Khởi tạo một đối tượng TensorImage với kiểu dữ liệu được chỉ định.

Phương pháp công khai

TensorImage tĩnh
createFrom ( TensorImage src, DataType dataType)
Tạo bản sao sâu của TensorImage nhất định với kiểu dữ liệu mong muốn.
TensorImage tĩnh
fromBitmap (bitmap bitmap)
Khởi tạo đối tượng TensorImage của DataType.UINT8 bằng Bitmap .
Bản đồ bit
getBitmap ()
Trả về bản trình bày Bitmap của TensorImage này.
Bộ đệm byte
getBuffer ()
Trả về biểu diễn ByteBuffer của TensorImage này với kiểu dữ liệu dự kiến.
MàuKhông gianLoại
getColorSpaceType ()
Lấy loại không gian màu của TensorImage này.
Loại dữ liệu
getDataType ()
Lấy kiểu dữ liệu của TensorImage này.
int
getHeight ()
Lấy chiều cao của hình ảnh.
Hình ảnh
getMediaImage ()
Trả về một Image đại diện cho TensorImage này.
Bộ đệm Tensor
getTensorBuffer ()
Trả về biểu diễn TensorBuffer của TensorImage này với kiểu dữ liệu dự kiến.
int
getWidth ()
Lấy chiều rộng hình ảnh.
trống rỗng
tải (Bộ đệm TensorBuffer , ColorSpaceType colorSpaceType)
Tải TensorBuffer chứa các giá trị pixel với ColorSpaceType cụ thể.
trống rỗng
tải (bitmap bitmap)
Tải một đối tượng hình ảnh Bitmap vào TensorImage này.
trống rỗng
tải (int[] pixel, hình dạng int[])
Tải một mảng int dưới dạng pixel RGB vào TensorImage này, biểu thị các pixel bên trong.
trống rỗng
tải (float[] pixel, hình dạng int[])
Tải một mảng float dưới dạng pixel RGB vào TensorImage này, đại diện cho các pixel bên trong.
trống rỗng
tải (Bộ đệm ByteBuffer , ImageProperties imageProperties)
Tải ByteBuffer chứa các giá trị pixel với ImageProperties cụ thể.
trống rỗng
tải (Bộ đệm TensorBuffer , ImageProperties imageProperties)
Tải TensorBuffer chứa các giá trị pixel với ImageProperties cụ thể.
trống rỗng
tải (Hình ảnh hình ảnh)
Tải một đối tượng Image vào TensorImage này.

Phương pháp kế thừa

Nhà xây dựng công cộng

TensorImage công khai ()

Khởi tạo một đối tượng TensorImage .

Lưu ý: kiểu dữ liệu của TensorImage này là DataType.UINT8 . Sử dụng TensorImage(DataType) nếu các loại dữ liệu khác được ưu tiên.

TensorImage công khai ( DataType dataType)

Khởi tạo một đối tượng TensorImage với kiểu dữ liệu được chỉ định.

Khi nhận được TensorBuffer hoặc ByteBuffer từ TensorImage này, chẳng hạn như sử dụng getTensorBuffer()getBuffer() , các giá trị dữ liệu sẽ được chuyển đổi thành loại dữ liệu được chỉ định.

Lưu ý: hình dạng của TensorImage không cố định. Nó có thể được điều chỉnh theo hình dạng của hình ảnh đang được tải lên TensorImage này.

Thông số
loại dữ liệu kiểu dữ liệu dự kiến ​​​​của TensorBuffer kết quả. Loại này luôn được cố định trong suốt thời gian tồn tại của TensorImage . Để chuyển đổi kiểu dữ liệu, hãy sử dụng createFrom(TensorImage, DataType) để tạo bản sao và chuyển đổi kiểu dữ liệu cùng một lúc.

Phương pháp công khai

công khai tĩnh TensorImage createFrom ( TensorImage src, DataType dataType)

Tạo bản sao sâu của TensorImage nhất định với kiểu dữ liệu mong muốn.

Thông số
src TensorImage để sao chép từ
loại dữ liệu kiểu dữ liệu dự kiến ​​của TensorImage mới được tạo
Trả lại
  • một TensorImage có dữ liệu được sao chép từ src và kiểu dữ liệu là dataType

TensorImage tĩnh công khai từBitmap (Bitmap bitmap)

bitmap công khai getBitmap ()

Trả về bản trình bày Bitmap của TensorImage này.

Việc truyền và kẹp số sẽ được áp dụng nếu dữ liệu được lưu trữ không phải là uint8.

Lưu ý rằng cách đáng tin cậy để lấy pixel từ Bitmap ALPHA_8 là sử dụng copyPixelsToBuffer . Các phương thức bitmap như `setPixels()` và `getPixels` không hoạt động.

Quan trọng: nó chỉ là một tài liệu tham khảo. KHÔNG SỬA ĐỔI. Chúng tôi không tạo bản sao ở đây vì lý do hiệu suất, nhưng nếu cần sửa đổi, vui lòng tạo một bản sao.

Trả lại
  • tham chiếu đến Bitmap trong cấu hình ARGB_8888 (kênh "A" luôn mờ) hoặc trong ALPHA_8 , tùy thuộc vào ColorSpaceType của TensorBuffer này.
Ném
Ngoại lệ nhà nước bất hợp pháp nếu TensorImage không bao giờ tải dữ liệu

getBuffer ByteBuffer công khai ()

Trả về biểu diễn ByteBuffer của TensorImage này với kiểu dữ liệu dự kiến.

Việc truyền và kẹp số sẽ được áp dụng nếu dữ liệu được lưu trữ khác với kiểu dữ liệu của TensorImage .

Quan trọng: nó chỉ là một tài liệu tham khảo. KHÔNG SỬA ĐỔI. Chúng tôi không tạo bản sao ở đây vì lý do hiệu suất, nhưng nếu cần sửa đổi, vui lòng tạo một bản sao.

Về cơ bản, đây là cách viết tắt của getTensorBuffer().getBuffer() .

Trả lại
  • tham chiếu đến ByteBuffer chứa dữ liệu hình ảnh
Ném
Ngoại lệ nhà nước bất hợp pháp nếu TensorImage không bao giờ tải dữ liệu

ColorSpaceType công khai getColorSpaceType ()

Lấy loại không gian màu của TensorImage này.

Ném
Ngoại lệ nhà nước bất hợp pháp nếu TensorImage không bao giờ tải dữ liệu

Kiểu dữ liệu công khai getDataType ()

Lấy kiểu dữ liệu của TensorImage này.

Trả lại

int công khai getHeight ()

Lấy chiều cao của hình ảnh.

Ném
Ngoại lệ nhà nước bất hợp pháp nếu TensorImage không bao giờ tải dữ liệu
Ngoại lệ Đối số bất hợp pháp nếu dữ liệu cơ bản bị hỏng

Hình ảnh công khai getMediaImage ()

Trả về một Image đại diện cho TensorImage này.

Phương pháp này chỉ hoạt động khi TensorImage được hỗ trợ bởi Image , nghĩa là trước tiên bạn cần tải Image thông qua load(Image) .

Quan trọng: nó chỉ là một tài liệu tham khảo. KHÔNG SỬA ĐỔI. Chúng tôi không tạo bản sao ở đây vì lý do hiệu suất, nhưng nếu cần sửa đổi, vui lòng tạo một bản sao.

Trả lại
  • tham chiếu đến Bitmap trong cấu hình ARGB_8888 (kênh "A" luôn mờ) hoặc trong ALPHA_8 , tùy thuộc vào ColorSpaceType của TensorBuffer này.
Ném
Ngoại lệ nhà nước bất hợp pháp nếu TensorImage không bao giờ tải dữ liệu

công khai TensorBuffer getTensorBuffer ()

Trả về biểu diễn TensorBuffer của TensorImage này với kiểu dữ liệu dự kiến.

Việc truyền và kẹp số sẽ được áp dụng nếu dữ liệu được lưu trữ khác với kiểu dữ liệu của TensorImage .

Quan trọng: nó chỉ là một tài liệu tham khảo. KHÔNG SỬA ĐỔI. Chúng tôi không tạo bản sao ở đây vì lý do hiệu suất, nhưng nếu cần sửa đổi, vui lòng tạo một bản sao.

Trả lại
  • một tham chiếu đến TensorBuffer chứa dữ liệu hình ảnh
Ném
Ngoại lệ nhà nước bất hợp pháp nếu TensorImage không bao giờ tải dữ liệu

int công khai getWidth ()

Lấy chiều rộng hình ảnh.

Ném
Ngoại lệ nhà nước bất hợp pháp nếu TensorImage không bao giờ tải dữ liệu
Ngoại lệ Đối số bất hợp pháp nếu dữ liệu cơ bản bị hỏng

tải khoảng trống công khai (Bộ đệm TensorBuffer , ColorSpaceType colorSpaceType)

Tải TensorBuffer chứa các giá trị pixel với ColorSpaceType cụ thể.

Chỉ hỗ trợ ColorSpaceType.RGBColorSpaceType.GRAYSCALE . Sử dụng load(TensorBuffer, ImageProperties) cho các loại không gian màu khác.

Lưu ý: nếu kiểu dữ liệu của buffer không khớp với kiểu dữ liệu của TensorImage này, việc truyền và kẹp số sẽ được áp dụng khi gọi getTensorBuffer()getBuffer() .

Thông số
đệm TensorBuffer sẽ được tải. Hình dạng của nó phải là (h, w, 3) hoặc (1, h, w, 3) đối với hình ảnh RGB và (h, w) hoặc (1, h, w) đối với hình ảnh GRAYSCALE
màuSpaceType
Ném
Ngoại lệ Đối số bất hợp pháp nếu hình dạng của bộ đệm không khớp với loại không gian màu hoặc nếu loại không gian màu không được hỗ trợ

tải khoảng trống công khai (bitmap bitmap)

Tải một đối tượng hình ảnh Bitmap vào TensorImage này.

Lưu ý: nếu TensorImage có kiểu dữ liệu khác với DataType.UINT8 , việc truyền và kẹp số sẽ được áp dụng khi gọi getTensorBuffer()getBuffer() , trong đó Bitmap sẽ được chuyển đổi thành TensorBuffer .

Quan trọng: khi tải bitmap, KHÔNG SỬA ĐỔI bitmap từ phía người gọi nữa. Đối tượng TensorImage sẽ dựa vào bitmap. Nó có thể cũng sẽ sửa đổi bitmap. Trong phương pháp này, chúng tôi thực hiện phương pháp không sao chép cho bitmap đó, bằng cách chỉ cần giữ tham chiếu của nó. Sử dụng bitmap.copy(bitmap.getConfig(), true) để tạo bản sao nếu cần.

Lưu ý: để có hiệu suất tốt nhất, vui lòng tải hình ảnh có cùng hình dạng để tránh việc cấp lại bộ nhớ.

Thông số
ảnh bitmap
Ném
Ngoại lệ Đối số bất hợp pháp nếu bitmap không có trong ARGB_8888

tải khoảng trống công khai (int[] pixel, hình dạng int[])

Tải một mảng int dưới dạng pixel RGB vào TensorImage này, biểu thị các pixel bên trong.

Lưu ý: việc truyền và kẹp số sẽ được áp dụng để chuyển đổi các giá trị thành kiểu dữ liệu của TensorImage này khi gọi getTensorBuffer()getBuffer() .

Thông số
điểm ảnh các pixel RGB đại diện cho hình ảnh
hình dạng hình dạng của hình ảnh phải ở dạng (h, w, 3) hoặc ở dạng (1, h, w, 3)
Ném
Ngoại lệ Đối số bất hợp pháp nếu hình dạng không phải là (h, w, 3) hay (1, h, w, 3)

tải khoảng trống công khai (float[] pixel, hình dạng int[])

Tải một mảng float dưới dạng pixel RGB vào TensorImage này, đại diện cho các pixel bên trong.

Lưu ý: nếu TensorImage có kiểu dữ liệu khác DataType.FLOAT32 , việc truyền và kẹp số sẽ được áp dụng khi gọi getTensorBuffer()getBuffer() .

Thông số
điểm ảnh các pixel RGB đại diện cho hình ảnh
hình dạng hình dạng của hình ảnh phải ở dạng (h, w, 3) hoặc ở dạng (1, h, w, 3)
Ném
Ngoại lệ Đối số bất hợp pháp nếu hình dạng không phải là (h, w, 3) hay (1, h, w, 3)

tải khoảng trống công khai (bộ đệm ByteBuffer , ImageProperties imageProperties)

Tải ByteBuffer chứa các giá trị pixel với ImageProperties cụ thể.

Lưu ý: nếu kiểu dữ liệu của buffer không khớp với kiểu dữ liệu của TensorImage này, việc truyền và kẹp số sẽ được áp dụng khi gọi getTensorBuffer()getBuffer() .

Thông số
đệm
thuộc tính hình ảnh
Ném
Ngoại lệ Đối số bất hợp pháp nếu kích thước bộ đệm nhỏ hơn kích thước hình ảnh được biểu thị bằng chiều cao, chiều rộng và loại không gian màu của hình ảnh trong ImageProperties

tải khoảng trống công khai (bộ đệm TensorBuffer , ImageProperties imageProperties)

Tải TensorBuffer chứa các giá trị pixel với ImageProperties cụ thể.

Hình dạng của TensorBuffer sẽ không được sử dụng để xác định chiều cao và chiều rộng của hình ảnh. Đặt thuộc tính hình ảnh thông qua ImageProperties .

Lưu ý: nếu kiểu dữ liệu của buffer không khớp với kiểu dữ liệu của TensorImage này, việc truyền và kẹp số sẽ được áp dụng khi gọi getTensorBuffer()getBuffer() .

Thông số
đệm
thuộc tính hình ảnh
Ném
Ngoại lệ Đối số bất hợp pháp nếu kích thước bộ đệm nhỏ hơn kích thước hình ảnh được biểu thị bằng chiều cao, chiều rộng và loại không gian màu của hình ảnh trong ImageProperties

tải khoảng trống công khai (Hình ảnh hình ảnh)

Tải một đối tượng Image vào TensorImage này.

Cách sử dụng chính của phương pháp này là tải một đối tượng Image làm đầu vào mô hình cho https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview . TensorImage được hỗ trợ bởi Image không được ImageProcessor hỗ trợ.

* @ném IllegalArgumentException nếu ImageFormat của image không phải là YUV_420_888

Thông số
hình ảnh