Tin tức về sản phẩm
Tăng cường độ sáng cho nguồn cấp dữ liệu camera theo thời gian thực bằng tính năng Tăng cường ánh sáng yếu
Đọc trong 7 phút
Gần đây, chúng tôi đã chia sẻ cách Instagram giúp người dùng chụp ảnh tuyệt đẹp trong điều kiện ánh sáng yếu bằng Chế độ ban đêm. Tính năng này rất phù hợp với ảnh tĩnh, nơi bạn có thời gian kết hợp nhiều độ phơi sáng để tạo ra một bức ảnh tĩnh chất lượng cao. Nhưng còn những khoảnh khắc diễn ra giữa các bức ảnh thì sao? Người dùng cần tương tác với máy ảnh nhiều hơn chỉ là khoảnh khắc nhấn nút chụp. Họ cũng sử dụng bản xem trước để tạo cảnh hoặc quét mã QR.
Hôm nay, chúng ta sẽ tìm hiểu về Tính năng Tăng cường ánh sáng yếu (LLB), một tính năng mạnh mẽ được thiết kế để làm sáng luồng camera theo thời gian thực. Không giống như Chế độ ban đêm (yêu cầu thời gian chụp ảnh tĩnh), tính năng Tăng cường ánh sáng yếu hoạt động tức thì trên bản xem trước trực tiếp và bản ghi video. LLB tự động điều chỉnh mức độ làm sáng cần thiết dựa trên ánh sáng có sẵn, vì vậy, tính năng này được tối ưu hoá cho mọi môi trường.
Trong một bản cập nhật gần đây, LLB cho phép người dùng Instagram sắp xếp bố cục hoàn hảo, sau đó, chế độ Ban đêm hiện có sẽ cho ra những bức ảnh chất lượng cao trong điều kiện ánh sáng yếu mà người dùng đã thưởng thức trong hơn một năm.
Tại sao độ sáng theo thời gian thực lại quan trọng
Mặc dù Chế độ ban đêm hướng đến việc cải thiện chất lượng hình ảnh cuối cùng, nhưng tính năng Tăng cường ánh sáng yếu được thiết kế để cải thiện khả năng sử dụng và tương tác trong môi trường tối. Một yếu tố quan trọng khác cần cân nhắc là mặc dù hoạt động rất hiệu quả cùng nhau, nhưng bạn có thể sử dụng LLB và Chế độ ban đêm một cách độc lập. Trong một số trường hợp sử dụng, LLB có giá trị riêng khi không cần ảnh chụp ở Chế độ ban đêm. Sau đây là cách LLB cải thiện trải nghiệm người dùng:
- Bố cục và ảnh chụp đẹp hơn: Trong những cảnh thiếu sáng, bản xem trước của camera tiêu chuẩn có thể tối đen. LLB làm sáng kính ngắm, cho phép người dùng thực sự nhìn thấy những gì họ đang lấy khung hình trước khi nhấn nút chụp. Đối với trải nghiệm này, bạn có thể sử dụng Chế độ ban đêm để có kết quả ảnh chất lượng cao nhất trong điều kiện ánh sáng yếu, hoặc bạn có thể cho phép LLB mang đến cho người dùng kết quả ảnh "thấy sao chụp vậy".
- Quét đáng tin cậy: Mã QR xuất hiện ở khắp mọi nơi, nhưng việc quét mã QR trong nhà hàng tối tăm hoặc gara đỗ xe thường gây khó chịu. Với nguồn cấp dữ liệu từ camera sáng hơn đáng kể, các thuật toán quét có thể phát hiện và giải mã mã QR một cách đáng tin cậy ngay cả trong môi trường rất mờ.
- Tăng cường tương tác: Đối với các ứng dụng liên quan đến hoạt động tương tác qua video trực tiếp (chẳng hạn như trợ lý AI hoặc cuộc gọi video), LLB sẽ tăng lượng thông tin có thể nhận biết, đảm bảo các mô hình thị giác máy tính có đủ dữ liệu để hoạt động
Điểm khác biệt trên Instagram
Nhóm kỹ thuật phụ trách ứng dụng Instagram cho Android luôn nỗ lực hết mình để mang đến trải nghiệm camera hiện đại cho người dùng. Trong ví dụ trên, bạn có thể thấy sự khác biệt mà LLB mang lại trên điện thoại Pixel 10 Pro.
Bạn có thể dễ dàng hình dung được sự khác biệt mà điều này mang lại cho trải nghiệm người dùng. Nếu không thấy được những gì mình đang ghi lại, thì người dùng có nhiều khả năng sẽ bỏ ngang quá trình ghi hình.
Chọn cách triển khai
Có 2 cách để triển khai tính năng Tăng cường ánh sáng yếu nhằm mang lại trải nghiệm tốt nhất trên nhiều loại thiết bị:
- Chế độ AE tăng cường ánh sáng yếu: Đây là chế độ phơi sáng tự động ở lớp phần cứng. Nền tảng này mang đến chất lượng và hiệu suất cao nhất vì nó tinh chỉnh trực tiếp quy trình bộ xử lý tín hiệu hình ảnh (ISP). Luôn kiểm tra điều này trước tiên.
- Tính năng Tăng cường ánh sáng yếu của Google: Nếu thiết bị không hỗ trợ chế độ AE, bạn có thể chuyển về giải pháp dựa trên phần mềm này do Dịch vụ Google Play cung cấp. Tính năng này áp dụng quy trình hậu xử lý cho luồng video của camera để làm sáng luồng đó. Là một giải pháp hoàn toàn bằng phần mềm, LLB có trên nhiều thiết bị hơn. Vì vậy, việc triển khai này giúp bạn tiếp cận nhiều thiết bị hơn bằng LLB.
Chế độ AE tăng cường ánh sáng yếu (Phần cứng)
Cơ chế:
Chế độ này được hỗ trợ trên các thiết bị chạy Android 15 trở lên và yêu cầu OEM phải triển khai chế độ hỗ trợ này trong HAL (hiện có trên các thiết bị Pixel 10). Nó tích hợp trực tiếp với Bộ xử lý tín hiệu hình ảnh (ISP) của camera. Nếu bạn đặt CaptureRequest.CONTROL_AE_MODE thành CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY, hệ thống camera sẽ kiểm soát.
Hành vi:
HAL/ISP phân tích cảnh và điều chỉnh các thông số cảm biến và xử lý, thường bao gồm cả việc tăng thời gian phơi sáng để làm sáng hình ảnh.Điều này có thể tạo ra những khung hình có tỷ lệ tín hiệu trên nhiễu (SNR) được cải thiện đáng kể vì thời gian phơi sáng kéo dài (thay vì tăng độ lợi của cảm biến kỹ thuật số (ISO)) cho phép cảm biến thu thập nhiều thông tin về ánh sáng hơn.
Ưu điểm:
Có thể có chất lượng hình ảnh và hiệu suất năng lượng tốt hơn vì tận dụng các đường dẫn phần cứng chuyên dụng.
Điểm hạn chế:
Có thể dẫn đến tốc độ khung hình thấp hơn trong điều kiện rất tối vì cảm biến cần nhiều thời gian hơn để thu sáng. Tốc độ khung hình có thể giảm xuống thấp nhất là 10 khung hình/giây trong điều kiện ánh sáng rất yếu.
Tính năng Tăng cường ánh sáng yếu của Google (Phần mềm thông qua Dịch vụ Google Play)
Cơ chế:
Giải pháp này được phân phối dưới dạng mô-đun không bắt buộc thông qua Dịch vụ Google Play, áp dụng quy trình xử lý hậu kỳ cho luồng video của camera. Công nghệ này sử dụng một công nghệ nâng cao hình ảnh theo thời gian thực tinh vi có tên là HDRNet.
Google HDRNet:
Mô hình học sâu này phân tích hình ảnh ở độ phân giải thấp hơn để dự đoán một tập hợp nhỏ gọn các thông số (lưới song phương). Sau đó, lưới này hướng dẫn việc cải thiện hiệu quả, thay đổi theo không gian của hình ảnh có độ phân giải đầy đủ trên GPU. Mô hình này được huấn luyện để làm sáng và cải thiện chất lượng hình ảnh trong điều kiện ánh sáng yếu, tập trung vào khả năng hiển thị khuôn mặt.
Điều phối quy trình:
Mô hình HDRNet và logic đi kèm được bộ xử lý Tăng cường ánh sáng yếu điều phối. Trong đó có:
- Phân tích cảnh:
Một công cụ tính toán tuỳ chỉnh ước tính độ sáng thực của cảnh bằng cách sử dụng siêu dữ liệu của camera (độ nhạy của cảm biến, thời gian phơi sáng, v.v.) và nội dung hình ảnh. Phân tích này xác định cấp độ tăng tốc. - Xử lý HDRNet:
Áp dụng mô hình HDRNet để tăng độ sáng cho khung hình. Mô hình được dùng được điều chỉnh cho các cảnh thiếu sáng và được tối ưu hoá để đạt hiệu suất theo thời gian thực. - Hoà trộn:
Khung hình gốc và khung hình được xử lý bằng HDRNet sẽ được hoà trộn. Lượng kết hợp được kiểm soát linh hoạt bằng bộ tính độ sáng cảnh, đảm bảo quá trình chuyển đổi mượt mà giữa trạng thái được tăng cường và trạng thái không được tăng cường.
Ưu điểm:
Hoạt động trên nhiều thiết bị hơn (hiện hỗ trợ Samsung S22 Ultra, S23 Ultra, S24 Ultra, S25 Ultra và Pixel 6 đến Pixel 9) mà không yêu cầu hỗ trợ HAL cụ thể. Duy trì tốc độ khung hình của camera vì đây là hiệu ứng hậu xử lý.
Hạn chế:
Là một phương pháp xử lý hậu kỳ, chất lượng bị giới hạn bởi thông tin có trong các khung hình do cảm biến cung cấp. Tính năng này không thể khôi phục những chi tiết bị mất do quá tối ở cấp độ cảm biến.
Bằng cách cung cấp cả đường dẫn phần cứng và phần mềm, tính năng Tăng cường ánh sáng yếu mang đến một giải pháp có thể mở rộng để nâng cao hiệu suất camera trong điều kiện ánh sáng yếu trên toàn bộ hệ sinh thái Android. Nhà phát triển nên ưu tiên chế độ AE khi có thể và sử dụng tính năng Tăng cường ánh sáng yếu của Google làm phương án dự phòng mạnh mẽ.
Triển khai tính năng Tăng cường ánh sáng yếu trong ứng dụng
Bây giờ, hãy xem cách triển khai cả hai sản phẩm LLB. Bạn có thể triển khai các bước sau đây cho dù bạn sử dụng CameraX hay Camera2 trong ứng dụng của mình. Để đạt được kết quả tốt nhất, bạn nên triển khai cả Bước 1 và Bước 2.
Bước 1: Chế độ AE Tăng cường ánh sáng yếu
Có trên một số thiết bị chạy Android 15 trở lên, chế độ LLB AE hoạt động như một chế độ Phơi sáng tự động (AE) cụ thể.
1. Kiểm tra tình trạng còn hàng
Trước tiên, hãy kiểm tra xem thiết bị camera có hỗ trợ Chế độ AE LLB hay không.
val cameraInfo = cameraProvider.getCameraInfo(cameraSelector) val isLlbSupported = cameraInfo.isLowLightBoostSupported
2. Bật Chế độ
Nếu được hỗ trợ, bạn có thể bật Chế độ AE LLB bằng đối tượng CameraControl của 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. Theo dõi trạng thái
Việc bạn yêu cầu chế độ này không có nghĩa là chế độ này đang "tăng tốc". Hệ thống chỉ kích hoạt tính năng tăng độ sáng khi cảnh thực sự tối. Bạn có thể thiết lập một Observer để cập nhật giao diện người dùng (chẳng hạn như hiện biểu tượng mặt trăng) hoặc chuyển đổi thành một Flow bằng cách sử dụng hàm mở rộng asFlow().
if (isLlbSupported) {
camera?.cameraInfo.lowLightBoostState.asFlow().collectLatest { state ->
// Update UI accordingly
updateMoonIcon(state == LowLightBoostState.ACTIVE)
}
}Bạn có thể đọc hướng dẫn đầy đủ về Chế độ AE tăng cường trong điều kiện ánh sáng yếu tại đây.
Bước 2: Tính năng Tăng cường ánh sáng yếu của Google
Đối với những thiết bị không hỗ trợ chế độ AE phần cứng, tính năng Tăng cường ánh sáng yếu của Google sẽ đóng vai trò là một giải pháp dự phòng hiệu quả. Ứng dụng này sử dụng LowLightBoostSession để chặn và tăng độ sáng cho luồng.
1. Thêm phần phụ thuộc
Tính năng này được cung cấp thông qua Dịch vụ 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. Khởi động ứng dụng
Trước khi khởi động camera, hãy dùng LowLightBoostClient để đảm bảo mô-đun đã được cài đặt và thiết bị được hỗ trợ.
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. Tạo một phiên LLB
Google LLB xử lý từng khung hình, vì vậy, bạn phải cung cấp Surface hiển thị cho LowLightBoostSession và Surface này sẽ trả lại cho bạn một Surface đã được áp dụng hiệu ứng làm sáng. Đối với các ứng dụng Camera2, bạn có thể thêm Surface kết quả bằng CaptureRequest.Builder.addTarget(). Đối với CameraX, quy trình xử lý này phù hợp nhất với lớp CameraEffect, trong đó bạn có thể áp dụng hiệu ứng bằng SurfaceProcessor và cung cấp lại cho Bản xem trước bằng SurfaceProvider, như trong mã này.
// 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. Truyền siêu dữ liệu
Để thuật toán hoạt động, thuật toán cần phân tích trạng thái phơi sáng tự động của camera. Bạn phải truyền kết quả chụp trở lại phiên LLB. Trong CameraX, bạn có thể thực hiện việc này bằng cách mở rộng Preview.Builder bằng 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)
}
}
)Bạn có thể xem các bước triển khai chi tiết cho ứng dụng và phiên trong hướng dẫn về tính năng Tăng cường ánh sáng yếu của Google.
Các bước tiếp theo
Bằng cách triển khai hai lựa chọn này, bạn đảm bảo rằng người dùng có thể nhìn rõ, quét một cách đáng tin cậy và tương tác hiệu quả, bất kể điều kiện ánh sáng.
Để xem các tính năng này hoạt động trong một cơ sở mã hoàn chỉnh, sẵn sàng cho sản xuất, hãy xem Ứng dụng camera Jetpack trên GitHub. Thư viện này triển khai cả Chế độ LLB AE và Google LLB, giúp bạn tham khảo để tích hợp.
Tiếp tục đọc
-
Tin tức về sản phẩm
Mỗi nhà phát triển đều có quy trình làm việc và nhu cầu riêng về AI. Do đó, bạn cần có thể chọn cách AI hỗ trợ quá trình phát triển của mình. Vào tháng 1, chúng tôi đã giới thiệu khả năng chọn bất kỳ mô hình AI cục bộ hoặc từ xa nào để hỗ trợ chức năng AI trong Android Studio
Matthew Warner • Đọc trong 2 phút
-
Tin tức về sản phẩm
Android Studio Panda 3 hiện đã ổn định và sẵn sàng để bạn sử dụng trong bản phát hành chính thức. Bản phát hành này giúp bạn kiểm soát và tuỳ chỉnh quy trình làm việc dựa trên AI một cách hiệu quả hơn, giúp việc tạo ứng dụng Android chất lượng cao trở nên dễ dàng hơn bao giờ hết.
Matt Dyor • Đọc trong 3 phút
-
Tin tức về sản phẩm
Tại Google, chúng tôi cam kết mang những mô hình AI mạnh mẽ nhất đến thẳng các thiết bị Android mà bạn đang dùng. Hôm nay, chúng tôi rất vui mừng thông báo về việc phát hành mô hình nguồn mở tiên tiến mới nhất của mình: Gemma 4.
Caren Chang, David Chou • Đọc trong 3 phút
Nhận thông tin cập nhật
Nhận thông tin chi tiết mới nhất về hoạt động phát triển trên Android trong hộp thư đến của bạn mỗi tuần.