أخبار المنتجات
تحسين الإضاءة المنخفضة: ميزة لزيادة سطوع خلاصات الكاميرا في الوقت الفعلي
قراءة لمدة 7 دقائق
شاركنا مؤخرًا كيف أتاح Instagram للمستخدمين التقاط صور مذهلة في الإضاءة المنخفضة باستخدام "الوضع الليلي". هذه الميزة مثالية للصور الثابتة، حيث يتوفّر الوقت لدمج عمليات تعرّض متعددة للضوء من أجل إنشاء لقطة ثابتة عالية الجودة. ولكن ماذا عن اللحظات التي تحدث بين الصور؟ يحتاج المستخدمون إلى التفاعل مع الكاميرا أكثر من مجرد لحظة الضغط على زر الغالق. كما أنّهم يستخدمون المعاينة لضبط المشهد أو مسح رموز الاستجابة السريعة ضوئيًا.
اليوم، سنتناول ميزة تحسين الإضاءة المنخفضة (LLB)، وهي ميزة قوية مصمّمة لزيادة سطوع بث الكاميرا في الوقت الفعلي. على عكس "الوضع الليلي" الذي يتطلّب مدة التقاط ثابتة، تعمل ميزة "تحسين الإضاءة المنخفضة" على الفور في المعاينة المباشرة وتسجيلات الفيديو. تضبط ميزة LLB تلقائيًا مقدار التحسين المطلوب استنادًا إلى الضوء المتاح، لذا فهي محسّنة لكل بيئة.
من خلال تحديث حديث، تتيح ميزة LLB لمستخدمي Instagram ضبط اللقطة المثالية، ثم يؤدي تنفيذ "الوضع الليلي" الحالي إلى الحصول على صور عالية الجودة في الإضاءة المنخفضة نفسها التي يستمتع بها المستخدمون منذ أكثر من عام.
أهمية السطوع في الوقت الفعلي
في حين يهدف "الوضع الليلي" إلى تحسين جودة الصورة النهائية، فإنّ ميزة "تحسين الإضاءة المنخفضة" مخصّصة لتحسين سهولة الاستخدام والتفاعل في البيئات المظلمة. هناك عامل مهم آخر يجب أخذه في الاعتبار وهو أنّه على الرغم من أنّ ميزتَي LLB و"الوضع الليلي" تعملان معًا بشكل جيد جدًا، يمكنك استخدامهما بشكل مستقل، وستلاحظ في بعض حالات الاستخدام هذه أنّ ميزة LLB لها قيمة في حد ذاتها عندما لا تكون هناك حاجة إلى صور "الوضع الليلي". إليك كيف تحسّن ميزة LLB تجربة المستخدم:
- ضبط الإطار والتقاط أفضل: في المشاهد ذات الإضاءة الخافتة، يمكن أن تكون معاينة الكاميرا العادية مظلمة تمامًا. تزيد ميزة LLB سطوع عدسة الكاميرا، ما يسمح للمستخدمين برؤية ما يضبطونه قبل الضغط على زر الغالق. للحصول على أفضل جودة لصور الإضاءة المنخفضة، يمكنك استخدام "الوضع الليلي"، أو يمكنك السماح لميزة LLB بمنح المستخدم نتيجة صورة "ما تراه هو ما تحصل عليه".
- المسح الضوئي الموثوق به: رموز الاستجابة السريعة منتشرة في كل مكان، ولكن غالبًا ما يكون مسحها ضوئيًا في مطعم مظلم أو مرآب للسيارات أمرًا محبطًا. من خلال خلاصة الكاميرا الأكثر سطوعًا بشكل ملحوظ، يمكن لخوارزميات المسح الضوئي رصد رموز الاستجابة السريعة وفك تشفيرها بشكل موثوق حتى في البيئات الخافتة جدًا.
- تفاعلات محسّنة: بالنسبة إلى التطبيقات التي تتضمّن تفاعلات فيديو مباشرة (مثل المساعدين المستندين إلى الذكاء الاصطناعي أو مكالمات الفيديو)، تزيد ميزة LLB مقدار المعلومات التي يمكن ملاحظتها، ما يضمن حصول نماذج الرؤية الحاسوبية على بيانات كافية للعمل عليها
الفرق في Instagram
يعمل فريق الهندسة المسؤول عن تطبيق Instagram على Android دائمًا بجد لتوفير تجربة كاميرا حديثة لمستخدميه. يمكنك أن ترى في المثال أعلاه الفرق الذي تحدثه ميزة LLB على هاتف Pixel 10 Pro.
من السهل تخيّل الفرق الذي تحدثه هذه الميزة في تجربة المستخدم. إذا لم يتمكّن المستخدمون من رؤية ما يلتقطونه، فمن المرجّح أن يتوقفوا عن التقاط الصور.
اختيار طريقة التنفيذ
هناك طريقتان لتنفيذ ميزة "تحسين الإضاءة المنخفضة" لتوفير أفضل تجربة على أوسع مجموعة من الأجهزة:
- وضع التعرّض التلقائي للضوء في ميزة "تحسين الإضاءة المنخفضة": هذا وضع تعرّض تلقائي للضوء على مستوى الأجهزة. يوفّر هذا الوضع أعلى جودة وأداء لأنّه يضبط خط أنابيب معالج إشارة الصورة (ISP) مباشرةً. يُرجى التحقّق من هذا الوضع أولاً دائمًا.
- ميزة "تحسين الإضاءة المنخفضة" من Google: إذا كان الجهاز لا يتيح وضع التعرّض التلقائي للضوء، يمكنك الرجوع إلى هذا الحل المستند إلى البرامج الذي توفّره "خدمات Google Play". يطبّق هذا الحل عملية ما بعد المعالجة على بث الكاميرا لزيادة سطوعه. بما أنّه حل مستند إلى البرامج بالكامل، فهو متاح على المزيد من الأجهزة، لذا يساعدك هذا التنفيذ في الوصول إلى المزيد من الأجهزة التي تستخدم ميزة LLB.
وضع التعرّض التلقائي للضوء في ميزة "تحسين الإضاءة المنخفضة" (الأجهزة)
الآلية:
يتوافق هذا الوضع مع الأجهزة التي تعمل بنظام التشغيل Android 15 والإصدارات الأحدث، ويتطلّب أن يكون مصنّع المعدات الأصلية قد نفّذ التوافق في طبقة HAL (متاح حاليًا على أجهزة Pixel 10). يتكامل هذا الوضع مباشرةً مع معالج إشارة الصورة (ISP) في الكاميرا. إذا ضبطت CaptureRequest.CONTROL_AE_MODE على CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY، يتحكّم نظام الكاميرا في ذلك.
السلوك:
تحلّل طبقة HAL/معالج إشارة الصورة المشهد وتضبط معلّمات أداة الاستشعار والمعالجة، بما في ذلك غالبًا زيادة وقت التعرّض للضوء، لزيادة سطوع الصورة. يمكن أن يؤدي ذلك إلى الحصول على لقطات بنسبة إشارة إلى تشويش (SNR) محسّنة بشكل ملحوظ لأنّ وقت التعرّض للضوء الممتد، بدلاً من زيادة اكتساب أداة الاستشعار الرقمية (ISO)، يسمح لأداة الاستشعار بالتقاط المزيد من معلومات الضوء.
الميزة:
جودة صورة أفضل وكفاءة في استهلاك الطاقة لأنّه يستفيد من مسارات الأجهزة المخصّصة.
المقابل:
قد يؤدي ذلك إلى انخفاض معدّل اللقطات في الثانية في الظروف المظلمة جدًا لأنّ أداة الاستشعار تحتاج إلى مزيد من الوقت لالتقاط الضوء. يمكن أن ينخفض معدّل اللقطات في الثانية إلى 10 لقطات في الثانية في ظروف الإضاءة المنخفضة جدًا.
ميزة "تحسين الإضاءة المنخفضة" من Google (البرامج من خلال "خدمات Google Play")
الآلية:
يطبّق هذا الحل، الذي يتم توزيعه كوحدة اختيارية من خلال "خدمات Google Play"، عملية ما بعد المعالجة على بث الكاميرا. يستخدم هذا الحل تكنولوجيا متطورة لتحسين الصور في الوقت الفعلي تُعرف باسم HDRNet.
تكنولوجيا HDRNet من Google:
يحلّل نموذج التعلّم المعمّق هذا الصورة بدقة منخفضة لتوقّع مجموعة مضغوطة من المعلمات (شبكة ثنائية). بعد ذلك، توجّه هذه الشبكة عملية التحسين الفعّالة والمتباينة مكانيًا للصورة كاملة الدقة على وحدة معالجة الرسومات. تم تدريب النموذج على زيادة سطوع الصور وتحسين جودتها في ظروف الإضاءة المنخفضة، مع التركيز على رؤية الوجه.
تنظيم العملية:
ينظّم معالج "تحسين الإضاءة المنخفضة" نموذج HDRNet والمنطق المصاحب له. ويشمل ذلك ما يلي:
- تحليل المشهد:
آلة حاسبة مخصّصة تقدّر سطوع المشهد الحقيقي باستخدام البيانات الوصفية للكاميرا (حساسية أداة الاستشعار، ووقت التعرّض للضوء، وما إلى ذلك) ومحتوى الصورة. يحدّد هذا التحليل مستوى التحسين. - معالجة HDRNet:
يطبّق نموذج HDRNet لزيادة سطوع اللقطة. تم ضبط النموذج المستخدَم للمشاهد ذات الإضاءة المنخفضة وتم تحسينه لتحقيق الأداء في الوقت الفعلي. - المزج:
يتم مزج اللقطات الأصلية واللقطات التي تمت معالجتها باستخدام HDRNet. يتم التحكّم ديناميكيًا في مقدار المزج الذي يتم تطبيقه من خلال الآلة الحاسبة لسطوع المشهد، ما يضمن انتقالاً سلسًا بين الحالتَين المحسّنة وغير المحسّنة.
الميزة:
تعمل هذه الميزة على مجموعة أوسع من الأجهزة (تتضمّن حاليًا هواتف Samsung S22 Ultra وS23 Ultra وS24 Ultra وS25 Ultra وPixel 6 إلى Pixel 9) بدون الحاجة إلى دعم HAL معيّن. تحافظ هذه الميزة على معدّل اللقطات في الثانية للكاميرا لأنّها تأثير ما بعد المعالجة.
المقابل:
بما أنّها طريقة ما بعد المعالجة، فإنّ الجودة محدودة بالمعلومات المتوفّرة في اللقطات التي تقدّمها أداة الاستشعار. لا يمكن استرداد التفاصيل التي فُقدت بسبب الظلام الشديد على مستوى أداة الاستشعار.
من خلال توفير مسارَين للأجهزة والبرامج، يقدّم "تحسين الإضاءة المنخفضة" حلاً قابلاً للتوسّع لتحسين أداء الكاميرا في الإضاءة المنخفضة على مستوى منظومة Android المتكاملة. على المطوّرين إعطاء الأولوية لوضع التعرّض التلقائي للضوء عندما يكون متاحًا واستخدام ميزة "تحسين الإضاءة المنخفضة" من Google كحل احتياطي قوي.
تنفيذ ميزة "تحسين الإضاءة المنخفضة" في تطبيقك
لنلقِ نظرة الآن على كيفية تنفيذ كلتا ميزتَي LLB. يمكنك تنفيذ ما يلي سواء كنت تستخدم CameraX أو Camera2 في تطبيقك. للحصول على أفضل النتائج، ننصحك بتنفيذ الخطوتَين 1 و2.
الخطوة 1: وضع التعرّض التلقائي للضوء في ميزة "تحسين الإضاءة المنخفضة"
يتوفّر وضع التعرّض التلقائي للضوء في ميزة LLB على أجهزة محدّدة تعمل بنظام التشغيل Android 15 والإصدارات الأحدث، ويعمل كوضع تعرّض تلقائي للضوء (AE) معيّن.
1. التحقّق من مدى التوفّر
أولاً، تحقَّق مما إذا كان جهاز الكاميرا يتيح وضع التعرّض التلقائي للضوء في ميزة LLB.
val cameraInfo = cameraProvider.getCameraInfo(cameraSelector) val isLlbSupported = cameraInfo.isLowLightBoostSupported
2. تفعيل الوضع
إذا كان الجهاز يتيح وضع التعرّض التلقائي للضوء في ميزة 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 لتعديل واجهة المستخدم (مثل عرض رمز القمر) أو التحويل إلى Flow باستخدام دالة الإضافة asFlow().
if (isLlbSupported) {
camera?.cameraInfo.lowLightBoostState.asFlow().collectLatest { state ->
// Update UI accordingly
updateMoonIcon(state == LowLightBoostState.ACTIVE)
}
}
يمكنك قراءة الدليل الكامل حول وضع التعرّض التلقائي للضوء في ميزة "تحسين الإضاءة المنخفضة" هنا.
الخطوة 2: ميزة "تحسين الإضاءة المنخفضة" من Google
بالنسبة إلى الأجهزة التي لا تتيح وضع التعرّض التلقائي للضوء على مستوى الأجهزة، تعمل ميزة "تحسين الإضاءة المنخفضة" من 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، يمكنك إضافة مساحة العرض الناتجة باستخدام 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.
الخطوات التالية
من خلال تنفيذ هذين الخيارَين، يمكنك التأكّد من أنّ المستخدمين يمكنهم الرؤية بوضوح والمسح الضوئي بشكل موثوق والتفاعل بفعالية، بغض النظر عن ظروف الإضاءة.
للاطّلاع على هذه الميزات أثناء العمل ضمن قاعدة بيانات كاملة وجاهزة للإنتاج، يمكنك الاطّلاع على تطبيق Jetpack Camera على GitHub. يُنفّذ هذا التطبيق كلاً من وضع التعرّض التلقائي للضوء في ميزة LLB وميزة "تحسين الإضاءة المنخفضة" من Google، ما يمنحك مرجعًا لعملية الدمج الخاصة بك.
متابعة القراءة
-
أخبار المنتجات
أعلنّا اليوم خلال The Android Show أنّ Android ينتقل من نظام تشغيل إلى نظام ذكاء، ما يوفّر المزيد من الفرص للتفاعل مع تطبيقاتك.
Matthew McCullough • قراءة لمدة 4 دقائق
-
أخبار المنتجات
تتطوّر المنظومة المتكاملة للأجهزة الجوّالة باستمرار، ما يوفّر فرصًا جديدة ويطرح تهديدات جديدة. من خلال هذه التغييرات، يظلّ Android وGoogle Play ملتزمَين بضمان استمرار مليارات المستخدمين في الاستمتاع بتطبيقاتهم بثقة وازدهار ابتكارات المطوّرين.
Vijaya Kaza • قراءة لمدة 3 دقائق
-
أخبار المنتجات
إصدار Jetpack Compose لشهر أبريل 2026 مستقر. يتضمّن هذا الإصدار الإصدار 1.11 من وحدات Compose الأساسية (راجِع عملية الربط الكاملة لقائمة إدارة مواد العرض) وأدوات تصحيح الأخطاء للعناصر المشترَكة وأحداث لوحة اللمس والمزيد.
Meghan Mehta • قراءة لمدة 5 دقائق
البقاء على اطّلاع على آخر التحديثات
يمكنك تلقّي أحدث الإحصاءات حول تطوير تطبيقات Android أسبوعيًا في بريدك الوارد.