ข่าวสารผลิตภัณฑ์
เพิ่มความสว่างให้กับฟีดกล้องแบบเรียลไทม์ด้วยการเพิ่มแสงในสภาวะแสงน้อย
ใช้เวลาอ่าน 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. เปิดใช้โหมด
หากรองรับ คุณสามารถเปิดใช้ LLB โหมด AE ได้โดยใช้ออบเจ็กต์ 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)
}
}
อ่านคู่มือฉบับเต็มเกี่ยวกับ Low Light Boost โหมด AE ได้ที่นี่
ขั้นตอนที่ 2: การเพิ่มแสงในสภาวะแสงน้อยของ Google
สำหรับอุปกรณ์ที่ไม่รองรับโหมด AE ของฮาร์ดแวร์ การเพิ่มแสงในสภาวะแสงน้อยของ Google จะทำหน้าที่เป็นตัวเลือกสำรองที่มีประสิทธิภาพ โดยใช้ 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 จะประมวลผลแต่ละเฟรม ดังนั้นคุณต้องส่ง Surface ของจอแสดงผลไปยัง 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 ซึ่งจะให้ข้อมูลอ้างอิงสำหรับการผสานรวมของคุณเอง
อ่านต่อ
-
ข่าวสารผลิตภัณฑ์
Jetpack Telecom v1.1.0 สร้างขึ้นจากรากฐานนี้และนำการมองเห็นและความสะดวกสบายระดับเนทีฟมาสู่แอป VoIP ของบุคคลที่สาม
Nataraj K R • ใช้เวลาอ่าน 2 นาที
-
ข่าวสารผลิตภัณฑ์
Android ซึ่งประกาศในวันนี้ระหว่าง The Android Show กำลังเปลี่ยนจากระบบปฏิบัติการเป็นระบบอัจฉริยะ ซึ่งจะสร้างโอกาสในการมีส่วนร่วมกับแอปของคุณมากขึ้น
Matthew McCullough • ใช้เวลาอ่าน 4 นาที
-
ข่าวสารผลิตภัณฑ์
ระบบนิเวศของอุปกรณ์เคลื่อนที่มีการพัฒนาอยู่เสมอ ซึ่งนำมาซึ่งโอกาสใหม่ๆ และภัยคุกคามใหม่ๆ Android และ Google Play ยังคงมุ่งมั่นที่จะทำให้ผู้ใช้หลายพันล้านคนสามารถเพลิดเพลินกับแอปได้อย่างมั่นใจ และนักพัฒนาแอปสามารถสร้างสรรค์นวัตกรรมได้อย่างเต็มที่
Vijaya Kaza • ใช้เวลาอ่าน 3 นาที
รับข่าวสาร
รับข้อมูลเชิงลึกด้านการพัฒนา Android ล่าสุดส่งตรงถึงกล่องจดหมายของคุณ ทุกสัปดาห์