توفر هذه الصفحة قائمة شاملة بالاختبارات ضمن مجموعة اختبار صورة الكاميرا (ITS) ، والتي تعد جزءًا من أداة التحقق من مجموعة اختبار توافق Android (CTS). اختبارات ITS هي اختبارات وظيفية ، مما يعني أنها لا تقيس جودة الصورة ، ولكن جميع وظائف الكاميرا المعلن عنها تعمل كما هو متوقع. يتيح هذا المستند للمطورين والمختبرين فهم ما تفعله الاختبارات الفردية وكيفية تصحيح أخطاء الاختبار.
يتم تجميع الاختبارات حسب المشهد على النحو التالي:
- المشهد 0 : التقاط البيانات الوصفية ، والارتعاش ، والجيروسكوب ، والاهتزاز
- المشهد 1 : التعرض ، الحساسية ، تعويض قيمة التعريض الضوئي ، YUV مقابل JPEG / RAW
- المشهد 2 : كشف الوجه
- المشهد 3 : تحسين الحواف ، حركة العدسة
- المشهد 4 : نسبة العرض إلى الارتفاع ، والاقتصاص ، ومجال الرؤية
- المشهد 5 : تظليل العدسة
- المشهد 6 : تكبير
- sensor_fusion : إزاحة توقيت الكاميرا / الجيروسكوب
انظر الأقسام الفردية لوصف كل مشهد.
المشهد 0
لا تتطلب اختبارات Scene0 أي معلومات محددة عن المشهد. ومع ذلك ، يجب أن يكون الهاتف ثابتًا لاختبار الجيروسكوب والاهتزاز.
اختبار_برست_التقاط
يتحقق من أن خط أنابيب الالتقاط بالكامل يمكنه مواكبة سرعة الالتقاط بالحجم الكامل ووقت وحدة المعالجة المركزية.
تم اختبار واجهات برمجة التطبيقات:
تمرير: لالتقاط سلسلة من الصور بالحجم الكامل والكاميرا سريعة بما يكفي لتجنب المهلة.
test_capture_result_dump
اختبارات إرجاع نتيجة الالتقاط من الالتقاط اليدوي ثم تفريغها.
تم اختبار واجهات برمجة التطبيقات:
تمرير: يكمل الالتقاط وتفريغ نتائج الالتقاط.
test_gyro_bias
يختبر ما إذا كان الجيروسكوب لديه خرج ثابت عندما يكون الجهاز ثابتًا. يتم رسم البيانات كمتوسط 20 نقطة بيانات.
تم اختبار واجهات برمجة التطبيقات:
تمرير: دلتا القراءة الجيروسكوبية أقل من 0.01 بمرور الوقت.
test_gyro_bias_plot.png
test_jitter
يقيس الاهتزاز في الطوابع الزمنية للكاميرا.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
تمرير: هناك ما لا يقل عن 30 مللي ثانية بين الإطارات.
test_jitter_plot.png (لاحظ نطاق المحور y الصغير. الارتعاش في الواقع صغير في هذه المؤامرة.)
test_metadata
يختبر صحة إدخالات البيانات الوصفية. ينظر إلى نتائج الالتقاط وكائنات خصائص الكاميرا. يستخدم هذا الاختبار التعريض auto_capture_request
وقيم الاكتساب لأن محتوى الصورة ليس مهمًا.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SCALER_CROPPING_TYPE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_BLACK_LEVEL_PATTERN
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
تمرير: مستوى الأجهزة ، و rollingShutterSkew
، وعلامات frameDuration
، و timestampSource
، و croppingType
، و blackLevelPattern
، و pixel_pitch
، و FOV ، والمسافة البؤرية الفائقة موجودة ولديها قيم صالحة.
test_param_sensitivity_burst
اختبارات أن android.sensor.sensitivity
يطبق بشكل صحيح في الاندفاع. يفحص البيانات الوصفية للمخرجات فقط.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
النجاح: تتسامح بيانات الإخراج مع الخطأ بنسبة أقل من 0.2٪.
test_read_write
اختبارات أن الجهاز يكتب قيم التعريض الضوئي والكسب الصحيحة من خلال قراءة بيانات الالتقاط الأولية مرة أخرى.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
تمرير: تتطابق قيم القراءة والكتابة عبر جميع اللقطات.
اختبار_المستشعرات
اختبارات يقوم الجهاز بالاستعلام عن أحداث المستشعرات وطباعتها للأجهزة التي تعلن عن دعم اندماج المستشعرات. المستشعرات المتوقعة هي مقياس التسارع والجيروسكوب ومقياس المغناطيسية. يعمل هذا الاختبار فقط إذا كانت الشاشة قيد التشغيل ، مما يعني أن الجهاز ليس في وضع الاستعداد.
تم اختبار واجهات برمجة التطبيقات:
تمرير: يتم تلقي الأحداث الخاصة بكل جهاز استشعار.
test_solid_color_test_pattern
اختبارات أن أنماط اختبار الألوان الصلبة يتم إنشاؤها بشكل صحيح لكتم صوت الكاميرا. إذا كان كتم صوت الكاميرا مدعومًا ، فيجب دعم أنماط اختبار الألوان الصلبة. إذا لم يكن كتم صوت الكاميرا مدعومًا ، فسيتم اختبار أنماط اختبار الألوان الصلبة فقط إذا تم الإعلان عن الإمكانية.
إذا كانت صور RAW مدعومة ، يتم اختبار تحديد الألوان أيضًا. الألوان المختبرة هي الأسود والأبيض والأحمر والأزرق والأخضر. بالنسبة للكاميرات التي لا تدعم صور RAW ، يتم اختبار اللون الأسود فقط.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_DATA
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
اجتياز: أنماط الاختبار الصلبة المدعومة هي اللون الصحيح وهناك تباين منخفض في الصورة.
test_test_pattern
اختبر المعلمة android.sensor.testPatternMode
لالتقاط الإطارات لكل نمط اختبار صالح والتحقق من إنشاء الإطارات بشكل صحيح للألوان الصلبة وأشرطة الألوان. يتضمن هذا الاختبار الخطوات التالية:
- يلتقط الصور لجميع أنماط الاختبار المدعومة.
- يقوم بإجراء فحص تصحيح بسيط لنموذج اختبار الألوان الصلبة وأشرطة اللون.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
اجتياز: يتم إنشاء أنماط الاختبار المدعومة بشكل صحيح.
test_test_patterns_2.jpg
test_tonemap_curve
اختبارات تحويل نمط الاختبار من RAW إلى YUV باستخدام مخطط لوني خطي. يتطلب هذا الاختبار android.sensor.testPatternMode = 2
(COLOR_BARS) لإنشاء نمط صورة مثالي لتحويل مخطط الألوان. يضمن أن خط الأنابيب يحتوي على مخرجات لونية مناسبة مع مخطط لوني خطي وإدخال صورة مثالي (يعتمد على test_test_patterns
).
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#SENSOR_TEST_PATTERN_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
التمرير: يبدو YUV و RAW متشابهين مع بعضهما البعض.
test_tonemap_curve_raw_2.jpg
test_tonemap_curve_yuv_2.jpg
test_unified_timestamp
يختبر ما إذا كانت أحداث مستشعر الصورة والحركة في نفس المجال الزمني.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.hardware.Sensor#TYPE_GYROSCOPE
المرور: توجد الطوابع الزمنية للحركة بين الطابعين الزمنيين للصورة.
test_vibration_restriction. الاهتزاز
يختبر ما إذا كان اهتزاز الجهاز يعمل بالشكل المتوقع.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.os.Vibrator
-
android.hardware.camera2.CameraDevice#setCameraAudioRestriction
المرور: لا يهتز الجهاز عند كتم صوته بواسطة واجهة برمجة التطبيقات لتقييد صوت الكاميرا.
مشهد 1
المشهد 1 مخطط رمادي. يجب أن يغطي المخطط الرمادي المركز 30٪ من مجال رؤية الكاميرا. من المتوقع أن يتحدى المخطط الرمادي 3A (التعريض التلقائي ، توازن اللون الأبيض التلقائي ، التركيز التلقائي) بشكل معتدل لأن المنطقة المركزية لا تحتوي على ميزات. ومع ذلك ، يحدد طلب الالتقاط المشهد بأكمله الذي يتضمن ميزات كافية لتقارب 3A.
يمكن اختبار كاميرات RFoV في WFoV أو جهاز اختبار RFoV. إذا تم اختبار كاميرا RFoV في منصة اختبار WFoV ، فسيتم قياس الرسم البياني بمقدار ⅔ لضمان بعض حدود المخطط الرمادي في FoV لمساعدة 3A على التقارب.
مشهد 1: مخطط بالحجم الكامل (يسار). ⅔ مخطط متدرج (يمين).
test_3a
يختبر تقارب 3A مع هدف متوسط التحدي.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
تمرير: تتقارب 3A وقيم 3A التي تم إرجاعها صالحة.
test_ae_af
يختبر خوارزميات التعريض الضوئي التلقائي 3A (AE) والتركيز التلقائي (AF) بشكل فردي.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
تمرير: تتقارب 3A وتكون قيم 3A المُعادة قانونية.
test_ae_precapture_trigger
يختبر آلة حالة التعريض التلقائي عند استخدام مشغل التشغيل المسبق. يلتقط خمسة طلبات يدوية مع تعطيل التعريض التلقائي. يحتوي الطلب الأخير على مشغل AE المسبق ، والذي يجب تجاهله بسبب تعطيل AE.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
تمرير: AE تتقارب.
test_auto_vs_manual
تبدو الاختبارات التي تلتقط اللقطات التلقائية واليدوية متشابهة.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
-
android.hardware.camera2.CaptureResult#TONEMAP_MODE
المرور: يتطابق مكاسب وتحويل توازن اللون الأبيض اليدوي المُبلغ عنه في كل نتيجة التقاط مع estimate
توازن البياض التلقائي من خوارزمية 3A بالكاميرا.
test_auto_vs_manual_auto.jpg
test_auto_vs_manual_wb.jpg
test_auto_vs_manual_manual_wb_tm.jpg
اختبار_أسود_أبيض
اختبارات أن الجهاز ينتج صورًا كاملة بالأبيض والأسود. يتم التقاط صورتين ، الأولى بكسب منخفض للغاية وتعريض قصير ، مما ينتج عنه صورة سوداء ، والثانية بكسب عالٍ للغاية وتعريض ضوئي طويل ، مما ينتج عنه صورة بيضاء.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: لإنتاج صور بالأبيض والأسود. تحتوي القنوات المشبعة للصور البيضاء على قيم RGB تبلغ [255 ، 255 ، 255] مع اختلاف هامش خطأ أقل من 1٪.
![]() | ![]() | |
test_black_white_black.jpg | test_black_white_white.jpg |
test_black_white_plot_means.png
test_burst_sameness_manual
يأخذ 5 دفعات من 50 صورة مع إعداد الالتقاط اليدوي ويتحقق من أنها كلها متطابقة. يمكن استخدام هذا الاختبار لتحديد ما إذا كانت هناك إطارات متفرقة تتم معالجتها بشكل مختلف أو بها عيوب.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR
-
android.hardware.camera2.CameraMetadata#SYNC_MAX_LATENCY_PER_FRAME_CONTROL
Pass: الصور متطابقة بصريًا وفي قيم RGB.
فشل: يُظهر ارتفاعًا أو هبوطًا في مخطط متوسط RGB في بداية كل انفجار
- تبلغ نسبة التسامح 3٪
first_API_level
<30 - التسامح هو 2٪
first_API_level
> = 30
test_burst_sameness_manual_mean.jpg
test_burst_sameness_manual_plot_means.png
نتيجة_الاختبار
اختبارات إرجاع البيانات الصالحة في كائنات CaptureResult
. يقوم بالتقاط تلقائي ، يدوي ، وتلقائي.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
تمرير: البيانات الوصفية صالحة لجميع اللقطات ولا تتسرب الإعدادات اليدوية إلى الالتقاط التلقائي الثاني. يرسم تصحيح تظليل العدسة للقطات.
test_capture_result_plot_lsc_auto_ch0.png
test_crop_region_raw
اختبارات أن تدفقات RAW غير قابلة للاقتصاص.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureResult#SCALER_CROP_REGION
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
تمرير: يتم اقتصاص صور YUV في المنتصف ولكن ليس صور RAW.
test_crop_region_raw_comp_raw_crop.jpg
test_crop_region_raw_comp_raw_full.jpg
test_crop_region_raw_comp_yuv_crop.jpg
test_crop_region_raw_yuv_full.jpg
test_crop_regions
الاختبارات التي تعمل بها مناطق المحاصيل. يلتقط صورة كاملة وينشئ تصحيحات من 5 مناطق مختلفة (زوايا ومركز). يلتقط الصور مع مجموعة اقتصاص للمناطق الخمس. يقارن التصحيح وقيم صورة الاقتصاص.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
تمرير: صورة المنطقة التي تم اقتصاصها تطابق التصحيح الذي يتوافق مع صورة الاقتصاص.
test_dng_noise_model
يتحقق من صحة معلمات نموذج DNG الأولي. تصور المؤامرة التباين المقاس للرقعة المركزية للبطاقة الرمادية في اللقطات الأولية التي تم التقاطها عبر مجموعة من الحساسيات ، وتقارن هذه القيم مع التباين المتوقع في كل حساسية بواسطة نموذج ضوضاء DNG في الكاميرا HAL (استنادًا إلى تم إرجاع معلمات O و S في كائنات نتيجة الالتقاط). لمزيد من التفاصيل حول نموذج ضوضاء DNG ، قم بتنزيل المستند التالي على DNG Noise Model .
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CaptureResult#SENSOR_NOISE_PROFILE
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
المرور: معلمات نموذج DNG الخام صحيحة. تتوافق قيم RGB المتوقعة مع قيم RGB الفعلية المقاسة.
test_dng_noise_model_plog.png
test_ev_compensation_advanced
اختبارات تطبيق تعويض قيمة التعريض (EV). يزيد الاختبار من التعرض في ثماني خطوات ، ويتحقق من السطوع المقاس مقابل السطوع المتوقع. يتم حساب القيم المتوقعة من سطوع الصورة مع عدم تطبيق تعويض EV وستصبح القيمة المتوقعة مشبعة إذا تجاوزت القيم المحسوبة نطاق قيمة الصورة الفعلية. يفشل الاختبار إذا كانت القيم المتوقعة والقيم المقاسة غير متطابقة أو إذا تعرضت الصور للتعرض المفرط خلال خمس خطوات.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
-
android.hardware.camera2.CaptureResult#TONEMAP_MODE
تمرير: تُظهر الصور زيادة التعريض الضوئي دون الإفراط في التعريض الضوئي خلال خمس خطوات.
test_ev_compensation_advanced_plot_means.png
test_ev_compensation_basic
اختبارات تطبيق تعويض EV باستخدام نطاق تم إنشاؤه باستخدام CONTROL_AE_COMPENSATION_STEP
. يتم التقاط ثمانية إطارات في كل قيمة تعويض.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
-
android.hardware.camera2.CaptureResult#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
التمرير: يلتقط زيادة في الإضاءة مع إعداد تعويض EV المتزايد ، والإطارات الثمانية التي تم التقاطها لكل إعداد تعويض EV لها قيم إضاءة ثابتة.
test_ev_compensation_basic.png
test_exposure
الاختبارات التي تتحقق من حدوث تعريض ضوئي ثابت مع اختلاف ISO ووقت التعرض. يلتقط سلسلة من اللقطات التي تم اختيارها من ISO ووقت التعرض لموازنة بعضها البعض. يجب أن يكون للنتائج نفس السطوع ، ولكن على التسلسل يجب أن تصبح الصورة أكثر تشويشًا. يتحقق من أن قيم متوسط وحدات البكسل قريبة من بعضها البعض. يضمن عدم تثبيت الصور على 0 أو 1 (مما يجعلها تبدو كخطوط مسطحة). يمكن أيضًا تشغيل الاختبار باستخدام صور RAW عن طريق تعيين علامة debug
في ملف التكوين الخاص بك.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
تمرير: الصور لها نفس السطوع ، ولكنها تصبح أكثر ضوضاء مع ISO أعلى. تكون مستويات RGB مسطحة عندما تكون قيمة التعريض الضوئي ISO * ثابتة على مساحة الكسب المختبرة.
test_exposure_plot_means.png
![]() | ![]() | |
test_exposure_mult = 1.00.jpg | test_exposure_mult = 64.00.jpg |
test_jpeg
تبدو الاختبارات التي تم فيها تحويل صور YUV وصور الجهاز JPEG متشابهة. يأخذ الاختبار مركز 10٪ من الصورة ويحسب قيمة RGB ، ويتحقق من مطابقتها.
تم اختبار واجهات برمجة التطبيقات:
تمرير: متوسط فرق RGB بين كل صورة أقل من 3٪.
![]() | ![]() | |
test_jpeg_fmt = jpg.jpg | test_jpeg = fmt = yuv.jpg |
اختبار الإغلاق
تختبر أن الإعدادات (التعريض الضوئي والكسب) تلتصق بالإطار الأيمن للكاميرات FULL
و LEVEL_3
. يلتقط سلسلة من اللقطات باستخدام طلبات متتالية ، مع تغيير معلمات طلب الالتقاط بين اللقطات. يتحقق من أن الصور لها الخصائص المتوقعة.
تم اختبار واجهات برمجة التطبيقات:
اجتياز: الصور [2 ، 3 ، 6 ، 8 ، 10 ، 12 ، 13] زادت من مستوى ISO أو التعريض الضوئي وتظهر بوسائل RGB أعلى في test_latching_plot_means.png
.
![]() | ![]() | ![]() | |
test_latching_i = 00.jpg | test_latching_i = 01.jpg | test_latching_i = 02.jpg | |
![]() | ![]() | ![]() | |
test_latching_i = 03.jpg | test_latching_i = 04.jpg | test_latching_i = 05.jpg | |
![]() | ![]() | ![]() | |
test_latching_i = 06.jpg | test_latching_i = 07.jpg | test_latching_i = 08.jpg | |
![]() | ![]() | ![]() | |
test_latching_i = 09.jpg | test_latching_i = 10.jpg | test_latching_i = 11.jpg | |
![]() | |||
test_latching_i = 12.jpg |
test_latching_plot_means.png
اختبار الخطية
اختبارات أن معالجة الجهاز يمكن أن تنعكس إلى وحدات البكسل الخطية. يلتقط سلسلة من اللقطات مع توجيه الجهاز إلى هدف موحد.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#BLACK_LEVEL_LOCK
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
تمرير: يجب أن تزيد قيم R و G و B خطيًا مع زيادة الحساسية.
test_linearity_plot_means.png
test_locked_burst
اختبارات قفل 3A وانفجار YUV (باستخدام الإعداد التلقائي). تم تصميم هذا الاختبار لاجتيازه حتى على الأجهزة المحدودة التي لا تحتوي على MANUAL_SENSOR
أو PER_FRAME_CONTROLS
. يتحقق الاختبار من تناسق صورة YUV أثناء فحص معدل الإطارات في CTS.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
التمرير: تبدو اللقطات متسقة.
test_locked_burst_frame
test_locked_burst_frame1.jpg
test_locked_burst_frame2.jpg
test_multi_camera_match
اختبارات لمعرفة ما إذا كانت الكاميرات المتعددة على الأجهزة تعطي قيم RGB مماثلة لرقعة رمادية.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.CaptureRequest#LENS_FOCAL_LENGTH
تمرير: تنتج الكاميرات المختلفة قيم RGB متشابهة لنفس الرقعة الرمادية.
test_multi_camera + match_yuv_fl = 4.38.jpg
اختبار_بارام_لون_تصحيح
اختبارات تطبيق معلمات android.colorCorrection.*
عند التعيين. يأخذ لقطات ذات قيم تحويل واكتساب مختلفة ، ويختبر أنها تبدو مختلفة بشكل مماثل. يتم اختيار التحويل والمكاسب لجعل الناتج أحمر أو أزرق بشكل متزايد. يستخدم خريطة لونية خطية. تعيين درجة اللون هو تقنية مستخدمة في معالجة الصور لتعيين مجموعة من الألوان إلى مجموعة أخرى لتقريب مظهر صور النطاق الديناميكي العالي في وسيط له نطاق ديناميكي محدود أكثر.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
تمرير: تعزز قيم R و B وفقًا للتحول.
test_param_color_correction_plot_means.png
* المحور السيني هو طلبات الالتقاط: 0 = الوحدة ، 1 = التعزيز الأحمر ، 2 = التعزيز الأزرق
test_param_color_correction_req = 0.jpg
test_param_color_correctness_req = 1.jpg (تعزيز R)
test_param_color_correction_req = 2.jpg (B دفعة)
test_param_exposure_time
اختبارات تطبيق المعلمة android.sensor.exposureTime
.
تم اختبار واجهات برمجة التطبيقات:
تمرير: كل لقطة أكثر سطوعًا من اللقطة السابقة.
test_param_exposure_time_frame
test_param_exposure_time_plot.png
test_param_flash_mode
اختبارات تطبيق المعلمة android.flash.mode
. يضبط التعريض يدويًا على الجانب المظلم ، بحيث يكون واضحًا ما إذا كان الفلاش قد تم إطلاقه أم لا ، ويستخدم مخططًا لونيًا خطيًا. للتحقق من المركز مع صورة التجانب لمعرفة ما إذا كان هناك تدرج كبير تم إنشاؤه للتحقق مما إذا كان الفلاش قد تم إطلاقه أم لا.
تم اختبار واجهات برمجة التطبيقات:
تمرير: يحتوي مركز صورة التجانب على تدرج لوني كبير مما يعني أن الفلاش بدأ.
test_param_flash_mode_1.jpg
test_param_flash_mode_1_tile.jpg
test_param_flash_mode_2.jpg
test_param_flash_mode_2_tile.jpg
test_param_noise_reduction
اختبارات أن المعلمة android.noiseReduction.mode
يتم تطبيقها بشكل صحيح عند تعيينها. يلتقط الصور بالكاميرا ذات الإضاءة الخافتة. يستخدم كسبًا تناظريًا عاليًا لضمان أن الصورة الملتقطة صاخبة. يلتقط ثلاث صور لإيقاف تشغيل NR و "سريع" و "جودة عالية". يلتقط أيضًا صورة ذات كسب منخفض وإيقاف تشغيل NR ، ويستخدم تباين هذا كخط أساسي. كلما زادت نسبة الإشارة إلى الضوضاء (SNR) ، كانت جودة الصورة أفضل.
تم اختبار واجهات برمجة التطبيقات:
التمرير: تختلف نسبة الإشارة إلى الضوضاء (SNR) باختلاف أوضاع تقليل الضوضاء وتتصرف بشكل مشابه للرسم البياني أدناه.
test_param_noise_reduction_plot_SNRs.png
0: إيقاف ، 1: سريع ، 2: عالي الجودة ، 3: دقيقة ، 4: ZSL
test_param_noise_reduction_high_gain_nr = 0.jpg
test_param_noise_reduction_high_gain_nr = 1.jpg
test_param_noise_reduction_high_gain_nr = 2.jpg
test_param_noise_reduction_high_gain_nr = 3.jpg
test_param_noise_reduction_low_gain.jpg
test_param_sensitivity
اختبارات تطبيق android.sensor.sensitivity
. يزيد الاختبار الحساسية في 5 خطوات مع تعريض ضوئي ثابت لكل لقطة.
تم اختبار واجهات برمجة التطبيقات:
تمرير: RGB يعني المركز بنسبة 10٪ يصبح أكثر سطوعًا مع زيادة الحساسية.
test_param_sensitivity_iso = 0055.jpg
test_param_sensitivity_iso = 1819.jpg
test_param_sensitivity_iso = 3583.jpg
test_param_sensitivity_iso = 5347.jpg
test_param_sensitivity_iso = 7111.jpg
test_param_sensitivity_plot.png
test_param_shading_mode
اختبارات تطبيق المعلمة android.shading.mode
.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
Pass: يتم تبديل أوضاع التظليل ويتم تعديل خرائط تظليل العدسة كما هو متوقع.
test_param_shading_mode_ls_maps_mode_0_loop_0.png
test_param_shading_mode_ls_maps_mode_1_loop_0.png
test_param_shading_mode_ls_maps_mode_2_loop_0.png
test_param_tonemap_mode
اختبارات تطبيق المعلمة android.tonemap.mode. يطبق منحنيات خريطة لونية مختلفة على كل قناة R و G و B ويتحقق من تعديل الصور المخرجة بالشكل المتوقع. يتكون هذا الاختبار من اختبارين ، اختبار 1 واختبار 2.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_CONTRAST_MODE
-
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_FAST
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
يمر:
- test1: كلتا الصورتين لهما خريطة لونية خطية ، لكن n = 1 لها تدرج أكثر حدة. تكون القناة G (الخضراء) أكثر سطوعًا للصورة n = 1.
- test2: نفس الخريطة النغمية ، لكن بطول مختلف. الصور هي نفسها.
![]() | ![]() | |
test_param_tonemap_mode_n = 0.jpg | test_param_tonemap_mode_n = 1.jpg |
test_post_raw_sensitivity_boost
يتحقق بعد زيادة حساسية RAW. يلتقط مجموعة من صور RAW و YUV بحساسية مختلفة ، وينشر تركيبة تعزيز حساسية RAW ويتحقق مما إذا كان متوسط بكسل الإخراج يطابق إعدادات الطلب.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
تمرير: تصبح صور RAW أكثر قتامة مع زيادة التعزيز بينما تظل صور YUV ثابتة في السطوع
test_post_raw_sensitivity_boost_raw_s = 3583_boost = 0100.jpg
test_post_raw_sensitivity_boost_raw_s = 1792_boost = 0200.jpg
test_post_raw_sensitivity_boost_raw_s = 0896_boost = 0400.jpg
test_post_raw_sensitivity_boost_raw_s = 0448_boost = 0800.jpg
test_post_raw_sensitivity_boost_raw_s = 0224_boost = 1600.jpg
test_post_raw_sensitivity_boost_raw_s = 0112_boost = 3199.jpg
test_post_raw_sensitivity_boost_raw_plot_means.png
test_post_raw_sensitivity_boost_yuv_s = 0112_boost = 3199.jpg
test_post_raw_sensitivity_boost_yuv_s = 0448_boost = 0800.jpg
test_post_raw_sensitivity_boost_yuv_s = 0896_boost = 0400.jpg
test_post_raw_sensitivity_boost_yuv_s = 1792_boost = 0200.jpg
test_post_raw_sensitivity_boost_yuv_s = 3585_boost = 0100.jpg
test_post_raw_sensitivity_boost_yuv_plot_means.png
test_raw_burst_sensitivity
يلتقط مجموعة من الصور الأولية ذات المكاسب المتزايدة ويقيس التشويش. يلتقط الخام فقط ، في انفجار.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
تمرير: تكون كل لقطة أكثر ضوضاءً من اللقطة السابقة ، حيث يتزايد الاكتساب.
يستخدم تباين خلية شبكة إحصائيات المركز.
test_raw_burst_sensitivity_variance.png
test_raw_exposure
يلتقط مجموعة من الصور الأولية مع زيادة وقت التعرض ويقيس قيم البكسل.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
المرور: زيادة ISO (الكسب) تجعل البكسل أكثر حساسية للضوء ، وبالتالي تتحرك المؤامرة نحو اليسار.
test_raw_exposure_s = 55.png
(10⁰ تساوي 1 مللي ثانية ، 10¹ تساوي 10 مللي ثانية ، 10⁻¹ تساوي 0.1 مللي ثانية)
test_raw_exposure_s = 132.png
test_raw_exposure_s = 209.png
test_raw_exposure_s = 286.png
test_raw_exposure_s = 363.png
test_raw_exposure_s = 440.png
test_raw_sensitivity
يلتقط مجموعة من الصور الأولية ذات الحساسية المتزايدة ويقيس التشويش (التباين) في المركز بنسبة 10٪ من الصورة. الاختبارات تشير إلى أن كل لقطة بها ضوضاء أكثر من السابقة.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
تمرير: يزيد التباين مع كل لقطة.
test_raw_sensitivity_variance.png
test_reprocess_noise_reduction
الاختبارات التي يتم تطبيقها على android.noiseReduction.mode
لطلبات إعادة المعالجة. يلتقط الصور المعاد معالجتها بالكاميرا ذات الإضاءة الخافتة. يستخدم كسبًا تناظريًا عاليًا لضمان أن الصورة الملتقطة صاخبة. يلتقط ثلاث صور معاد معالجتها ، لإيقاف تشغيل NR ، و "سريع" ، و "جودة عالية". يلتقط صورة معاد معالجتها بكسب منخفض وإيقاف تشغيل NR ، ويستخدم تباين هذا كخط أساسي.
تم اختبار واجهات برمجة التطبيقات:
تمرير: FAST> = OFF، HQ> = FAST، HQ >> OFF
مؤامرة نموذجية SNR مقابل NR_MODE
test_tonemap_sequence
يختبر سلسلة من اللقطات ذات منحنيات مختلفة لخريطة الألوان. يلتقط 3 لقطات يدوية باستخدام مخطط لوني خطي. يلتقط 3 لقطات يدوية باستخدام خريطة اللون الافتراضية. يحسب دلتا بين كل زوج من الإطارات المتتالية.
تم اختبار واجهات برمجة التطبيقات:
تمرير: هناك 3 إطارات متطابقة متبوعة بمجموعة مختلفة من 3 إطارات متطابقة.
test_tonemap_sequence_i = 0.jpg
test_tonemap_sequence_i = 1.jpg
test_tonemap_sequence_i = 2.jpg
test_tonemap_sequence_i = 3.jpg
test_tonemap_sequence_i = 4.jpg
test_tonemap_sequence_i = 5.jpg
test_yuv_jpeg_all
الاختبارات التي أبلغت عن جميع الأحجام والتنسيقات لالتقاط الصور. يستخدم طلبًا يدويًا مع مخطط لوني خطي بحيث تبدو YUV و JPEG متماثلين عند التحويل بواسطة وحدة image_processing_utils
. لا يتم حفظ الصور افتراضيًا ، ولكن يمكن حفظها عن طريق تمكين debug_mode
.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
اجتياز: تحتوي جميع مراكز الصور على فرق أقصى RMS (قيمة الجذر التربيعي للإشارة) في الصور المحولة إلى RGB بنسبة 3٪ من أعلى دقة لصورة YUV.
test_yuv_jpeg_all.png
test_yuv_plus_dng
اختبارات أن الأحجام والتنسيقات المبلغ عنها لالتقاط الصور تعمل.
تم اختبار واجهات برمجة التطبيقات:
اجتياز: يكمل الاختبار ويعيد الصور المطلوبة.
test_yuv_plus_dng.jpg
test_yuv_plus_jpeg
اختبارات التقاط إطار واحد كمخرجات YUV و JPEG. يستخدم طلبًا يدويًا مع مخطط لوني خطي بحيث تبدو YUV و JPEG متماثلين عند التحويل بواسطة وحدة image_processing_utils
.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
المرور: صور YUV و JPEG متشابهة ولديها فرق أقل من 1٪ RMS (قيمة الجذر التربيعي للإشارة).
![]() | ![]() | |
test_yuv_plus_jpg_jpg.jpg | test_yuv_plus_jpeg_yuv.jpg |
test_yuv_plus_raw
اختبارات التقاط إطار واحد كمخرجات RAW و YUV. يستخدم طلبًا يدويًا مع مخطط لوني خطي لذلك من المتوقع أن تكون RAW و YUV متماثلتين. يقارن مركز الصور المحولة إلى RGB بنسبة 10٪. سجلات android.shading.mode
.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
المرور: صور YUV و JPEG متشابهة ولديها فرق أقل من 3.5٪ RMS (قيمة الجذر التربيعي للإشارة).
![]() | ![]() | |
test_yuv_plus_raw_shading = 1_raw.jpg | test_yuv_plus_raw_shading = 1_yuv.jpg |
test_yuv_plus_raw10
اختبارات التقاط إطار واحد كمخرجات RAW10 و YUV. يستخدم طلبًا يدويًا مع مخطط لوني خطي لذلك من المتوقع أن تكون RAW و YUV متماثلتين. يقارن مركز الصور المحولة إلى RGB بنسبة 10٪. سجلات android.shading.mode
.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.hardware.graphics.ImageFormat#RAW10
المرور: صور RAW10 و YUV متشابهة ولديها فرق أقل من 3.5٪ RMS (قيمة الجذر التربيعي للإشارة).
![]() | ![]() | |
test_yuv_plus_raw10_shading = 1_raw.jpg | test_yuv_plus_raw10_shading = 1_yuv.jpg |
test_yuv_plus_raw12
اختبارات تلتقط إطارًا واحدًا كمخرجات RAW12 و YUV. يستخدم طلبًا يدويًا مع مخطط لوني خطي لذلك من المتوقع أن تكون RAW و YUV متماثلتين. يقارن مركز الصور المحولة إلى RGB بنسبة 10٪. سجلات android.shading.mode
.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.hardware.graphics.ImageFormat#RAW12
المرور: صور RAW12 و YUV متشابهة ولديها فرق أقل من 3.5٪ RMS (قيمة الجذر التربيعي للإشارة).
![]() | ![]() | |
test_yuv_plus_raw12_shading = 1_raw.jpg | test_yuv_plus_raw12_shading = 1_yuv.jpg |
مشهد 2_a
يحتوي scene2_a على ثلاثة وجوه بخلفية رمادية وملابس محايدة. يتم اختيار الوجوه بحيث تحتوي على مجموعة واسعة من درجات ألوان البشرة.
مشهد 2_a
test_auto_flash
اختبارات تشغيل الفلاش التلقائي في مشهد مظلم. يتحقق من تشغيل الفلاش التلقائي عن طريق التحقق من أن وسط صورة التجانب به تدرج كبير. لتشغيل الفلاش التلقائي ، يجب إيقاف تشغيل الجهاز اللوحي والمصابيح الموجودة في جهاز الاختبار. يتم إيقاف تشغيل الجهاز اللوحي من خلال الاختبار ، ويمكن إطفاء الأنوار تلقائيًا باستخدام وحدة تحكم Arduino. يجب أن يكون المشهد مظلمًا تمامًا حتى يعمل الاختبار بشكل صحيح. على هذا النحو ، يجب تغطية الفتحة الخلفية للجهاز اللوحي بالكامل بلوح المشهد ، ويجب تغطية الفتحة الأمامية بفتحة وهاتف DUT لمنع الضوء الشارد من دخول منصة الحفر.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
تمرير: يحتوي مركز صورة التجانب على تدرج كبير مما يعني أن الفلاش التلقائي بدأ.
اختبار_تأثيرات
يلتقط إطارًا لتأثيرات الكاميرا المدعومة ويتحقق مما إذا تم إنشاؤها بشكل صحيح. يتحقق الاختبار فقط من التأثيرات OFF
و MONO
، ولكنه يحفظ الصور لجميع التأثيرات المدعومة.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS
-
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
Pass: لالتقاط صورة المشهد مع OFF
تشغيل التأثيرات وصورة أحادية اللون مع ضبط التأثيرات على MONO
.
test_effects_MONO.jpg
test_format_combos
يختبر مجموعات مختلفة من تنسيقات الإخراج.
تم اختبار واجهات برمجة التطبيقات:
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
android.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()
android.hardware.camera2.CameraCaptureSession#captureBurst()
تمرير: يتم التقاط جميع المجموعات بنجاح.
test_jpeg_quality
تختبر جودة ضغط الكاميرا بتنسيق JPEG. خطوة صفات JPEG من خلال android.jpeg.quality
وتضمن تغيير جداول التكميم بشكل صحيح.
تم اختبار واجهات برمجة التطبيقات:
النجاح: مصفوفة التكميم تتناقص مع زيادة الجودة. (تمثل المصفوفة عامل القسمة.)
متوسط مصفوفة Pixel 4 للكاميرا الخلفية luma / chroma DQT مقابل جودة JPEG
مثال اختبار فشل
لاحظ أنه بالنسبة للصور منخفضة الجودة (jpeg.quality <50) ، لا توجد زيادة في الضغط في مصفوفة التقسيم.
test_num_faces
اختبارات كشف الوجه.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
تمرير: يجد ثلاثة وجوه.
test_num_faces_fd_mode_1.jpg
مشهد 2_ ب
test_auto_per_frame_control
اختبارات خصائص PER_FRAME_CONTROL
لطلبات الالتقاط التلقائي.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
-
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
تمرير: جميع خصائص PER_FRAME_CONTROL
موجودة.
test_auto_per_frame_control_frame_1.jpg
test_auto_per_frame_control_frame_10.jpg
test_auto_per_frame_control_frame_29.jpg
test_auto_per_frame_control_plot.png
test_num_faces
اختبارات اكتشاف الوجه مع زيادة تنوع لون البشرة في مشاهد الوجه.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
تمرير: يجد 3 وجوه.
test_num_faces_fd_mode_1.jpg
test_yuv_jpg_capture_sameness
يلتقط صورتين باستخدام أكبر تنسيقات YUV و JPEG الشائعة بنفس نسبة العرض إلى الارتفاع مثل تنسيق JPEG الأكبر الذي لا يتجاوز دقة 1920 × 1440. يضبط jpeg.quality
على 100 ويلتقط طلب سطح مزدوج. يحول كلتا الصورتين إلى مصفوفات RGB ويحسب اختلاف الجذر التربيعي ثلاثي الأبعاد (RMS) بين الصورتين.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES
-
android.hardware.camera2.CaptureRequest#JPEG_QUALITY
-
android.graphics.ImageFormat#JPEG
المرور: صور YUV و JPEG متشابهة ولديها فرق أقل من 1٪ RMS (قيمة الجذر التربيعي للإشارة).
مشهد 2 ج
test_num_faces
اختبارات اكتشاف الوجه مع زيادة تنوع لون البشرة في مشاهد الوجه.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
تمرير: يجد 3 وجوه.
test_num_faces_fd_mode_1.jpg
test_jpeg_capture_perf_class
اختبارات زمن انتقال التقاط JPEG لفئة أداء S كما هو محدد في القسم 2.2.7.2 الكاميرا في CDD.
تمرير: يجب أن يكون لديك camera2 JPEG التقاط زمن انتقال أقل من 1000 مللي ثانية لدقة 1080 بكسل كما تم قياسه بواسطة اختبار أداء كاميرا CTS في ظل ظروف إضاءة ITS (3000K) لكلا الكاميرتين الأساسيتين.
test_camera_launch_perf_class
اختبارات زمن انتقال تشغيل الكاميرا لفئة الأداء S كما هو محدد في القسم 2.2.7.2 الكاميرا في CDD.
المرور: يجب أن يكون وقت بدء تشغيل camera2 (فتح الكاميرا لإطار المعاينة الأول) أقل من 600 مللي ثانية كما تم قياسه بواسطة اختبار أداء كاميرا CTS في ظل ظروف إضاءة ITS (3000K) لكلا الكاميرتين الأساسيتين.
مشهد 2_ د
test_num_faces
اختبارات اكتشاف الوجه مع زيادة تنوع لون البشرة في مشاهد الوجه.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
تمرير: يجد 3 وجوه.
مشهد 2_e
test_continuous_picture
يتم التقاط 50 إطارًا بدقة VGA مع إعداد طلب الالتقاط أولاً android.control.afMode = 4 (CONTINUOUS_PICTURE).
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AF_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
تمرير: يستقر نظام 3A بنهاية التقاط 50 إطارًا.
test_num_faces
اختبارات اكتشاف الوجه مع زيادة تنوع لون البشرة في مشاهد الوجه.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
تمرير: يجد 3 وجوه.
المشهد 3
يستخدم Scene3 مخطط ISO12233 ، وتستخدم معظم الاختبارات طريقة مستخرج الرسم البياني للعثور على المخطط في المشهد. لهذا السبب ، لا تحتوي معظم الصور المحفوظة على حدود مثل صور المشاهد 1 أو 2 أو 4 ، ولكن فقط المخطط.
test_3a_ تناسق
اختبارات تناسق 3A.
تم اختبار واجهات برمجة التطبيقات:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
تمرير: تتقارب 3A من أجل التعريض الضوئي ، والكسب ، و awb (توازن البياض التلقائي) ، و fd (مسافة التركيز البؤري) ثلاث مرات ضمن التسامح.
test_edge_en التحسين
اختبارات أن المعلمة android.edge.mode
قد تم تطبيقها بشكل صحيح. يلتقط الصور غير المعاد معالجتها لكل وضع حافة ويعيد حدة الصورة الناتجة وبيانات التعريف الناتجة عن الالتقاط. يعالج طلب الالتقاط مع وضع حافة معين ، والحساسية ، ووقت التعرض ، ومسافة التركيز ، ومعلمة سطح الإخراج.
Pass: وضع HQ
(2) أكثر حدة من وضع OFF
(0). الوضع FAST
(1) أكثر حدة من وضع OFF
. وضع HQ
أكثر حدة أو يساوي وضع FAST
.
تم اختبار واجهات برمجة التطبيقات:
معلمات الكاميرا المتأثرة:
-
EDGE_MODE
test_edge_enhancement_edge = 0.jpg
test_edge_enhancement_edge = 1.jpg (الوضع السريع)
test_edge_enhancement_edge=2.jpg (high quality mode)
test_flip_mirror
Tests if image is properly oriented as per CDD section 7.5.2 Front-Facing Camera [C-1-5] .
Mirrored, flipped, or rotated images can be identified by the diamond feature near the center.
Pass: Image isn't flipped, mirrored or rotated.
test_flip_mirror_scene_patch.jpg
test_lens_movement_reporting
Tests if the lens movement flag is properly reported. Captures a burst of 24 images with the first 12 frames at the optimum focus distance (as found by 3A) and the last 12 frames at the minimum focus distance. Around frame 12, the lens moves causing the sharpness to drop. The sharpness eventually stabilize as the lens moves to the final position. The lens movement flag should be asserted in all frames where the sharpness is intermediate to sharpness in the first 10 frames with the lens stationary at optimum focal distance, and the final 10 frames where the lens is stationary in the minimum focal distance. The exact frame the lens moves isn't important: what is checked is that the movement flag is asserted when the lens is moving.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#LENS_STATE
-
android.hardware.camera2.CaptureResult#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
Pass: Lens movement flag is True
in the frame with sharpness change.
test_reprocess_edge_enhancement
Tests if supported reprocess methods for edge enhancement work properly. Processes a capture request with a given reprocess edge mode and compares different modes to capture with reprocess edge modes disabled.
APIs tested:
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
Pass: Sharpness for the different edge modes is correct. HQ
(mode 2) is sharper than OFF
(mode 0), and improvement between different modes is similar.
test_reprocess_edge_enhancement_plot.png
scene4
Scene4 consists of a black circle on a white background inside a square.
scene4
test_aspect_ratio_and_crop
Takes pictures of a circle inside of a square over all formats. Verifies that the aspect ratio of the circle doesn't change, the cropped images keep the circle in center, and the circle size doesn't change for a constant format or with different resolution (field of view check).
APIs tested:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Pass: Images aren't stretched, the center of images don't differ by more than 3%, and the maximum possible FOV (field of view) is preserved.
test_multi_camera_alignment
Tests the multi camera system parameters related to camera spacing. Using the multi-camera physical sub-cameras, takes a picture with one of the physical cameras. Finds the circle center. Projects the circle center to the world coordinates for each camera. Compares the difference between the cameras' circle centers in world coordinates. Reprojects the world coordinate back to pixel coordinates and compares against originals as a validity check. Compares the circle sizes checking if the focal lengths of the cameras are different.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
-
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
-
android.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATION
-
android.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATION
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
-
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
Pass: Focal lengths and circles sizes are consistent.
test_preview_stabilization_fov
Checks the supported preview sizes to ensure the FoV is cropped appropriately. The test captures two videos, one with preview stabilization ON
, and another with preview stabilization OFF
. A representative frame is selected from each video, and analyzed to ensure that the FoV changes in the two videos are within spec.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: The circle aspect ratio remains about constant, the center location of the circle remains stable, and the size of circle changes no more that 20%. ie the FOV changes at most 20%
test_video_aspect_ratio_and_crop
Takes videos of a circle inside of a square over all video formats. Extracts the key frames, and verifies the aspect ratio of the circle doesn't change, the cropped images keep the circle in center, and the circle size doesn't change for a constant format or with different resolution (field of view check).
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Video frames aren't stretched, the center of frames don't differ by more than 3%, and the maximum possible FoV (field of view) is preserved.
scene5/diffuser
test_lens_shading_and_color_uniformity
Tests that the lens shading correction is applied appropriately, and color of a monochrome uniform scene is evenly distributed. Performs this test on a YUV frame with auto 3A. Lens shading is evaluated based on the y channel. Measures the average y value for each sample block specified, and determines pass or fail by comparing with the center y value. The color uniformity test is evaluated in r/g and b/g space.
APIs tested:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Pass: At the specified radius of the image, the variance of r/g and b/g value must be less than 20% to pass the test.
scene6
Scene6 is a grid of small circles with a square in one corner to indicate orientation. The small circles are needed to test zoom function over a large range.
scene6
test_zoom
Tests the camera zoom behavior. Takes captures over the zoom range and checks if the circles get bigger as the camera zooms in.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Pass: Relative size of captured circle is accurate against requested zoom ratio to ensure camera is zooming correctly.
test_zoom to find the contour of the circle closest to the center.
sensor_fusion
Sensor fusion tests require specific phone movement in front of a checkerboard pattern. The sensor_fusion
tests can be automated with the Sensor Fusion Box .
Image of checkerboard
test_multi_camera_frame_sync
Tests that frame timestamps captured by logical camera are within 10 ms by computing angles of squares within the checkerboard to determine the timestamp.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.params.OutputConfiguration#setPhysicalCameraId()
Pass: Angle between images from each camera doesn't change appreciably as phone is rotated.
test_preview_stabilization
Tests that stabilized preview video rotates less than gyroscope.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Max angle rotation over frames is less than 70% of gyroscope rotation.
The following are sample videos with and without stabilization.
Sample video with stabilization
Sample video without stabilization
test_sensor_fusion
Tests the timestamp difference between the camera and the gyroscope for AR and VR applications. Phone is rotated 90 degrees 10 times in front of the checkerboard pattern. Motion is about 2 s round trip. This test is skipped if no gyroscope is included or if the timestamp source REALTIME
parameter is not enabled.
The test_sensor_fusion
test generates a number of plots. The two most important plots for debugging are:
test_sensor_fusion_gyro_events
: Shows the gyroscope events for the phone during the test. Movement in the x and y direction implies the phone isn't securely mounted on the mounting plate, reducing the probability of the test passing. The number of cycles in the plot depends on the write speed for saving frames.test_sensor_fusion_gyro_events
test_sensor_fusion_plot_rotations
: Shows the alignment of the gyroscope and camera events. This plot must show matching movement between camera and gyroscope to +/-1 ms.test_sensor_fusion_plot_rotations
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LENS_FACING
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
-
android.hardware.camera2.CameraMetadata#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureRequest#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Pass: Camera and gyroscope timestamps' offset is less than 1 ms as per CDD section 7.3.9 High Fidelity Sensors [C-2-14] .
test_video_stabilization
Tests that stabilized video rotates less than gyroscope.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Max angle rotation over frames is less than 60% of gyroscope rotation.
The following are sample videos with and without stabilization.
Sample video with stabilization
Sample video without stabilization