"مجموعة اختبارات صور الكاميرا" (ITS) هي إطار عمل لإجراء اختبارات على الصور التي تُنشئها كاميرا Android. إن الهدف العام لكل اختبار في تقنية المعلومات هو ضبط الكاميرا بطريقة معينة والتقاط لقطة واحدة أو أكثر، فحص اللقطات لمعرفة ما إذا كانت تحتوي على بيانات الصورة المتوقعة. العديد من أن يتم توجيه الكاميرا إلى مخطط مستهدف محدد أو وتتم إضاءتها بكثافة معينة.
يمكن العثور على ITS في حزمة اختبار أداة التحقّق من التوافق (CTS Verifier) في
cts/apps/CameraITS
.
يجب أن تجتاز الأجهزة اختبارات ITS الخاصة بالميزات المتوافقة
التي يعلن عنها إطار عمل الكاميرا للتطبيقات التابعة لجهات خارجية كمجموعة فرعية من مجموعة أدوات اختبار التوافق (CTS).
ضبط إعدادات الجهاز
لإجراء اختبارات تقنية المعلومات، يجب إعداد ما يلي:
- الجهاز الذي يتم اختباره (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 للإصدار المقابل.
Mobly
بالنسبة إلى الإصدار 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. كما يلزم أيضًا توفير تكنولوجيا المعلومات في العلبة إضافات الكاميرا اختبار الفرضية.
بالنسبة إلى الاختبار اليدوي، تأكَّد مما يلي:
- تم تثبيت جهاز 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
ملف Sense_fusion مشهد 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 متعددة في testbeds
في ما يلي مثال على ملف 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.
اختبارات الاستدعاء
بعد فتح الجهاز والجهاز المضيف (بما في ذلك البيئة) والمشهد الفعلي وإعداد اختبارات تكنولوجيا المعلومات باستخدام العملية التالية.
افتح تطبيق CTS Verifer. في قائمة الاختبارات، اختَر Camera ITS Test (اختبار 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
لكل اختبار ITS. يشير الرمزFAIL*
إلى تعذُّر اجتياز الاختبار، ولكن بما أنّ الاختبار غير إلزامي بعد، سيتم الإبلاغ عنه على أنّهPASS
في CtsVerifier. تشير السمةSKIP
إلى أنّه تم اجتياز الاختبار لأن لم يعلن الجهاز عن الإمكانات الأساسية التي يجري اختبارها. بالنسبة مثلاً، إذا كان أحد الأجهزة لا يعرض الإعلانات من خلال واجهات الكاميرا التي يتوافق مع DNG، ويتم تخطّي الاختبارات المتعلقة بالتقاط ملفات DNG واحتسابها بصفتكPASS
.للإقرار بأنّ الاختبارات قد استوفت متطلبات الاختبار، انقر على زر علامة الاختيار الخضراء. إدخال اختبار ITS للكاميرا في CTS Verifier تصبح قائمة الاختبار باللون الأخضر ثم تشير إلى أن الهاتف قد اجتاز الاختبار بنجاح عبر الكاميرا.
اختبار 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 توفير نموذج للضوضاء في البيانات الوصفية لنتيجة الالتقاط لكل لقطة بتنسيق RAW. يجب تضمين نموذج الضوضاء هذا في HAL للكاميرا لكل كاميرا (على سبيل المثال، الكاميرات الأمامية والخلفية) على الجهاز الذي يُزعَم أنّه متوافق.
تنفيذ نموذج الضوضاء
لتنفيذ نموذج للضوضاء، اتّبِع الخطوات التالية لإنشاء نموذج للضوضاء و دمج النموذج في HAL للكاميرا.
لإنشاء نموذج للضوضاء لكل كاميرا، شغِّل النص البرمجي
dng_noise_model.py
في الدليلtools
. يؤدي هذا إلى إخراج مقتطف الرمز C. للحصول على مزيد من المعلومات حول كيفية إعداد الكاميرا وبيئة التصوير، يُرجى الاطّلاع على مستندDngNoiseModel.pdf
في دليلtools
.لتنفيذ نموذج الضوضاء للجهاز، عليك قص مقتطف رمز C الصغير ولصقه في واجهة HAL للكاميرا.
التحقّق من صحة نموذج الضوضاء
يُجري اختبار ITS المبرمَج tests/scene1_1/test_dng_noise_model.py
التحقّق من صحة نموذج الضوضاء من خلال التحقّق من صحة قيم الضوضاء
لتعريض اللقطة ودرجة الاستفادة المقدَّمة في بيانات الكاميرا.