TensorImage

TensorImage คลาสสาธารณะ

TensorImage เป็นคลาส wrapper สำหรับวัตถุ Image เมื่อใช้ยูทิลิตี้การประมวลผลรูปภาพในไลบรารี TFLite.support เป็นเรื่องปกติที่จะแปลงออบเจ็กต์รูปภาพในประเภทตัวแปรเป็น TensorImage ในตอนแรก

ปัจจุบันรองรับเฉพาะภาพ RGB และช่อง A จะถูกละเว้นเสมอ

รายละเอียดการจัดเก็บข้อมูล: ออบเจ็กต์ TensorImage อาจมีแหล่งที่มาของความจริงได้ 2 แหล่ง: Bitmap หรือ TensorBuffer TensorImage จะรักษาสถานะและแปลงสถานะหนึ่งไปเป็นอีกสถานะหนึ่งเมื่อจำเป็นเท่านั้น กรณีการใช้งานทั่วไปของ TensorImage คือการโหลดภาพ Bitmap ก่อน จากนั้นจึงประมวลผลโดยใช้ ImageProcessor และสุดท้ายรับ ByteBuffer พื้นฐานของ TensorBuffer และป้อนลงในล่าม TFLite

สิ่งสำคัญ: เพื่อให้ได้ประสิทธิภาพที่ดีที่สุด TensorImage จะหลีกเลี่ยงการคัดลอกข้อมูลทุกครั้งที่เป็นไปได้ ดังนั้นจึงไม่ได้เป็นเจ้าของข้อมูล ผู้เรียกไม่ควรแก้ไขวัตถุข้อมูลที่ถูกส่งผ่านไปยัง load(Bitmap) หรือ load(TensorBuffer, ColorSpaceType)

สิ่งสำคัญ: วิธีการทั้งหมดไม่ได้รับการพิสูจน์ว่าปลอดภัยสำหรับเธรด

ดูสิ่งนี้ด้วย

คอนสตรัคชั่นสาธารณะ

เทนเซอร์อิมเมจ ()
เริ่มต้นวัตถุ TensorImage
TensorImage ( ประเภทข้อมูล ประเภทข้อมูล)
เริ่มต้นวัตถุ TensorImage ด้วยประเภทข้อมูลที่ระบุ

วิธีการสาธารณะ

TensorImage แบบคงที่
createFrom ( TensorImage src, DataType dataType)
สร้างสำเนาเชิงลึกของ TensorImage ที่กำหนดพร้อมประเภทข้อมูลที่ต้องการ
TensorImage แบบคงที่
fromBitmap (บิตแมป บิตแมป)
เริ่มต้นวัตถุ TensorImage ของ DataType.UINT8 ด้วย Bitmap
บิตแมป
รับบิตแมป ()
ส่งคืนการแสดง Bitmap ของ TensorImage นี้
ByteBuffer
รับบัฟเฟอร์ ()
ส่งคืนการแสดง ByteBuffer ของ TensorImage นี้พร้อมกับประเภทข้อมูลที่คาดหวัง
ประเภทสีสเปซ
getColorSpaceType ()
รับประเภทพื้นที่สีของ TensorImage นี้
ประเภทข้อมูล
รับ DataType ()
รับประเภทข้อมูลของ TensorImage นี้
ภายใน
รับความสูง ()
รับความสูงของภาพ
ภาพ
getMediaImage ()
ส่งคืนการแสดง Image ของ TensorImage นี้
TensorBuffer
รับเทนเซอร์บัฟเฟอร์ ()
ส่งคืนการแสดง TensorBuffer ของ TensorImage นี้พร้อมกับประเภทข้อมูลที่คาดหวัง
ภายใน
รับความกว้าง ()
รับความกว้างของภาพ
เป็นโมฆะ
โหลด (บัฟเฟอร์ TensorBuffer , ColorSpaceType colorSpaceType)
โหลด TensorBuffer ที่มีค่าพิกเซลด้วย ColorSpaceType เฉพาะ
เป็นโมฆะ
โหลด (บิตแมป บิตแมป)
โหลดวัตถุรูปภาพ Bitmap ลงใน TensorImage นี้
เป็นโมฆะ
โหลด (int[] พิกเซล, int[] รูปร่าง)
โหลดอาร์เรย์ int เป็นพิกเซล RGB ลงใน TensorImage นี้ ซึ่งแสดงถึงพิกเซลภายใน
เป็นโมฆะ
โหลด (พิกเซลลอย[] รูปร่าง int[])
โหลดอาร์เรย์ float เป็นพิกเซล RGB ลงใน TensorImage นี้ ซึ่งแสดงถึงพิกเซลภายใน
เป็นโมฆะ
โหลด (บัฟเฟอร์ ByteBuffer , ImageProperties imageProperties)
โหลด ByteBuffer ที่มีค่าพิกเซลด้วย ImageProperties เฉพาะ
เป็นโมฆะ
โหลด (บัฟเฟอร์ TensorBuffer , ImageProperties imageProperties)
โหลด TensorBuffer ที่มีค่าพิกเซลด้วย ImageProperties เฉพาะ
เป็นโมฆะ
โหลด (รูปภาพรูปภาพ)
โหลดวัตถุ Image ลงใน TensorImage นี้

วิธีการสืบทอด

คอนสตรัคชั่นสาธารณะ

TensorImage สาธารณะ ()

เริ่มต้นวัตถุ TensorImage

หมายเหตุ: ประเภทข้อมูลของ TensorImage นี้คือ DataType.UINT8 ใช้ TensorImage(DataType) หากต้องการข้อมูลประเภทอื่น

TensorImage สาธารณะ ( DataType dataType)

เริ่มต้นวัตถุ TensorImage ด้วยประเภทข้อมูลที่ระบุ

เมื่อได้รับ TensorBuffer หรือ ByteBuffer จาก TensorImage นี้ เช่น การใช้ getTensorBuffer() และ getBuffer() ค่าข้อมูลจะถูกแปลงเป็นประเภทข้อมูลที่ระบุ

หมายเหตุ: รูปร่างของ TensorImage ไม่ได้รับการแก้ไข สามารถปรับให้เข้ากับรูปร่างของรูปภาพที่กำลังโหลดลงใน TensorImage นี้

พารามิเตอร์
ประเภทข้อมูล ประเภทข้อมูลที่คาดหวังของผลลัพธ์ TensorBuffer ประเภทจะได้รับการแก้ไขเสมอตลอดอายุการใช้งานของ TensorImage หากต้องการแปลงประเภทข้อมูล ให้ใช้ createFrom(TensorImage, DataType) เพื่อสร้างสำเนาและแปลงประเภทข้อมูลพร้อมกัน

วิธีการสาธารณะ

TensorImage สาธารณะคงที่ createFrom ( TensorImage src, DataType dataType)

สร้างสำเนาเชิงลึกของ TensorImage ที่กำหนดพร้อมประเภทข้อมูลที่ต้องการ

พารามิเตอร์
src TensorImage ที่จะคัดลอกมา
ประเภทข้อมูล ประเภทข้อมูลที่คาดหวังของ TensorImage ที่สร้างขึ้นใหม่
การส่งคืน
  • TensorImage ซึ่งข้อมูลถูกคัดลอกจาก src และประเภทข้อมูลคือ dataType

TensorImage สาธารณะคงที่ จาก Bitmap (บิตแมปบิตแมป)

เริ่มต้นวัตถุ 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 นี้

การส่งคืน
  • ชนิดข้อมูล ปัจจุบันรองรับเฉพาะ DataType.UINT8 และ DataType.FLOAT32 เท่านั้น

สาธารณะ int getHeight ()

รับความสูงของภาพ

ขว้าง
IllegalStateException หาก TensorImage ไม่เคยโหลดข้อมูล
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย หากข้อมูลพื้นฐานเสียหาย

รูปภาพสาธารณะ 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 ไม่เคยโหลดข้อมูล

สาธารณะ int getWidth ()

รับความกว้างของภาพ

ขว้าง
IllegalStateException หาก TensorImage ไม่เคยโหลดข้อมูล
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย หากข้อมูลพื้นฐานเสียหาย

โหลด โมฆะสาธารณะ (บัฟเฟอร์ 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) สำหรับภาพ GRAYSCALE
colorSpaceType
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย หากรูปร่างของบัฟเฟอร์ไม่ตรงกับประเภทปริภูมิสี หรือหากไม่รองรับประเภทปริภูมิสี

โหลด โมฆะสาธารณะ (บิตแมปบิตแมป)

โหลดวัตถุรูปภาพ Bitmap ลงใน TensorImage นี้

หมายเหตุ: หาก TensorImage มีประเภทข้อมูลอื่นที่ไม่ใช่ DataType.UINT8 การหล่อและการจับตัวเลขจะถูกใช้เมื่อเรียก getTensorBuffer() และ getBuffer() โดยที่ Bitmap จะถูกแปลงเป็น TensorBuffer

สิ่งสำคัญ: เมื่อโหลดบิตแมป อย่าแก้ไขบิตแมปจากฝั่งผู้เรียกอีกต่อไป วัตถุ TensorImage จะขึ้นอยู่กับบิตแมป มันอาจจะแก้ไขบิตแมปเช่นกัน ในวิธีนี้ เราทำแนวทางการคัดลอกเป็นศูนย์สำหรับบิตแมปนั้น โดยเพียงแค่เก็บการอ้างอิงไว้ ใช้ bitmap.copy(bitmap.getConfig(), true) เพื่อสร้างสำเนาหากจำเป็น

หมายเหตุ: เพื่อให้ได้ประสิทธิภาพที่ดีที่สุด โปรดโหลดรูปภาพในรูปทรงเดียวกันเพื่อหลีกเลี่ยงการจัดสรรหน่วยความจำใหม่

พารามิเตอร์
บิตแมป
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย หาก bitmap ไม่ได้อยู่ใน ARGB_8888

โหลด โมฆะสาธารณะ (int[] พิกเซล รูปร่าง int[])

โหลดอาร์เรย์ int เป็นพิกเซล RGB ลงใน TensorImage นี้ ซึ่งแสดงถึงพิกเซลภายใน

หมายเหตุ: การหล่อแบบตัวเลขและการหนีบจะถูกใช้เพื่อแปลงค่าให้เป็นประเภทข้อมูลของ TensorImage นี้เมื่อเรียกใช้ getTensorBuffer() และ getBuffer()

พารามิเตอร์
พิกเซล พิกเซล RGB ที่แสดงภาพ
รูปร่าง รูปทรงของภาพควรเป็นแบบ (h, w, 3) หรือแบบ (1, h, w, 3)
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย ถ้ารูปร่างไม่ใช่ทั้ง (h, w, 3) หรือ (1, h, w, 3)

โหลด โมฆะสาธารณะ (พิกเซลลอย [] รูปร่าง int [])

โหลดอาร์เรย์ float เป็นพิกเซล RGB ลงใน TensorImage นี้ ซึ่งแสดงถึงพิกเซลภายใน

หมายเหตุ: หาก TensorImage มีประเภทข้อมูลอื่นที่ไม่ใช่ DataType.FLOAT32 การหล่อแบบตัวเลขและการหนีบจะถูกนำมาใช้เมื่อเรียก getTensorBuffer() และ getBuffer()

พารามิเตอร์
พิกเซล พิกเซล RGB ที่แสดงภาพ
รูปร่าง รูปทรงของภาพควรเป็นแบบ (h, w, 3) หรือแบบ (1, h, w, 3)
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย ถ้ารูปร่างไม่ใช่ทั้ง (h, w, 3) หรือ (1, h, w, 3)

โหลด โมฆะสาธารณะ (บัฟเฟอร์ ByteBuffer , ImageProperties imageProperties)

โหลด ByteBuffer ที่มีค่าพิกเซลด้วย ImageProperties เฉพาะ

หมายเหตุ: หากประเภทข้อมูลของ buffer ไม่ตรงกับประเภทข้อมูลของ TensorImage นี้ ระบบจะใช้การหล่อและการหนีบตัวเลขเมื่อเรียก getTensorBuffer() และ getBuffer()

พารามิเตอร์
กันชน
คุณสมบัติของรูปภาพ
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย หากขนาดบัฟเฟอร์น้อยกว่าขนาดรูปภาพที่ระบุโดยความสูง ความกว้าง และประเภทพื้นที่สีใน ImageProperties

โหลด โมฆะสาธารณะ (บัฟเฟอร์ TensorBuffer , ImageProperties imageProperties)

โหลด TensorBuffer ที่มีค่าพิกเซลด้วย ImageProperties เฉพาะ

รูปร่างของ TensorBuffer จะไม่ถูกนำมาใช้เพื่อกำหนดความสูงและความกว้างของรูปภาพ ตั้งค่าคุณสมบัติรูปภาพผ่าน ImageProperties

หมายเหตุ: หากประเภทข้อมูลของ buffer ไม่ตรงกับประเภทข้อมูลของ TensorImage นี้ ระบบจะใช้การหล่อและการหนีบตัวเลขเมื่อเรียก getTensorBuffer() และ getBuffer()

พารามิเตอร์
กันชน
คุณสมบัติของรูปภาพ
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย หากขนาดบัฟเฟอร์น้อยกว่าขนาดรูปภาพที่ระบุโดยความสูง ความกว้าง และประเภทพื้นที่สีใน ImageProperties

โหลด โมฆะสาธารณะ (รูปภาพรูปภาพ)

โหลดวัตถุ Image ลงใน TensorImage นี้

การใช้งานหลักของวิธีนี้คือการโหลดวัตถุ Image เป็นอินพุตโมเดลใน https://www.tensorflow.org/lite/inference_with_metadata/task_library/overview ImageProcessor ไม่รองรับ TensorImage ที่สนับสนุนโดย Image

* @throws IllegalArgumentException หาก ImageFormat ของ image ไม่ใช่ YUV_420_888

พารามิเตอร์
ภาพ