ข่าวสารผลิตภัณฑ์
เพิ่มความสว่างให้ฟีดกล้องแบบเรียลไทม์ด้วยการเพิ่มประสิทธิภาพในที่แสงน้อย
ใช้เวลาอ่าน 7 นาที
เมื่อเร็วๆ นี้เราได้พูดถึง วิธีที่ Instagram ช่วยให้ผู้ใช้ถ่ายภาพในสภาวะแสงน้อยได้อย่างน่าทึ่งโดยใช้โหมดกลางคืน ฟีเจอร์นี้เหมาะสำหรับภาพนิ่ง ซึ่งมีเวลาในการรวมค่าแสงหลายค่าเพื่อสร้างภาพนิ่งคุณภาพสูง แต่จะเกิดอะไรขึ้นกับช่วงเวลาที่เกิดขึ้นระหว่างรูปภาพ ผู้ใช้ต้องโต้ตอบกับกล้องมากกว่าแค่ตอนที่กดปุ่มชัตเตอร์ นอกจากนี้ยังใช้ตัวอย่างเพื่อจัดฉากหรือสแกนคิวอาร์โค้ดได้ด้วย
วันนี้เราจะมาเจาะลึกการเพิ่มแสงในสภาวะแสงน้อย (LLB) ซึ่งเป็นฟีเจอร์ที่มีประสิทธิภาพซึ่งออกแบบมาเพื่อเพิ่มความสว่างให้กับสตรีมกล้องแบบเรียลไทม์ การเพิ่มคุณภาพในที่แสงน้อยจะทำงานทันทีในตัวอย่างสดและวิดีโอที่บันทึกไว้ ซึ่งแตกต่างจากโหมดกลางคืนที่ต้องใช้ระยะเวลาการจับภาพแบบหยุดนิ่ง LLB จะปรับปริมาณการเพิ่มความสว่างที่จำเป็นโดยอัตโนมัติตามแสงที่มีอยู่ จึงได้รับการเพิ่มประสิทธิภาพสำหรับทุกสภาพแวดล้อม
การอัปเดตล่าสุดทำให้ LLB ช่วยให้ผู้ใช้ Instagram จัดองค์ประกอบภาพได้อย่างสมบูรณ์แบบ และการใช้โหมดกลางคืนที่มีอยู่จะทำให้ได้ภาพถ่ายในสภาวะแสงน้อยที่มีคุณภาพสูงเช่นเดียวกับที่ผู้ใช้ได้รับมานานกว่า 1 ปี
เหตุผลที่ความสว่างแบบเรียลไทม์มีความสำคัญ
แม้ว่าโหมดกลางคืนจะมีจุดประสงค์เพื่อปรับปรุงคุณภาพของรูปภาพสุดท้าย แต่การเพิ่มประสิทธิภาพแสงน้อยมีไว้เพื่อความสามารถในการใช้งานและการโต้ตอบในสภาพแวดล้อมที่มืด อีกปัจจัยสำคัญที่ควรพิจารณาคือ แม้ว่า LLB และโหมดกลางคืนจะทำงานร่วมกันได้ดีมาก แต่คุณก็ใช้ LLB และโหมดกลางคืนแยกกันได้ และคุณจะเห็นว่าในกรณีการใช้งานบางอย่างเหล่านี้ LLB มีประโยชน์ในตัวของมันเองเมื่อไม่จำเป็นต้องใช้รูปภาพโหมดกลางคืน LLB ช่วยปรับปรุงประสบการณ์ของผู้ใช้ได้อย่างไร
- การจัดเฟรมและการจับภาพที่ดีขึ้น: ในฉากที่มีแสงน้อย ตัวอย่างกล้องมาตรฐานอาจมืดสนิท LLB จะเพิ่มความสว่างให้กับช่องมองภาพ ทำให้ผู้ใช้เห็นสิ่งที่กำลังจัดเฟรมก่อนที่จะกดปุ่มชัตเตอร์ สำหรับประสบการณ์การใช้งานนี้ คุณสามารถใช้โหมดกลางคืนเพื่อให้ได้ผลลัพธ์ภาพถ่ายในสภาวะแสงน้อยที่มีคุณภาพดีที่สุด หรือจะปล่อยให้ LLB แสดงผลลัพธ์ภาพถ่าย "สิ่งที่คุณเห็นคือสิ่งที่คุณได้รับ" แก่ผู้ใช้ก็ได้
- การสแกนที่เชื่อถือได้: คิวอาร์โค้ดมีอยู่ทุกหนทุกแห่ง แต่การสแกนในร้านอาหารที่มืดหรือโรงจอดรถมักจะน่าหงุดหงิด ฟีดกล้องที่สว่างขึ้นอย่างมากจะช่วยให้อัลกอริทึมการสแกนตรวจหาและถอดรหัสคิวอาร์โค้ดได้อย่างน่าเชื่อถือแม้ในสภาพแวดล้อมที่มืดมาก
- การโต้ตอบที่ดียิ่งขึ้น: สำหรับแอปที่เกี่ยวข้องกับการโต้ตอบผ่านวิดีโอสด (เช่น ผู้ช่วย AI หรือวิดีโอคอล) LLB จะเพิ่มปริมาณข้อมูลที่รับรู้ได้ เพื่อให้มั่นใจว่าโมเดลคอมพิวเตอร์วิทัศน์มีข้อมูลเพียงพอที่จะทำงานด้วย
ความแตกต่างใน Instagram
ทีมวิศวกรที่อยู่เบื้องหลังแอป Instagram บน Android ทำงานอย่างหนักอยู่เสมอเพื่อมอบประสบการณ์การใช้งานกล้องที่ล้ำสมัยให้แก่ผู้ใช้ คุณจะเห็นความแตกต่างที่ LLB สร้างขึ้นใน Pixel 10 Pro ได้ในตัวอย่างด้านบน
คุณคงนึกภาพออกได้ไม่ยากว่าการเปลี่ยนแปลงนี้จะส่งผลต่อประสบการณ์ของผู้ใช้อย่างไร หากผู้ใช้มองไม่เห็นสิ่งที่กำลังบันทึก ก็มีโอกาสสูงที่ผู้ใช้จะยกเลิกการบันทึก
เลือกการติดตั้งใช้งาน
การใช้การเพิ่มแสงในสภาวะแสงน้อยเพื่อมอบประสบการณ์การใช้งานที่ดีที่สุดในอุปกรณ์ที่หลากหลายที่สุดทำได้ 2 วิธี ดังนี้
- โหมด AE เพิ่มแสงในสภาวะแสงน้อย: โหมดนี้เป็นโหมดการรับแสงอัตโนมัติที่เลเยอร์ฮาร์ดแวร์ โดยให้คุณภาพและประสิทธิภาพสูงสุดเนื่องจากปรับแต่งไปป์ไลน์ของหน่วยประมวลผลสัญญาณภาพ (ISP) โดยตรง โปรดตรวจสอบสิ่งนี้ก่อนเสมอ
- การเพิ่มประสิทธิภาพในที่แสงน้อยของ Google: หากอุปกรณ์ไม่รองรับโหมด AE คุณสามารถกลับไปใช้โซลูชันที่ใช้ซอฟต์แวร์นี้ซึ่งให้บริการโดยบริการ Google Play ได้ โดยจะใช้การประมวลผลภายหลังกับสตรีมจากกล้องเพื่อเพิ่มความสว่าง เนื่องจากเป็นโซลูชันแบบซอฟต์แวร์ทั้งหมด จึงพร้อมใช้งานในอุปกรณ์ต่างๆ มากขึ้น การติดตั้งใช้งานนี้จึงช่วยให้คุณเข้าถึงอุปกรณ์ต่างๆ ด้วย LLB ได้มากขึ้น
โหมด AE การเพิ่มแสงในสภาวะแสงน้อย (ฮาร์ดแวร์)
กลไก:
โหมดนี้รองรับในอุปกรณ์ที่ใช้ Android 15 ขึ้นไป และต้องให้ OEM ได้ติดตั้งการรองรับใน HAL (ปัจจุบันพร้อมใช้งานในอุปกรณ์ Pixel 10) โดยจะผสานรวมกับหน่วยประมวลผลสัญญาณภาพ (ISP) ของกล้องโดยตรง หากตั้งค่า CaptureRequest.CONTROL_AE_MODE เป็น CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY ระบบกล้องจะเข้าควบคุม
ลักษณะการทำงาน:
HAL/ISP จะวิเคราะห์ฉากและปรับพารามิเตอร์ของเซ็นเซอร์และการประมวลผล ซึ่งมักรวมถึงการเพิ่มเวลาเปิดรับแสง เพื่อให้ภาพสว่างขึ้นซึ่งจะทำให้ได้เฟรมที่มีอัตราส่วนสัญญาณต่อสัญญาณรบกวน (SNR) ที่ดีขึ้นอย่างมาก เนื่องจากเวลาเปิดรับแสงที่นานขึ้นช่วยให้เซ็นเซอร์จับข้อมูลแสงได้มากขึ้น แทนที่จะเพิ่มเกนเซ็นเซอร์ดิจิทัล (ISO)
ข้อดี:
คุณภาพของรูปภาพและประสิทธิภาพการใช้พลังงานอาจดีขึ้นเนื่องจากใช้เส้นทางฮาร์ดแวร์เฉพาะ
ข้อเสีย:
อาจส่งผลให้อัตราเฟรมต่ำลงในสภาพแวดล้อมที่มืดมาก เนื่องจากเซ็นเซอร์ต้องใช้เวลามากขึ้นในการจับภาพแสง อัตราเฟรมอาจลดลงเหลือเพียง 10 FPS ในสภาพแสงน้อยมาก
การเพิ่มแสงในสภาวะแสงน้อยของ Google (ซอฟต์แวร์ผ่านบริการ Google Play)
กลไก:
โซลูชันนี้ซึ่งเผยแพร่เป็นโมดูลที่ไม่บังคับผ่านบริการ Google Play จะใช้การประมวลผลภายหลังกับสตรีมจากกล้อง โดยใช้เทคโนโลยีการปรับปรุงรูปภาพแบบเรียลไทม์ที่ซับซ้อนที่เรียกว่า HDRNet
Google HDRNet:
โมเดลการเรียนรู้เชิงลึกนี้จะวิเคราะห์รูปภาพที่ความละเอียดต่ำกว่าเพื่อคาดการณ์ชุดพารามิเตอร์ขนาดกะทัดรัด (กริดแบบทวิภาค) จากนั้นตารางกริดนี้จะช่วยให้การปรับปรุงรูปภาพแบบเต็มความละเอียดบน GPU มีประสิทธิภาพและแตกต่างกันตามพื้นที่ โมเดลได้รับการฝึกให้เพิ่มความสว่างและปรับปรุงคุณภาพของรูปภาพในสภาพแสงน้อย โดยเน้นที่การมองเห็นใบหน้า
การจัดระเบียบกระบวนการ:
โมเดล HDRNet และตรรกะที่มาพร้อมกันจะได้รับการจัดระเบียบโดยโปรเซสเซอร์การเพิ่มแสงในสภาวะแสงน้อย ซึ่งรวมถึงข้อมูลต่อไปนี้
-
การวิเคราะห์ฉาก:
เครื่องคำนวณที่กำหนดเองซึ่งประมาณความสว่างจริงของฉากโดยใช้ข้อมูลเมตาของกล้อง (ความไวของเซ็นเซอร์ เวลาเปิดรับแสง ฯลฯ) และเนื้อหาของรูปภาพ การวิเคราะห์นี้จะกำหนดระดับการเพิ่ม -
การประมวลผล HDRNet:
ใช้โมเดล HDRNet เพื่อเพิ่มความสว่างให้กับเฟรม โมเดลที่ใช้ได้รับการปรับแต่งสำหรับฉากที่มีแสงน้อยและเพิ่มประสิทธิภาพเพื่อประสิทธิภาพแบบเรียลไทม์ -
การผสม:
ระบบจะผสมเฟรมต้นฉบับและเฟรมที่ประมวลผลด้วย HDRNet เครื่องคำนวณความสว่างของฉากจะควบคุมปริมาณการผสมผสานแบบไดนามิก เพื่อให้มั่นใจว่าการเปลี่ยนผ่านระหว่างสถานะที่เพิ่มและไม่ได้เพิ่มจะราบรื่น
ข้อดี:
ใช้ได้กับอุปกรณ์หลากหลายรุ่นมากขึ้น (ปัจจุบันรองรับ Samsung S22 Ultra, S23 Ultra, S24 Ultra, S25 Ultra และ Pixel 6 ถึง Pixel 9) โดยไม่ต้องรองรับ HAL ที่เฉพาะเจาะจง รักษาอัตราเฟรมของกล้องไว้เนื่องจากเป็นเอฟเฟกต์หลังการประมวลผล
ข้อแลกเปลี่ยน:
ในฐานะวิธีการประมวลผลภายหลัง คุณภาพจะถูกจำกัดตามข้อมูลที่มีอยู่ในเฟรมที่เซ็นเซอร์ส่ง และไม่สามารถกู้คืนรายละเอียดที่สูญหายเนื่องจากความมืดมิดในระดับเซ็นเซอร์
การเพิ่มประสิทธิภาพในที่แสงน้อยมีทั้งฮาร์ดแวร์และซอฟต์แวร์ จึงเป็นโซลูชันที่รองรับการปรับขนาดได้เพื่อเพิ่มประสิทธิภาพของกล้องในที่แสงน้อยทั่วทั้งระบบนิเวศของ Android นักพัฒนาแอปควรให้ความสำคัญกับโหมด AE หากมี และใช้การเพิ่มแสงน้อยของ Google เป็นตัวเลือกสำรองที่เชื่อถือได้
การติดตั้งใช้งานการเพิ่มแสงในสภาวะแสงน้อยในแอป
ตอนนี้มาดูวิธีใช้ทั้ง 2 ข้อเสนอของ LLB กัน คุณสามารถใช้ขั้นตอนต่อไปนี้ได้ไม่ว่าจะใช้ CameraX หรือ Camera2 ในแอปก็ตาม เราขอแนะนำให้ทำทั้งขั้นตอนที่ 1 และขั้นตอนที่ 2 เพื่อให้ได้ผลลัพธ์ที่ดีที่สุด
ขั้นตอนที่ 1: โหมด AE การเพิ่มแสงในสภาวะแสงน้อย
โหมด LLB AE พร้อมใช้งานในอุปกรณ์บางรุ่นที่ใช้ Android 15 ขึ้นไป โดยจะทำงานเป็นโหมดการชดเชยแสง (AE) ที่เฉพาะเจาะจง
1. ตรวจสอบความพร้อมให้บริการ
ก่อนอื่น ให้ตรวจสอบว่าอุปกรณ์กล้องรองรับโหมด LLB AE หรือไม่
val cameraInfo = cameraProvider.getCameraInfo(cameraSelector) val isLlbSupported = cameraInfo.isLowLightBoostSupported
2. เปิดใช้โหมด
หากรองรับ คุณจะเปิดใช้โหมด AE ของ LLB ได้โดยใช้ออบเจ็กต์ CameraControl ของ CameraX
// After setting up your camera, use the CameraInfo object to enable LLB AE Mode.
camera = cameraProvider.bindToLifecycle(...)
if (isLlbSupported) {
try {
// The .await() extension suspends the coroutine until the
// ListenableFuture completes. If the operation fails, it throws
// an exception which we catch below.
camera?.cameraControl.enableLowLightBoostAsync(true).await()
} catch (e: IllegalStateException) {
Log.e(TAG, "Failed to enable low light boost: not available on this device or with the current camera configuration", e)
} catch (e: CameraControl.OperationCanceledException) {
Log.e(TAG, "Failed to enable low light boost: camera is closed or value has changed", e)
}
}
3. ตรวจสอบสถานะ
การที่คุณขอใช้โหมดนี้ไม่ได้หมายความว่าระบบจะ "เพิ่ม" วิดีโอในขณะนั้น ระบบจะเปิดใช้งานการเพิ่มเฉพาะเมื่อฉากมืดจริงๆ เท่านั้น คุณตั้งค่า Observer เพื่ออัปเดต UI (เช่น แสดงไอคอนดวงจันทร์) หรือแปลงเป็น Flow โดยใช้ฟังก์ชันส่วนขยาย asFlow() ได้
if (isLlbSupported) {
camera?.cameraInfo.lowLightBoostState.asFlow().collectLatest { state ->
// Update UI accordingly
updateMoonIcon(state == LowLightBoostState.ACTIVE)
}
}
อ่านคำแนะนำฉบับเต็มเกี่ยวกับ โหมด AE เพิ่มแสงน้อยได้ที่นี่
ขั้นตอนที่ 2: การเพิ่มประสิทธิภาพในที่แสงน้อยของ Google
สำหรับอุปกรณ์ที่ไม่รองรับโหมด AE ของฮาร์ดแวร์ Google Low Light Boost จะเป็นตัวเลือกสำรองที่มีประสิทธิภาพ โดยจะใช้ LowLightBoostSession เพื่อสกัดกั้นและเพิ่มความสว่างให้กับสตรีม
1. เพิ่มการอ้างอิง
ฟีเจอร์นี้ให้บริการผ่านบริการ Google Play
implementation("com.google.android.gms:play-services-camera-low-light-boost:16.0.1-beta06")
// Add coroutines-play-services to simplify Task APIs
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.10.2")
2. เริ่มต้นไคลเอ็นต์
ก่อนเริ่มกล้อง ให้ใช้ LowLightBoostClient เพื่อให้แน่ใจว่าได้ติดตั้งโมดูลแล้วและอุปกรณ์รองรับ
val llbClient = LowLightBoost.getClient(context)
// Check support and install if necessary
val isSupported = llbClient.isCameraSupported(cameraId).await()
val isInstalled = llbClient.isModuleInstalled().await()
if (isSupported && !isInstalled) {
// Trigger installation
llbClient.installModule(installCallback).await()
}
3. สร้างเซสชัน LLB
Google LLB จะประมวลผลแต่ละเฟรม ดังนั้นคุณต้องส่ง Surface ของจอแสดงผลไปยัง LowLightBoostSession และ LowLightBoostSession จะส่ง Surface ที่มีการปรับความสว่างกลับมาให้ สำหรับแอป Camera2 คุณสามารถเพิ่ม Surface ที่ได้ด้วย CaptureRequest.Builder.addTarget() สำหรับ CameraX ไปป์ไลน์การประมวลผลนี้จะสอดคล้องกับคลาส CameraEffect มากที่สุด ซึ่งคุณสามารถใช้เอฟเฟกต์กับ SurfaceProcessor และส่งกลับไปยังตัวอย่างด้วย SurfaceProvider ดังที่เห็นในโค้ดนี้
// With a SurfaceOutput from SurfaceProcessor.onSurfaceOutput() and a
// SurfaceRequest from Preview.SurfaceProvider.onSurfaceRequested(),
// create a LLB Session.
suspend fun createLlbSession(surfaceRequest: SurfaceRequest, outputSurfaceForLlb: Surface) {
// 1. Create the LLB Session configuration
val options = LowLightBoostOptions(
outputSurfaceForLlb,
cameraId,
surfaceRequest.resolution.width,
surfaceRequest.resolution.height,
true // Start enabled
)
// 2. Create the session.
val llbSession = llbClient.createSession(options, callback).await()
// 3. Get the surface to use.
val llbInputSurface = llbSession.getCameraSurface()
// 4. Provide the surface to the CameraX Preview UseCase.
surfaceRequest.provideSurface(llbInputSurface, executor, resultListener)
// 5. Set the scene detector callback to monitor how much boost is being applied.
val onSceneBrightnessChanged = object : SceneDetectorCallback {
override fun onSceneBrightnessChanged(
session: LowLightBoostSession,
boostStrength: Float
) {
// Monitor the boostStrength from 0 (no boosting) to 1 (maximum boosting)
}
}
llbSession.setSceneDetectorCallback(onSceneBrightnessChanged, null)
}
4. ส่งข้อมูลเมตา
อัลกอริทึมต้องวิเคราะห์สถานะการเปิดรับแสงอัตโนมัติของกล้องจึงจะทำงานได้ คุณต้องส่งผลการจับภาพกลับไปยังเซสชัน LLB ใน CameraX คุณทำได้โดยขยาย Preview.Builder ด้วย Camera2Interop.Extender.setSessionCaptureCallback()
Camera2Interop.Extender(previewBuilder).setSessionCaptureCallback(
object : CameraCaptureSession.CaptureCallback() {
override fun onCaptureCompleted(
session: CameraCaptureSession,
request: CaptureRequest,
result: TotalCaptureResult
) {
super.onCaptureCompleted(session, request, result)
llbSession?.processCaptureResult(result)
}
}
)
ดูขั้นตอนการติดตั้งใช้งานโดยละเอียดสำหรับไคลเอ็นต์และเซสชันได้ใน คู่มือการเพิ่มประสิทธิภาพในสภาวะแสงน้อยของ Google
ขั้นตอนถัดไป
การใช้ตัวเลือกทั้ง 2 นี้จะช่วยให้มั่นใจได้ว่าผู้ใช้จะมองเห็นได้อย่างชัดเจน สแกนได้อย่างน่าเชื่อถือ และโต้ตอบได้อย่างมีประสิทธิภาพ ไม่ว่าสภาพแสงจะเป็นอย่างไร
หากต้องการดูฟีเจอร์เหล่านี้ในการทำงานภายในฐานของโค้ดที่สมบูรณ์และพร้อมใช้งานจริง โปรดดู แอปกล้อง Jetpack ใน GitHub โดยจะใช้ทั้งโหมด LLB AE และ Google LLB เพื่อให้คุณใช้อ้างอิงในการผสานรวมของคุณเอง
อ่านต่อ
-
ข่าวสารผลิตภัณฑ์
Android Studio Panda 4 พร้อมให้คุณใช้ในเวอร์ชันที่ใช้งานจริงแล้ว การเปิดตัวครั้งนี้มาพร้อมโหมดการวางแผน การคาดการณ์การแก้ไขครั้งถัดไป และอื่นๆ ซึ่งจะช่วยให้การสร้างแอป Android คุณภาพสูงง่ายกว่าที่เคย
Matt Dyor • ใช้เวลาอ่าน 5 นาที
-
ข่าวสารผลิตภัณฑ์
หากคุณเป็นนักพัฒนาแอป Android ที่ต้องการใช้ฟีเจอร์ AI ที่เป็นนวัตกรรมใหม่ในแอป เราได้เปิดตัวการอัปเดตใหม่ที่มีประสิทธิภาพไปเมื่อเร็วๆ นี้
Thomas Ezan • ใช้เวลาอ่าน 3 นาที
-
ข่าวสารผลิตภัณฑ์
Android 17 ได้เปิดตัวเบต้า 4 ซึ่งเป็นเบต้าสุดท้ายที่กำหนดไว้ในรอบการเผยแพร่นี้ ซึ่งเป็นเป้าหมายสำคัญสำหรับความเข้ากันได้ของแอปและความเสถียรของแพลตฟอร์ม
Daniel Galpin • ใช้เวลาอ่าน 4 นาที
รับข่าวสาร
รับข้อมูลเชิงลึกด้านการพัฒนาแอป Android ล่าสุดส่งตรงถึงกล่องจดหมายของคุณทุกสัปดาห์