"مجموعة اختبارات صور الكاميرا" (ITS) هي إطار عمل لإجراء اختبارات على الصور التي تُنتجها كاميرا Android. الهدف العام من كل اختبار في ITS هو ضبط الكاميرا بطريقة معيّنة، والتقاط لقطة واحدة أو أكثر، وexaminedفحص اللقطات لمعرفة ما إذا كانت تحتوي على بيانات الصورة المتوقّعة. تتطلّب العديد من الاختبارات توجيه الكاميرا نحو رسم بياني مستهدَف محدّد أو استخدام كثافة ضوء معيّنة.
تقع الخدمة في تسجِير اختبار CTS Verifier في
cts/apps/CameraITS
.
يجب أن تجتاز الأجهزة اختبارات ITS الخاصة بالميزات المتوافقة
التي يعلن عنها إطار عمل الكاميرا للتطبيقات التابعة لجهات خارجية كمجموعة فرعية من مجموعة أدوات اختبار التوافق (CTS).
ضبط إعدادات الجهاز
لإجراء اختبارات ITS، يجب إعداد ما يلي:
- الجهاز الذي يتم اختباره (DUT)
- جهاز مضيف (مثل كمبيوتر مكتبي أو كمبيوتر محمول يعمل بنظام التشغيل Linux)
- مشهد تلتقطه الكاميرا
إعداد الجهاز قيد الاختبار (DUT)
لإعداد جهاز DUT، اتّبِع الخطوات التالية:
- وصِّل جهاز DUT بجهاز مضيف عبر USB.
- امنح المضيف أذونات للوصول إلى جهاز DUT عبر ADB.
ثبِّت تطبيق CTS Verifier (
CtsVerifier.apk
) على الجهاز. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة استخدام أداة التحقّق من توافق الأجهزة (CTS Verifier).extract root/out/host/linux-x86/cts-verfier/android-cts-verifier.zip
cd android-cts-verifier
adb install -r -g CtsVerifier.apk
إعداد المضيف
تتطلّب أداة ITS توصيل الجهاز المضيف بجهاز DUT عبر USB، ويجب أن يكون بإمكانه استخدام ADB للتحكّم في الجهاز والتواصل معه، ويجب أن يكون البرنامج المطلوب مثبّتًا عليه.
لإعداد الجهاز المضيف، تأكَّد من تثبيت البرامج التالية.
أدوات نظام التشغيل لحزمة تطوير البرامج (SDK) لنظام التشغيل Android
يجب تثبيت أدوات حزمة تطوير البرامج (SDK) لنظام التشغيل Android ويجب أن يكون برنامج ADB في مسار التشغيل الخاص بقشرة أو وحدة تحكّم الطرفية التي تعمل على الحاسب المضيف. بالنسبة إلى الإصدار الذي تم طرحه للجميع من أدوات Android SDK Platform، يمكنك الاطّلاع على ملاحظات إصدار أدوات النظام الأساسي لحزمة تطوير البرامج (SDK).
Python
يجب تثبيت Python على الجهاز المضيف. ننصح باستخدام إحدى توزيعات Python المجمّعة لضمان التوافق مع الإصدارات المتوافقة. لمعرفة تفاصيل حول إصدارات Python والحِزم التي يجب تثبيتها لإصدار معيّن، يُرجى الاطّلاع على ملاحظات إصدار حزمة Camera ITS للإصدار المقابل.
موبلي
بالنسبة إلى الإصدار 12 من Android والإصدارات الأحدث، يجب تثبيت إطار عمل اختبار Mobly. يتيح لك تطبيق Mobly إعداد جهاز DUT وجهاز لوحي لعرض الرسوم البيانية في فئة
its_base_test
. لتثبيت إطار عمل اختبار Mobly، شغِّل:
pip install mobly
إعداد البيئة
لإعداد بيئة الاختبار، يمكنك تنفيذ ما يلي:
cd CameraITS
source build/envsetup.sh
يتحقّق هذا الأمر من تثبيت Python، ويضبط متغيّر البيئة PYTHONPATH
، ويُجري اختبارات الوحدة على وحدات utils/*.py
. إذا لم تتم طباعة أي أخطاء على الوحدة الطرفية، تكون البيئة جاهزة لإجراء اختبارات تقنية المعلومات.
إعداد مجموعة الأجهزة الذكية
لإعداد المشاهد، ننصحك باستخدام إعداد Camera ITS-in-a-box لأجل تسهيل التشغيل الآلي والموثوقية والكفاءة في الاختبار. توفّر منصات اختبار ITS-in-a-box جميع متطلبات الإضاءة والتوسيط وتغيير الرسم البياني لنظام ITS. يجب أيضًا استخدام حزمة ITS-in-a-box لاختبار إضافات الكاميرا.
لإجراء الاختبار اليدوي، تأكَّد مما يلي:
- تم تثبيت جهاز DUT على حامل ثلاثي القوائم
- يتم توجيه شاشة الاختبار إلى المشهد الصحيح لكل اختبار. (يقدّم نص اختبار ITS prompts لتغيير إعداد المشهد قبل بدء الاختبارات في مشهد جديد).
- يتم توصيل جهاز DUT بالجهاز المضيف عبر USB.
- لا يتم تحريك DUT أثناء إجراء الاختبار.
- يتم إضاءة المشهد بمصدر ضوء ثابت غير متذبذب. (لا تستخدم ضوء الفلورسنت لأن هذا يؤدي إلى وميض).
يعرض نص اختبار ITS طلبًا يطلب من المستخدم تغيير إعدادات المشهد قبل بدء الاختبارات في مشهد جديد.
يجب ضبط اتجاه الهاتف لكي تلتقط الكاميرا الصور بدون تدوير. أسهل طريقة للتحقق من ذلك هي استخدام مشاهد الوجه في المشهد2. يكون الهاتف في الاتجاه الأفقي مع تدوير الهاتف عكس اتجاه عقارب الساعة للكاميرا الخلفية وتدويره باتجاه عقارب الساعة للكاميرا الأمامية.
ملفات الإعداد
باستخدام إطار عمل Mobly، عليك إنشاء ملف إعدادات config.yml
لتحديد منصة اختبار Mobly. في ما يلي أمثلة على حالات الاستخدام المختلفة.
ملف config.yml الخاص بالمشاهد المستندة إلى الأجهزة اللوحية
في ما يلي مثال على ملف config.yml
للمشاهد المستندة إلى الأجهزة اللوحية. بالنسبة إلى
الاختبار المستنِد إلى الأجهزة اللوحية، يجب أن تكون الكلمة الرئيسية TABLET
مضمّنة في اسم منصة الاختبار. أثناء
الإعداد، يُعدّي مشغّل اختبارات Mobly المَعلمات في الملف ويُمرّرها إلى الاختبارات الفردية.
TestBeds:
- Name: TEST_BED_TABLET_SCENES
# Test configuration for scenes[0:4, 6, _change]
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
- serial: 5B16001229
label: tablet
TestParams:
brightness: 192
chart_distance: 22.0
debug_mode: "False" # "True" or "False"; quotes needed
lighting_cntl: <controller-type> # "arduino" or "None"; quotes needed
lighting_ch: <controller-channel>
camera: 0
foldable_device: "False". # set "True" if testing foldable
scene: <scene-name> # if <scene-name> runs all scenes
لتشغيل منصة الاختبار، شغِّل tools/run_all_tests.py
. في حال عدم توفُّر قيم سطر أوامر تحدّد الكاميرات أو المشاهد، يتم إجراء الاختبار باستخدام قيم الملف config.yml
. إذا كانت هناك قيم سطر أوامر للكاميرات أو المشاهد، ستلغي هذه القيم القيم في القسم TestParams
من ملف config.yml
.
مثلاً:
python tools/run_all_tests.py
python tools/run_all_tests.py camera=1
python tools/run_all_tests.py scenes=2,1,0
python tools/run_all_tests.py camera=1 scenes=2,1,0
ملف sensor_fusion scene config.yml
في ما يلي مثال على ملف config_yml
لاختبارات sensor_fusion
.
لاختبار sensor_fusion
، يجب أن تكون الكلمة الرئيسية SENSOR_FUSION
في اسم الاختبار. لا يتيح نظام التشغيل Android 13 والإصدارات الأحدث سوى استخدام وحدة التحكّم Arduino
لدمج بيانات المستشعرات بسبب اختبار المعاينة واستقرار الفيديو.
يتوافق نظام Android 12 مع وحدات التحكّم Arduino وCanakit.
Testbeds
- Name: TEST_BED_SENSOR_FUSION
# Test configuration for sensor_fusion/test_sensor_fusion.py
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
TestParams:
fps: 30
img_size: 640,480
test_length: 7
debug_mode: "False"
chart_distance: 25
rotator_cntl: arduino
rotator_ch: 1
camera: 0
لإجراء اختبارات sensor_fusion
باستخدام
علبة دمج الاستشعار، شغِّل ما يلي:
python tools/run_all_tests.py scenes=sensor_fusion
python tools/run_all_tests.py scenes=sensor_fusion camera=0
ملف config.yml الخاص بالعديد من قواعد بيانات الاختبار
في ما يلي مثال على ملف config.yml
يتضمّن عدة منصات اختبار، ومقاييس أداء
لأجهزة الكمبيوتر اللوحي ومقاييس أداء sensor_fusion
. يتم تحديد منصة الاختبار المناسبة
حسب المشاهد التي تم اختبارها.
Testbeds
- Name: TEST_BED_TABLET_SCENES
# Test configuration for scenes[0:4, 6, _change]
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
- serial: 5B16001229
label: tablet
TestParams:
brightness: 192
chart_distance: 22.0
debug_mode: "False"
chart_loc_arg: ""
camera: 0
scene: <scene-name> # if <scene-name> runs all scenes
- Name: TEST_BED_SENSOR_FUSION
# Test configuration for sensor_fusion/test_sensor_fusion.py
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
TestParams:
fps: 30
img_size: 640,480
test_length: 7
debug_mode: "False"
chart_distance: 25
rotator_cntl: arduino # cntl can be arduino or canakit
rotator_ch: 1
camera: 0
ملف config.yml للاختبار اليدوي
في ما يلي مثال على ملف config.yml
للاختبار اليدوي. اعتبارًا من الإصدار
Android 14، أصبح الاختبار
اليدوي متاحًا لجميع الاختبارات باستثناء اختبارات
scene_extensions
. للاختبار اليدوي، يجب أن تكون الكلمة الرئيسية MANUAL
في اسم منصة الاختبار.
بالإضافة إلى ذلك، لا يمكن أن يتضمّن القسم AndroidDevice
قسمًا تسلسليًا أو قسم تصنيف لجهاز تابلت.
TestBeds:
- Name: TEST_BED_MANUAL
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
TestParams:
debug_mode: "False"
camera: 0
scene: 1
إجراء اختبارات ITS
يصف هذا القسم كيفية إجراء اختبارات ITS.
استدعاء الاختبارات
بعد إعداد الجهاز والجهاز المضيف (بما في ذلك البيئة) والمشهد المادي، يمكنك إجراء اختبارات تقنية المعلومات باستخدام العملية التالية.
افتح تطبيق CTS Verifer. في قائمة الاختبارات، اختَر اختبار ITS للكاميرا.
من الجهاز المضيف، يمكنك إجراء اختبارات تكنولوجيا المعلومات من دليل
CameraITS/
. على سبيل المثال، على جهاز مزوّد بكاميرا أمامية وكاميرا خلفية، شغِّل الأمر التالي:python tools/run_all_tests.py
ينتقل النص البرمجي بين الكاميرات ومشاهد الاختبار استنادًا إلى ملف
config.yml
. بالنسبة إلى عمليات إعداد تصحيح الأخطاء، ننصحك بتشغيل أحد مشاهدscene2
من خلال اختبار واحد للحصول على أسرع وقت ممكن.بالنسبة إلى الاختبار اليدوي، قبل بدء تشغيل مجموعة اختبارات ITS على كل مشهد، يأخذ النص البرمجي صورة للمشهد الحالي ويحفظها بتنسيق JPEG ويطبع مسار ملف JPEG في وحدة التحكّم ويطلب من المستخدم تأكيد ما إذا كانت الصورة بحالة جيدة. وتتكرّر عملية الالتقاط والتأكيد هذه إلى أن يؤكد المستخدم أنّ الصورة بحالة جيدة. في ما يلي الرسائل الواردة في هذه العملية.
Preparing to run ITS on camera 0 Start running ITS on camera: 0 Press Enter after placing camera 0 to frame the test scene: scene1_1 The scene setup should be: A grey card covering at least the middle 30% of the scene Running vendor 3A on device Capture an image to check the test scene Capturing 1 frame with 1 format [yuv] Please check scene setup in /tmp/tmpwBOA7g/0/scene1_1.jpg Is the image okay for ITS scene1_1? (Y/N)
يطبع كل تشغيل للنص البرمجي سجلاً يعرض إما
PASS
أوFAIL
أوFAIL*
أوSKIP
لكل اختبار تقنية معلومات. تشير القيمةFAIL*
إلى أنّه تعذّر اجتياز الاختبار، ولكن بما أنّ الاختبار غير إلزامي بعد، سيتم إبلاغ فريق CtsVerifier عن الاختبار على أنّهPASS
. يشير الرمزSKIP
إلى اجتياز الاختبار لأنّه لم يُعلِن الجهاز عن الميزة الأساسية التي يتم اختبارها. على سبيل المثال، إذا لم يُعلِن الجهاز من خلال واجهات الكاميرا عن إتاحة استخدام ملف DNG، سيتم تخطّي الاختبارات المتعلّقة بتسجيل ملفات DNG واحتساب ذلك على أنّهPASS
.للإقرار بأنّ الاختبارات قد استوفت متطلبات الاختبار، انقر على زر علامة الاختيار الخضراء. يصبح إدخال اختبار ITS للكاميرا في قائمة اختبارات أداة التحقّق من توافق الأجهزة مع معيار CTS باللون الأخضر، ما يشير إلى اجتياز الهاتف لاختبار ITS للكاميرا.
اختبار DUT بالتوازي
تتوافق الأجهزة التي تعمل بالإصدار 14 من نظام التشغيل Android أو الإصدارات الأحدث مع اختبار DUT الموازي. يتيح لك ذلك اختبار وحدات DUT بشكل موازٍ مع عدة أجهزة لزيادة سرعة الاختبار بشكل عام. على سبيل المثال، يتيح لك الاختبار المتوازي اختبار الكاميرا 0 في منصة واحدة والكاميرا 1 في منصة أخرى في الوقت نفسه. يتم تجميع جميع اختبارات جلسات الاختبار المُتوازي في جلسة أداة التحقّق من CTS على جهاز DUT المرجعي. يجب إجراء اختبار موازٍ باستخدام وحدة التحكّم في الإضاءة من Arduino، لأنّ التحكّم اليدوي في الإضاءة ليس متوافقًا مع الاختبار الموازٍ. تأكَّد من أنّ قناة مختلفة في وحدة التحكّم Arduino نفسها تتحكّم في الإضاءة لكل جهاز.
في ما يلي نموذج لملف config.yml
يحدِّد ثلاثة اختبارات لإجراءها
بشكل موازٍ.
TestBeds:
- Name: TEST_BED_TABLET_SCENES_INDEX_0
Controllers:
AndroidDevice:
- serial: <device-id-0>
label: dut
- serial: <tablet-id-0>
label: tablet
TestParams:
brightness: 192
chart_distance: 22.0
debug_mode: "False"
lighting_cntl: "arduino"
lighting_ch: <controller-channel-0>
camera: 0
scene: <scene-name> # if <scene-name> left as-is runs all scenes
foldable_device: "False"
- Name: TEST_BED_TABLET_SCENES_INDEX_1
Controllers:
AndroidDevice:
- serial: <device-id-1>
label: dut
- serial: <tablet-id-1>
label: tablet
TestParams:
brightness: 192
chart_distance: 22.0
debug_mode: "False"
lighting_cntl: "arduino"
lighting_ch: <controller-channel-1>
camera: 1
scene: <scene-name> # if <scene-name> left as-is runs all scenes
foldable_device: "False"
# TEST_BED_SENSOR_FUSION represents testbed index 2
# Parallel sensor_fusion is currently unsupported due to Arduino requirements
- Name: TEST_BED_SENSOR_FUSION
# Test configuration for sensor_fusion
Controllers:
AndroidDevice:
- serial: <device-id>
label: dut
TestParams:
fps: 30
img_size: 640,480
test_length: 7
debug_mode: "False"
chart_distance: 25
rotator_cntl: "arduino"
rotator_ch: <controller-channel-2>
camera: <camera-id>
foldable_device: "False"
tablet_device: "False"
lighting_cntl: "None"
lighting_ch: <controller-channel>
scene: "sensor_fusion"
لتشغيل قواعد الاختبار بشكل موازٍ، استخدِم الأمر التالي:
for i in 0 1 2; do python3 tools/run_all_tests.py testbed_index=$i num_testbeds=3 & done; wait
نموذج الضوضاء في DNG
يجب أن توفّر الأجهزة التي تعلن عن إمكانية التقاط صور RAW أو DNG نموذج تشويش في البيانات الوصفية لنتيجة الالتقاط لكل لقطة أولية. يجب تضمين نموذج الضوضاء هذا في HAL للكاميرا لكل كاميرا (على سبيل المثال، الكاميرات الأمامية والخلفية) على الجهاز الذي يُزعَم أنّه متوافق.
تنفيذ نموذج الضوضاء
لتنفيذ نموذج تشويش، يمكنك اتباع الخطوات التالية لإنشاء نموذج تشويش وتضمين النموذج في طبقة تجريد الأجهزة (HAL) للكاميرا.
لإنشاء نموذج تشويش لكل كاميرا، عليك تشغيل نص
dng_noise_model.py
البرمجي في الدليلtools
. يؤدي ذلك إلى عرض مقتطف رمز C. للحصول على مزيد من المعلومات حول كيفية إعداد الكاميرا وبيئة التصوير، يُرجى الاطّلاع على مستندDngNoiseModel.pdf
في دليلtools
.لتنفيذ نموذج الضوضاء للجهاز، عليك قص مقتطف رمز C الصغير ولصقه في HAL للكاميرا.
التحقّق من صحة نموذج التشويش
يُجري اختبار ITS المبرمَج tests/scene1_1/test_dng_noise_model.py
التحقّق من صحة نموذج الضوضاء من خلال التحقّق من صحة قيم الضوضاء
لمستوى تعريض اللقطة ودرجة التوسيع المقدَّمة في بيانات الكاميرا.