"حزمة اختبار صور الكاميرا" (ITS) هي إطار عمل لإجراء اختبارات على الصور تم إنتاجه بواسطة كاميرا Android. إن الهدف العام لكل اختبار في تقنية المعلومات هو ضبط الكاميرا بطريقة معينة والتقاط لقطة واحدة أو أكثر، فحص اللقطات لمعرفة ما إذا كانت تحتوي على بيانات الصورة المتوقعة. العديد من أن يتم توجيه الكاميرا إلى مخطط مستهدف محدد أو تضيء بكثافة معينة.
حيث تقع الخدمة في مركز اختبار CTS Verifier في
cts/apps/CameraITS
يجب أن تجتاز الأجهزة اختبارات تكنولوجيا المعلومات المقابلة للميزات المتوافقة.
يتم الإعلان عنها من خلال إطار عمل الكاميرا للتطبيقات التابعة لجهات خارجية بصفتها مجموعة فرعية من 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
إعداد المضيف
تتطلب خدمة تكنولوجيا المعلومات توصيل الجهاز المضيف بـ DUT عبر USB، استخدام ADB للتحكّم في الأجهزة والتواصل، والحصول على تثبيت البرامج.
لإعداد جهازك المضيف، تأكَّد من تثبيت البرامج التالية.
أدوات النظام الأساسي لحزمة تطوير البرامج (SDK) لنظام التشغيل Android
يجب تثبيت أدوات Android SDK Platform وأن يكون ADB في المسار القابل للتنفيذ في واجهة الأوامر أو الوحدة الطرفية التي تعمل على المضيف الجهاز. بالنسبة إلى الإصدار المتاح للجميع من أدوات Android SDK Platform الرؤية ملاحظات إصدار أدوات النظام الأساسي لحزمة تطوير البرامج (SDK):
Python
يجب تثبيت Python على الجهاز المضيف. ننصحك باستخدام حزمة توزيعة Python لضمان التوافق مع الإصدارات المتوافقة. للحصول على تفاصيل حول إصدارات بايثون والحزمة المطلوب تثبيتها لإصدار محدد، راجع ملاحظات إصدار الكاميرا الخاصة بالإصدار ذي الصلة
موبلي
بالنسبة إلى نظام التشغيل Android 12 والإصدارات الأحدث، سيتم استخدام إطار عمل اختبار Mobly
. يتيح لك Mobly إعداد DUT وتخطيط الجهاز اللوحي في
صف واحد (its_base_test
). لتثبيت إطار عمل اختبار Mobly، شغِّل:
pip install mobly
إعداد البيئة
لإعداد بيئة الاختبار، شغِّل:
cd CameraITS
source build/envsetup.sh
يتحقّق هذا الأمر من تثبيت Python، ويضبط PYTHONPATH
.
متغيرة بيئية، وإجراء اختبارات وحدة على وحدات utils/*.py
. إذا كانت الإجابة "لا"
تتم طباعة الأخطاء على الطرفية، تكون البيئة جاهزة لتشغيل نظام تكنولوجيا المعلومات
الاختبار.
إعداد المشهد
لإعداد المَشاهد، ننصحك باستخدام إعداد قسم تكنولوجيا المعلومات في علبة للكاميرا والسهولة في الأتمتة والموثوقية والكفاءة في الاختبار. صندوق تكنولوجيا المعلومات مع تجهيزات الاختبار تتوافق مع جميع متطلبات الإضاءة والتوسيط وتغيير الرسم البياني لقسم تكنولوجيا المعلومات. كما يلزم أيضًا توفير تكنولوجيا المعلومات في العلبة إضافات الكاميرا اختبار الفرضية.
لإجراء الاختبار اليدوي، تأكَّد مما يلي:
- DUT على حامل ثلاثي القوائم
- يتم توجيه DUT إلى المشهد الصحيح لكل اختبار. (نص اختبار تكنولوجيا المعلومات تقديم مطالبات لتغيير إعدادات المشهد قبل بدء الاختبارات في مشهد).
- يتم توصيل DUT بالجهاز المضيف عبر USB.
- ولا يتحرك DUT أثناء إجراء الاختبار.
- المشهد مضاء باستخدام مصدر ضوء ثابت وغير متقلّب. (لا تفعل استخدام ضوء الفلورسنت لأن هذا يؤدي إلى حدوث وميض).
يعرض نص اختبار تكنولوجيا المعلومات طلبًا من المستخدم بتغيير المشهد الإعداد قبل بدء الاختبارات في مشهد جديد.
يجب ضبط اتجاه الهاتف كي تلتقط الكاميرا صورًا بدون تدوير. وتتمثل أسهل طريقة للتحقق من ذلك في استخدام مَشاهد الوجوه المشهد 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
تشغيل اختبارات تكنولوجيا المعلومات
يصف هذا القسم كيفية إجراء اختبارات تقنية المعلومات.
اختبارات الاستدعاء
بعد فتح الجهاز والجهاز المضيف (بما في ذلك البيئة) والمشهد الفعلي وإعداد اختبارات تكنولوجيا المعلومات باستخدام العملية التالية.
افتح تطبيق CTS Verifer. في قائمة الاختبارات، اختَر اختبار تكنولوجيا المعلومات للكاميرا
من الجهاز المضيف، يمكنك إجراء اختبارات تكنولوجيا المعلومات من جهاز
CameraITS/
. الدليل. على سبيل المثال، إذا كان الجهاز مزوّدًا بكاميرا أمامية وكاميرا خلفية، شغِّل الأمر التالي:python tools/run_all_tests.py
ويتكرر النص عبر الكاميرات ومشاهد الاختبار بناءً على ملف
config.yml
. ولتصحيح أخطاء الإعدادات، ننصحك بتشغيل منscene2
مشهد مع اختبار واحد لتحقيق أسرع إنجاز.للاختبار اليدوي، وقبل البدء في تشغيل مجموعة من اختبارات تقنية المعلومات على كل مشهد، يلتقط النص صورة للمشهد الحالي، ويحفظها بتنسيق 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 بالتوازي
تتوافق الأجهزة التي تعمل بنظام التشغيل Android 14 أو الإصدارات الأحدث مع ميزة "التوازي" اختبار 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"
لتشغيل testbeds بالتوازي، استخدم الأمر التالي:
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) للكاميرا.
التحقّق من صحة نموذج التشويش
tests/scene1_1/test_dng_noise_model.py
يتحقق اختبار تكنولوجيا المعلومات الآلي من نموذج الضوضاء من خلال التحقق من أن قيم التشويش
للتعرّض للضوء والكسب المُقدَّم في بيانات الكاميرا صحيح.