דף זה מספק רשימה מקיפה של הבדיקות תחת חבילת בדיקת התמונות של המצלמה (ITS), המהווה חלק מאימות ה-Android Compatibility Test Suite (CTS). בדיקות ITS הן בדיקות פונקציונליות, כלומר הן אינן מודדות את איכות התמונה, אלא שכל פונקציות המצלמה המפורסמות פועלות כמצופה. מסמך זה מאפשר למפתחים ולבודקים להבין מה הבדיקות הבודדות עושות וכיצד לנפות באגים בכשלים בבדיקות.
בדיקות ITS של מצלמה לפי מאפייני מצלמה נדרשים, רמת API ורמת ביצועי מדיה (MPC). עבור רמת API, ITS משתמש ro.product.first_api_level
כדי לשער בדיקות שנוספו ברמת API ספציפית, הבודקות חוויות משתמש שליליות לגבי פונקציונליות ברמות API נמוכות יותר. ITS משתמש ro.vendor.api_level
כדי לשער בדיקות עבור תכונות שנוספו ברמת API ספציפית הדורשות יכולת חומרה חדשה. אם ro.odm.build.media_performance_class
מוגדר עבור התקן, ITS דורש ביצוע בדיקות ספציפיות בהתאם לרמת MPC.
הבדיקות מקובצות לפי סצנה באופן הבא:
- scene0 : לכידת מטא נתונים, ריצוד, גירוסקופ, רטט
- סצנה 1 : חשיפה, רגישות, פיצוי EV, YUV לעומת JPEG/RAW
- סצנה 2 : זיהוי פנים, בדיקות הדורשות סצנות צבע או חושך מוחלט
- סצנה 3 : שיפור קצה, תנועת עדשה
- סצנה 4 : יחס גובה-רוחב, חיתוך, שדה ראייה
- סצנה 5 : הצללת עדשה
- סצנה6 : זום
- scene_extensions : הרחבות מצלמה
- sensor_fusion : היסט תזמון מצלמה/גירוסקופ
ראה סעיפים בודדים לתיאור של כל סצנה.
סצנה0
בדיקות Scene0 אינן דורשות מידע סצינה ספציפי. עם זאת, הטלפון חייב להיות נייח לצורך בדיקת גירוסקופ ורטט.
test_burst_capture
מאמת שכל צינור הלכידה יכול לעמוד בקצב של הלכידה בגודל מלא וזמן המעבד.
ממשקי API שנבדקו:
מעבר: מצלם פרץ של תמונות בגודל מלא והמצלמה מהירה מספיק כדי למנוע פסק זמן.
test_capture_result_dump
בודק שתוצאת לכידה מוחזרת מלכידה ידנית ולאחר מכן זורק אותה.
ממשקי API שנבדקו:
מעבר: משלים את הלכידה ומשליך את תוצאות הלכידה.
test_gyro_bias
בודק אם לג'ירו יש תפוקה יציבה כשהמכשיר נייח. הנתונים משורטטים כממוצע של 20 נקודות נתונים.
ממשקי API שנבדקו:
מעבר: הדלתא של קריאת הג'ירו היא פחות מ-0.01 לאורך זמן.
test_gyro_bias_plot.png
test_jitter
מודד ריצוד בחותמות זמן של המצלמה.
ממשקי API שנבדקו:
-
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
מכיוון שתוכן התמונה אינו חשוב.
ממשקי API שנבדקו:
-
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
מוחל כהלכה בפרץ. בודק את המטא נתונים של הפלט בלבד.
ממשקי API שנבדקו:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
מעבר: לנתוני פלט יש סובלנות שגיאה של פחות מ-0.2%.
test_read_write
בודק שהמכשיר כותב את ערכי החשיפה והרווח הנכונים על ידי קריאה לאחור של המטא נתונים של הלכידה.
ממשקי API שנבדקו:
-
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_sensor_events
בודק שמכשיר שואל ומדפיס אירועי חיישנים עבור מכשירים המפרסמים תמיכה בהיתוך חיישנים. החיישנים הצפויים הם מד תאוצה, גירוסקופ ומגנטומטר. בדיקה זו פועלת רק אם המסך פועל, כלומר המכשיר אינו במצב המתנה.
ממשקי API שנבדקו:
מעבר: מתקבלים אירועים עבור כל חיישן.
test_solid_color_test_pattern
בודקת שתבניות בדיקה בצבע אחיד נוצרות כראוי להשתקת המצלמה. אם השתק מצלמה נתמך, יש לתמוך בדפוסי בדיקה בצבע אחיד. אם השתקת המצלמה אינה נתמכת, דפוסי בדיקה בצבע אחיד נבדקים רק אם היכולת מפורסמת.
אם תומכים בתמונות RAW, הקצאת הצבע נבדקת גם כן. הצבעים שנבדקו הם שחור, לבן, אדום, כחול וירוק. עבור מצלמות שאינן תומכות בתמונות RAW, רק שחור נבדק.
ממשקי API שנבדקו:
-
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
כדי ללכוד מסגרות עבור כל תבנית בדיקה חוקית ובודק שהמסגרות נוצרות כהלכה עבור צבעים אחידים ופסי צבע. בדיקה זו כוללת את השלבים הבאים:
- לוכד תמונות עבור כל דפוסי הבדיקה הנתמכים.
- מבצע בדיקת נכונות פשוטה עבור דפוס בדיקת צבע אחיד ופסי צבע.
ממשקי API שנבדקו:
-
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
).
ממשקי API שנבדקו:
-
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
בודק אם אירועי תמונה וחיישן תנועה נמצאים באותו תחום זמן.
ממשקי API שנבדקו:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.hardware.Sensor#TYPE_GYROSCOPE
מעבר: חותמות זמן של תנועה נמצאות בין שתי חותמות הזמן של התמונה.
test_restriction_restriction
בודק אם הרטט של המכשיר פועל כמצופה.
ממשקי API שנבדקו:
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.os.Vibrator
-
android.hardware.camera2.CameraDevice#setCameraAudioRestriction
מעבר: המכשיר אינו רוטט כשהוא מושתק על ידי ממשק API של הגבלת אודיו של המצלמה.
סצנה 1
scene1 הוא תרשים אפור. התרשים האפור חייב לכסות את מרכז 30% משדה הראייה של המצלמה. התרשים האפור צפוי לאתגר את 3A (חשיפה אוטומטית, איזון לבן אוטומטי, פוקוס אוטומטי) באופן מתון מכיוון שלאזור המרכז אין תכונות. עם זאת, בקשת הלכידה מציינת את כל הסצנה הכוללת מספיק תכונות ל-3A להתכנס.
ניתן לבדוק מצלמות RFoV ב-WFoV או במתקן הבדיקה של RFoV. אם מצלמת RFoV נבדקת במתקן הבדיקה של WFoV, התרשים מוגדל ב-⅔ כדי להבטיח כמה גבולות לתרשים האפור ב-FoV כדי לעזור ל-3A להתכנס. לתיאורים מפורטים יותר של ציוד הבדיקה של המצלמה, ראה מצלמה ITS-in-a-box .
סצנה1: תרשים בגודל מלא (משמאל). ⅔ תרשים בקנה מידה (מימין).
test_3a
בודק את ההתכנסות של 3A עם יעד מאתגר בינוני.
ממשקי API שנבדקו:
-
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) בנפרד.
ממשקי API שנבדקו:
-
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 בעת שימוש בטריגר Precapture. לוכד חמש בקשות ידניות עם AE מושבת. לבקשה האחרונה יש טריגר לכידת AE, שיש להתעלם ממנו מכיוון ש-AE מושבת.
ממשקי API שנבדקו:
-
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
בדיקות שלכדו צילומים אוטומטיים וידניים נראים זהים.
ממשקי API שנבדקו:
-
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
בדיקה_שחור_לבן
בודק שהמכשיר מייצר תמונות מלאות בשחור לבן. מצלם שני צילומים, הראשון עם רווח נמוך במיוחד וחשיפה קצרה, שמביאה לצילום שחור, והשני עם רווח גבוה במיוחד וחשיפה ארוכה, שמביאה לצילום לבן.
ממשקי API שנבדקו:
-
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 תמונות עם הגדרת לכידה ידנית ובודק שכולן זהות. ניתן להשתמש בבדיקה זו כדי לזהות אם יש מסגרות ספורדיות שמעובדות בצורה שונה או שיש להן חפצים.
ממשקי API שנבדקו:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR
-
android.hardware.camera2.CameraMetadata#SYNC_MAX_LATENCY_PER_FRAME_CONTROL
מעבר: התמונות זהות מבחינה ויזואלית ובערכי 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
test_capture_result
בודקת שנתונים חוקיים חוזרים באובייקטים CaptureResult
. עושה לכידה אוטומטית, ידנית ואוטומטית.
ממשקי API שנבדקו:
-
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 אינם ניתנים לחיתוך.
ממשקי API שנבדקו:
-
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 אזורים שונים (פינות ומרכז.) מצלם תמונות עם סט חיתוך עבור 5 האזורים. משווה את ערכי התיקון וערכי החיתוך של התמונה.
ממשקי API שנבדקו:
-
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 .
ממשקי API שנבדקו:
-
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 והערך הצפוי ירווה אם הערכים המחושבים חורגים מטווח ערכי התמונה בפועל. הבדיקה נכשלת אם הערכים הצפויים והערכים הנמדדים אינם תואמים או אם תמונות נחשפות יתר על המידה תוך חמישה שלבים.
ממשקי API שנבדקו:
-
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
. שמונה פריימים נלכדים בכל ערך פיצוי.
ממשקי API שנבדקו:
-
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
חשיפה_בדיקה
בודקים שחשיפה קבועה מושגת כאשר ISO וזמן החשיפה משתנים. מצלם סדרה של תמונות עם ISO וזמן חשיפה שנבחרו כדי לאזן זה את זה. לתוצאות צריכות להיות אותה בהירות, אבל במהלך הרצף התמונה צריכה להיות רועשת יותר. מאמת שהערכים הממוצעים של פיקסל לדוגמה קרובים זה לזה. מבטיח שהתמונות אינן מהודקות ל-0 או 1 (מה שיגרום להן להיראות כמו קווים שטוחים). ניתן להריץ את הבדיקה גם עם תמונות RAW על ידי הגדרת דגל debug
בקובץ התצורה שלך.
ממשקי API שנבדקו:
-
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 ומוודאת שהם תואמים.
ממשקי API שנבדקו:
מעבר: הפרש ה-RGB הממוצע בין כל תמונה הוא פחות מ-3%.
test_jpeg_fmt=jpg.jpg | test_jpeg=fmt=yuv.jpg |
test_latching
בודק שהגדרות (חשיפה ורווח) ננעלות על המסגרת הימנית עבור מצלמות FULL
ו- LEVEL_3
. מצלם סדרה של תמונות באמצעות בקשות גב אל גב, תוך שינוי פרמטרי בקשת הלכידה בין התמונות. בודק שלתמונות יש את המאפיינים הצפויים.
ממשקי API שנבדקו:
מעבר: תמונות [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
test_linearity
בודק שניתן להפוך את עיבוד המכשיר לפיקסלים ליניאריים. לוכד רצף של יריות כשהמכשיר מכוון למטרה אחידה.
ממשקי API שנבדקו:
-
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.
ממשקי API שנבדקו:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
מעבר: הצילומים נראים עקביים.
test_locked_burst_frame0.jpg
test_locked_burst_frame1.jpg
test_locked_burst_frame2.jpg
test_param_color_correction
בודק שהפרמטרים של android.colorCorrection.*
מיושמים כאשר הם מוגדרים. מצלם תמונות עם ערכי טרנספורמציה ורווח שונים, ובודק שהם נראים שונים בהתאם. הטרנספורמציה והרווחים נבחרים כדי להפוך את הפלט ליותר ויותר אדום או כחול. משתמש במפת גוונים ליניארית. מיפוי גוונים הוא טכניקה המשמשת בעיבוד תמונה למיפוי קבוצת צבעים אחת לאחרת כדי להעריך את המראה של תמונות בטווח דינמי גבוה במדיום בעל טווח דינמי מוגבל יותר.
ממשקי API שנבדקו:
-
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
*ציר ה-X הוא בקשות הלכידה: 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 boost)
test_param_exposure_time
בודק שהפרמטר android.sensor.exposureTime
מוחל.
ממשקי API שנבדקו:
מעבר: כל צילום בהירה יותר מהצילום הקודם.
test_param_exposure_time_frame0.jpg
test_param_exposure_time_plot.png
test_param_flash_mode
בודק שהפרמטר android.flash.mode
מוחל. מגדיר ידנית את החשיפה להיות בצד האפל, כך שיהיה ברור אם הפלאש הופעל או לא, ומשתמש במפת גוונים ליניארית. בודק את המרכז עם תמונת האריח כדי לראות אם נוצר שיפוע גדול כדי לוודא אם הפלאש הופעל.
ממשקי API שנבדקו:
מעבר: למרכז תמונת האריח יש שיפוע גדול, כלומר הפלאש הופעל.
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_reduction_reduction
בודק שהפרמטר android.noiseReduction.mode
מוחל כהלכה כאשר הוא מוגדר. מצלם תמונות כשהמצלמה מוארת במעומעם. משתמש בהגבר אנלוגי גבוה כדי להבטיח שהתמונה המצולמת רועשת. לוכד שלוש תמונות, עבור NR כבוי, "מהיר" ו"איכות גבוהה". גם לוכד תמונה עם רווח נמוך ו-NR כבוי, ומשתמש בשונות של זה בתור קו הבסיס. ככל ש-SNR (יחס אות לרעש) גבוה יותר, כך איכות התמונה טובה יותר.
ממשקי API שנבדקו:
מעבר: SNR משתנה עם מצבי הפחתת רעש שונים ומתנהג באופן דומה לתרשים למטה.
test_param_noise_reduction_plot_SNRs.png
0: כבוי, 1: מהיר, 2: HQ, 3: MIN , 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 שלבים עם חשיפה קבועה לכל צילום.
ממשקי API שנבדקו:
מעבר: אמצעי 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
מוחל.
ממשקי API שנבדקו:
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
מעבר: מצבי הצללה מוחלפים ומפות הצללת העדשה משתנות כצפוי.
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.
ממשקי API שנבדקו:
-
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 ובודק אם ממוצע פיקסל הפלט תואם את הגדרות הבקשה.
ממשקי API שנבדקו:
-
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
לוכד סט של תמונות גולמיות עם רווחים הולכים וגדלים ומודד את הרעש. לוכד גולמי בלבד, בפרץ.
ממשקי API שנבדקו:
-
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
חשיפה_גולמית לבדיקה
לוכד סט של תמונות גולמיות עם זמן חשיפה הולך וגדל ומודד את ערכי הפיקסלים.
ממשקי API שנבדקו:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
מעבר: הגדלת ה-ISO (רווח) הופכת את הפיקסלים לרגישים יותר לאור, כך שהעלילה נעה לכיוון שמאל.
test_raw_exposure_s=55.png
(10⁰ זה 1 ms, 10¹ זה 10 ms, 10⁻¹ זה 0.1 ms)
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% של התמונה. בודק שכל ירייה רועשת יותר מהקודמת.
ממשקי API שנבדקו:
-
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_reproces_reduction_reduction
בדיקות ש- android.noiseReduction.mode
מיושם לעיבוד מחדש של בקשות. מצלם תמונות מעובדות מחדש כשהמצלמה מוארת עמומה. משתמש בהגבר אנלוגי גבוה כדי להבטיח שתמונת הצילום רועשת. לוכד שלוש תמונות מעובדות מחדש, עבור NR כבוי, "מהיר" ו"איכות גבוהה". לוכד תמונה מעובדת עם רווח נמוך ו-NR כבוי, ומשתמש בשונות של זה בתור קו הבסיס.
ממשקי API שנבדקו:
מעבר: FAST >= כבוי, HQ >= FAST, HQ >> כבוי
עלילה טיפוסית של SNR לעומת NR_MODE
test_tonemap_sequence
בודק רצף של צילומים עם עקומות שונות של מפת טון. לוכד 3 צילומים ידניים עם מפת גוונים ליניארית. לוכד 3 תמונות ידניות עם מפת טון ברירת המחדל. מחשב את הדלתא בין כל זוג פריים עוקב.
ממשקי API שנבדקו:
מעבר: יש 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
.
ממשקי API שנבדקו:
-
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
בודקת שהגדלים והפורמטים המדווחים ללכידת תמונה עובדים.
ממשקי API שנבדקו:
עובר: מבחן מסיים ומחזיר את התמונות המבוקשות.
test_yuv_plus_dng.jpg
test_yuv_plus_jpeg
בודקת לכידת פריים בודד כפלטי YUV ו-JPEG. משתמש בבקשה ידנית עם מפת גוונים ליניארית כך שה-YUV וה-JPEG נראים זהים כשהם מומרים על ידי מודול image_processing_utils
.
ממשקי API שנבדקו:
-
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/RAW10/RAW12 ו-YUV אם נתמכת. משתמש בבקשה ידנית עם מפת גוונים ליניארית כך ש-raw ו-YUV צפויים להיות זהים. משווה בין ערכי RGB של מרכז 10% של תמונות שהומרו ב-RGB. יומני android.shading.mode
.
ממשקי API שנבדקו:
-
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
-
android.hardware.graphics.ImageFormat#RAW12
מעבר: YUV ותמונות גולמיות דומות ויש להן הבדל של פחות מ-3.5% RMS (ערך ממוצע-ריבוע של אות).
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
סצנה2_א
ל-scene2_a יש שלושה פרצופים עם רקע אפור ולבוש ניטרלי. הפנים נבחרות למגוון רחב של גווני עור. התרשים חייב להיות בעל כיוון נכון כדי שזיהוי פנים יפעל בצורה מיטבית.
סצנה2_א
test_auto_flash
בודק שההבזק האוטומטי מופעל בסצנה חשוכה. מאמת שהבזק אוטומטי מופעל על ידי בדיקה שלמרכז תמונת האריח יש שיפוע גדול. כדי להפעיל הבזק אוטומטי, יש לכבות את הטאבלט והאורות במתקן הבדיקה. הטאבלט כבוי על ידי הבדיקה, וניתן לכבות את האורות באופן אוטומטי עם בקר הארדואינו. הסצנה חייבת להיות חשוכה לחלוטין כדי שהבדיקה תפעל כראוי. ככזה, פתח הטאבלט האחורי חייב להיות מכוסה לחלוטין על ידי טאבלט הסצינה, והפתח הקדמי חייב להיות מכוסה על ידי צמצם וטלפון DUT כדי לחסום אור תועה מלהיכנס למתקן.
ממשקי API שנבדקו:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
מעבר: למרכז תמונת האריח יש שיפוע גדול שמשמעותו שהבזק אוטומטי הופעל.
test_autoframing
בודק את התנהגות המסגרת האוטומטית של התקן המצלמה. מבצע זום גדול כך שאף אחד מהפנים בסצנה לא נראה, מאפשר את מצב הפריימים האוטומטיים על ידי הגדרת AUTOFRAMING
ב- CaptureRequest
ל- True
, ומוודא אם ניתן לזהות את כל הפנים בסצנה המקורית כאשר המצב מתכנס (כלומר, כאשר AUTOFRAMING_STATE
ב- CaptureResult
מוגדר ל- AUTOFRAMING_STATE_CONVERGED
).
ממשקי API שנבדקו:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AUTOFRAMING_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AUTOFRAMING
-
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING
-
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING_STATE
מעבר: כל שלושת הפנים מזוהות.
test_display_p3
בדיקות הצג לכידת P3 ב-JPEG באמצעות ה-API של ColorSpaceProfiles
. בודק של-JPEG המצולם יש פרופיל ICC מתאים בכותרת שלו, ושהתמונה מכילה צבעים מחוץ לטווח ה-sRGB.
ממשקי API שנבדקו:
-
android.hardware.camera2.params.ColorSpaceProfiles
-
android.hardware.camera2.params.SessionConfiguration#setColorSpace
מעבר: ה-JPEG מכיל פרופיל Display P3 ICC וצבעים מחוץ לטווח ה-sRGB.
test_effects
לוכד פריים עבור אפקטי מצלמה נתמכים ובודק אם הם נוצרו כהלכה. הבדיקה בודקת רק אפקטים OFF
ו- MONO
, אך שומרת תמונות עבור כל האפקטים הנתמכים.
ממשקי API שנבדקו:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS
-
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
מעבר: מצלם את תמונת הסצנה עם אפקטים OFF
ותמונה מונוכרום עם אפקטים מוגדרים ל- MONO
.
test_effects_MONO.jpg
test_format_combos
בודק שילובים שונים של פורמטי פלט.
ממשקי API שנבדקו:
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
ומבטיח שטבלאות קוונטיזציה משתנות כהלכה.
ממשקי API שנבדקו:
מעבר: מטריצת הקוונטיזציה יורדת עם עליית האיכות. (מטריקס מייצגת את גורם החלוקה.)
ממוצעים של מצלמה אחורית של Pixel 4 luma/chroma DQT מטריצת לעומת איכות JPEG
דוגמה למבחן נכשל
שימו לב שעבור תמונות באיכות נמוכה מאוד (jpeg.quality < 50), אין עלייה בדחיסה במטריצת הקוונטיזציה.
test_num_faces
בודק זיהוי פנים.
ממשקי API שנבדקו:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
מעבר: מוצא שלוש פרצופים.
test_num_faces_fd_mode_1.jpg
test_preview_min_frame_rate
בודק שקצב התצוגה המקדימה יורד בצורה נכונה בסצנה חשוכה. כדי שבדיקה זו תפעל כהלכה, יש לכבות את האורות במתקן הבדיקה על ידי הבקר או באופן ידני על ידי מפעיל הבדיקה.
ממשקי API שנבדקו:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
-
android.media.CamcorderProfile
-
android.media.MediaRecorder
מעבר: קצב התצוגה המקדימה הוא במינימום טווח קצב הפריימים המבוקש, והשונות בין הפריימים קטנה מהסובלנות המוחלטת שנקבעה במבחן.
test_reprocess_uv_swap
בדיקות שעיבוד YUV אינו מחליף את מטוסי U ו-V. זה מזוהה על ידי חישוב סכום ההפרשים המוחלטים (SAD) בין התמונה המעובדת ללכידה לא מעובדת. אם החלפת מטוסי U ו-V של הפלט של הלכידה המעובדת מביאה ל-SAD מוגבר, אזי ההנחה שהפלט מכיל את מישורי ה-U וה-V הנכונים.
ממשקי API שנבדקו:
-
android.hardware.camera2.CameraDevice#createCaptureSession
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureResult#NOISE_REDUCTION_MODE
מעבר: מטוסי U ו-V אינם מוחלפים.
test_reprocess_uv_swap.png
סצנה2_ב
test_num_faces
בודק זיהוי פנים עם גיוון גווני עור מוגבר בסצנות פנים.
ממשקי API שנבדקו:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
מעבר: מוצא 3 פרצופים.
test_num_faces_fd_mode_1.jpg
test_yuv_jpeg_capture_sameness
לוכד שתי תמונות באמצעות הפורמטים הנפוצים ביותר של YUV ו-JPEG עם יחס רוחב-גובה זהה לפורמט ה-JPEG הגדול ביותר שאינו עולה על רזולוציה של 1920x1440. מגדיר את jpeg.quality
ל-100 ולוכד בקשה משטח כפול. ממירה את שתי התמונות למערכים של RGB ומחשבת את ההבדל התלת-ממדי RMS (Root mean square) בין שתי התמונות.
ממשקי API שנבדקו:
-
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
בודק זיהוי פנים עם גיוון גווני עור מוגבר בסצנות פנים.
ממשקי API שנבדקו:
-
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.
עובר: חייב להיות בעל זמן לכידת JPEG של מצלמה 2 < 1000ms עבור רזולוציית 1080p כפי שנמדדת על ידי בדיקת הביצועים של מצלמת CTS בתנאי תאורה ITS (3000K) עבור שתי המצלמות הראשיות.
test_camera_launch_perf_class
בודק את זמן השקת המצלמה עבור דרגת הביצועים S כפי שצוין בסעיף 2.2.7.2 מצלמה ב-CDD.
מעבר: חייב להיות חביון הפעלה של camera2 (מצלמה פתוחה לפריים של תצוגה מקדימה ראשונה) < 600ms כפי שנמדד על ידי ה-CTS PerformanceTest בתנאי תאורה של ITS (3000K) עבור שתי המצלמות הראשיות.
סצנה2_ד
test_num_faces
בודק זיהוי פנים עם גיוון גווני עור מוגבר בסצנות פנים.
ממשקי API שנבדקו:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
מעבר: מוצא 3 פרצופים.
סצנה2_ה
מבחן_תמונה_רציפה
50 מסגרות ברזולוציית VGA נלכדות עם ההגדרה הראשונה של בקשת הלכידה android.control.afMode = 4 (CONTINUOUS_PICTURE).
ממשקי API שנבדקו:
-
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
בודק זיהוי פנים עם גיוון גווני עור מוגבר בסצנות פנים.
ממשקי API שנבדקו:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
מעבר: מוצא 3 פרצופים.
סצנה2_ו
ל-scene2_f יש שלושה פרצופים עם רקע לבן ולבוש לבן. לפנים מגוון רחב של גווני עור וניגודיות גבוהה עם הרקע.
סצנה2_ו
test_num_faces
בודק זיהוי פנים עם גיוון גווני עור מוגבר בסצנות פנים.
ממשקי API שנבדקו:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
מעבר: מוצא 3 פרצופים.
test_num_faces_fd_mode_1.jpg
סצנה 3
סצנה 3 משתמשת בתרשים ISO12233, ורוב הבדיקות משתמשות בשיטת חולץ תרשים כדי למצוא את התרשים בסצנה. מסיבה זו, לרוב התמונות שנשמרו אין גבולות כמו התמונות לסצינות 1, 2 או 4, אלא רק התרשים. התרשים חייב להיות באוריינטציה הנכונה עבור Finder Finder יעבוד בצורה אופטימלית.
test_3a_consistency
בדיקות לעקביות 3A.
ממשקי API נבדקו:
-
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_enhancement
בודק שפרמטר android.edge.mode
מיושם כראוי. תופס תמונות ללא מעשה עבור כל מצב קצה ומחזיר את החדות של תמונת הפלט ומטא נתונים של תוצאות הלכידה. מעבד בקשת לכידה עם מצב קצה נתון, רגישות, זמן חשיפה, מרחק מיקוד ופרמטר משטח פלט.
מעבר: מצב HQ
(2) חדים יותר ממצב OFF
(0). מצב FAST
(1) חד יותר ממצב OFF
. מצב HQ
חד יותר או שווה למצב FAST
.
ממשקי API נבדקו:
פרמטרי מצלמה מושפעים:
-
EDGE_MODE
test_edge_enhancement_edge = 0.jpg
test_edge_enhancement_edge = 1.jpg (מצב מהיר)
test_edge_enhancement_edge = 2.jpg (מצב באיכות גבוהה)
test_flip_mirror
בודק אם התמונה מכוונת כראוי לפי סעיף 7.5.2 המצלמה הפונה קדמית [C-1-5] .
ניתן לזהות תמונות שיקוף, פניות או מסתובבות על ידי תכונת היהלום ליד המרכז.
מעבר: התמונה אינה הופכת, שיקפה או מסתובבת.
test_flip_mirror_scene_patch.jpg
test_landscape_to_portrait
בודק אם הנוף לדיוקן עוקף מתפקד נכון עבור חיישנים מוכווני נוף.
ממשקי API נבדקו:
-
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES
-
android.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATION
-
android.hardware.camera2.CameraCharacteristics#getCameraCharacteristics
מעבר: הבדיקה מסוגלת לאתר תרשים עם הסיבוב הצפוי (0 מעלות כאשר הנוף לדרישת הדיוקן מושבת, 90 מעלות כאשר מופעל).
test_landscape_to_portrait.png
test_lens_movement_reporting
בודק אם מדווח על דגל תנועת העדשות כראוי. לוכד פרץ של 24 תמונות עם 12 המסגרות הראשונות במרחק המיקוד האופטימלי (כפי שנמצא על ידי 3A) ו -12 המסגרות האחרונות במרחק המיקוד המינימלי. סביב מסגרת 12, העדשה נעה וגורמת לחדות לרדת. החדות מתייצבת בסופו של דבר כאשר העדשה עוברת למצב הסופי. יש לקבוע את דגל תנועת העדשות בכל המסגרות בהן החדות היא ביניים לחדות במסגרות הראשונות כאשר העדשה נייחת במרחק מוקד אופטימלי, והמסגרות הסופיות בהן העדשה נייחת במרחק המוקד המינימלי. המסגרת המדויקת שהעדשה עוברת אינה חשובה: מה שנבדק הוא שדגל התנועה נטען כאשר העדשה נעה.
ממשקי API נבדקו:
-
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
מעבר: דגל תנועת העדשות True
במסגרת עם שינוי חד.
מנגנוני כישלון:
-
lens_moving: True
(android.hardware.camera2.CaptureResult#LENS_STATE
= 1) ב-test_log.DEBUG
נקבע רק במסגרות בהן החדות לא משתנה. - מסגרות עם
lens_moving: False
(android.hardware.camera2.CaptureResult#LENS_STATE
= 0) ב-test_log.DEBUG
יש הבדל חדות בהשוואה למסגרות הראשונות במרחק מוקד אופטימלי או המסגרות האחרונות במרחק מיקוד מינימלי.
test_reprocess_edge_enhancement
בדיקות אם נתמכות שיטות עיבוד מחדש לשיפור קצה עובדות כראוי. מעבד בקשת לכידה עם מצב נתון של Edge Edge ומשווה מצבים שונים ללכידה עם מצבי קצה מחדש מחדש מושבתים.
ממשקי API נבדקו:
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
מעבר: חדות למצבי הקצה השונים נכונה. HQ
(מצב 2) חד יותר מאשר OFF
(מצב 0), והשיפור בין מצבים שונים דומה.
test_reprocess_edge_enhancement_plot.png
סצינה 4
סצנה 4 מורכבת מעגל שחור על רקע לבן בתוך ריבוע.
סצינה 4
test_aspect_ratio_and_crop
בדיקות אם תמונות מעוותות או קצוצות באופן בלתי צפוי בצינור התמונה. מצלם מעגל מעל כל הפורמטים. מוודא שהמעגל אינו מעוות, המעגל אינו עובר ממרכז התמונה, והמעגל אינו משתנה בגודל שגוי עם יחסי גובה שונים או רזולוציות שונות.
ממשקי API נבדקו:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
מעבר: תמונות אינן נמתחות, מרכז התמונות אינו שונה יותר מ -3%, וה- FOV המרבי האפשרי (שדה ראייה) נשמר.
מנגנוני כישלון:
- המעגל בתמונה שנלכדה מעוות על ידי צינור העיבוד.
- תמונת הרזולוציה התחתונה קצוצה כפולה בצינור התמונה ויוצרת FOV שונה בין תמונות ברזולוציה גבוהה ונמוכה.
- המעגל בתמונה שנלכד נחתך בגלל בקשת לכידת יחס גובה -רוחב קיצוני המפחיתה את גובה או רוחב התמונה.
- למעגל בתמונה שנלכדה יש השתקפות במרכז ואינו נראה מלא לחלוטין.
test_multi_camera_alignment
בודק את פרמטרי כיול המצלמה הקשורים למיקום המצלמה של מערכות רב-מצלמות. בעזרת המצלמות הפיזיות המצלמות הרב-מצלמות, מצלם תמונה עם אחת המצלמות הפיזיות. מוצא את מרכז המעגל. מקרין את מרכז המעגל לקואורדינטות העולם לכל מצלמה. משווה את ההבדל בין מרכזי מעגל המצלמות בקואורדינטות העולם. נוח את העולם מתאם בחזרה לקואורדינטות של פיקסל ומשווה בין מקוריים לבדיקת תוקף. משווה את גדלי המעגל הבדיקה אם אורכי המוקד של המצלמות שונים.
ממשקי API נבדקו:
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
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
מעבר: מרכזי מעגל וגדלים הם כצפוי בתמונות מוקרנות בהשוואה לתמונות שנלכדו באמצעות נתוני כיול מצלמה ואורכי מוקד.
מנגנוני כישלון:
-
LENS_INTRINSIC_CALIBRATION
,LENS_POSE_TRANSLATION
, אוLENS_POSE_ROTATION
הם ערכי תכנון ולא נתוני כיול בפועל. - מערכת המצלמה אינה מתאימה להגדרת הבדיקה. לדוגמה, בדיקת מערכת מצלמה רחבה ומוצלחת במיוחד עם אסדת הבדיקה של RFOV. למידע נוסף, עיין במצלמה ITS-A-A-FAQ1 .
test_preview_aspect_ratio_and_crop
בדומה לבדיקת Test_aspect_ratio_and_crop עבור לכידות עדיין, בדיקה זו בודקת את פורמטי התצוגה המקדימה הנתמכת כדי להבטיח שמסגרות התצוגה המקדימה לא נמתחות או נחתכות באופן לא הולם. מוודא שיחס הגודל של המעגל אינו משתנה, התמונות הקצוצות שומרות על המעגל במרכז המסגרת, וגודל המעגל אינו משתנה לפורמט קבוע או עם רזולוציות שונות (שדה בדיקת מבט).
ממשקי API נבדקו:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
מעבר: תמונות אינן נמתחות, מרכז התמונות אינו שונה יותר מ -3%, וה- FOV המרבי האפשרי (שדה ראייה) נשמר.
test_preview_stabization_fov
בודק את גדלי התצוגה המקדימה הנתמכים כדי להבטיח שה- FOV נחתך כראוי. המבחן לוכד שני סרטונים, אחד עם ייצוב תצוגה ON
, ואחר עם ייצוב תצוגה OFF
. מסגרת מייצגת נבחרה מכל סרטון, ומנותחת כדי להבטיח כי ה- FOV משתנה בשני הסרטונים נמצא בתוך המפרט.
ממשקי API נבדקו:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
מעבר: יחס גובה המבט של המעגל נותר בערך קבוע, המיקום המרכזי של המעגל נשאר יציב וגודל המעגל משתנה יותר מ 20%.
test_video_aspect_ratio_and_crop
מוציא סרטונים של מעגל בתוך ריבוע מעל כל פורמטי הווידיאו. מחלץ את מסגרות המפתח, ומאמת את יחס הגודל של המעגל לא משתנה, התמונות הקצוצות שומרות על המעגל במרכז, וגודל המעגל אינו משתנה לפורמט קבוע או ברזולוציה שונה (שדה בדיקת תצוגה).
ממשקי API נבדקו:
-
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
מעבר: מסגרות וידאו אינן נמתחות, מרכז המסגרות אינו שונה ביותר מ- 3%, וה- FOV המרבי האפשרי (שדה ראייה) נשמר.
סצנה 5
סצנה 5 דורשת סצנה אפורה מוארת באופן אחיד. זה מושג על ידי מפזר המונח מעל עדשת המצלמה. אנו ממליצים על המפזר הבא: www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168
.
כדי להכין את הסצינה, חבר מפזר מול המצלמה והפנה את המצלמה למקור תאורה של סביב 2000 לוקס. תמונות שנלכדו עבור סצנה 5 דורשות תאורה מפוזרת ללא תכונות ניכרות. להלן תמונה לדוגמא:
לכידת סצנה 5
test_lens_shading_and_color_uniformity
בדיקות כי תיקון הצללת העדשות מיושם כראוי, וצבע סצנה אחידה מונוכרום מופץ באופן שווה. מבצע בדיקה זו על מסגרת YUV עם Auto 3A. הצללת העדשות מוערכת על בסיס ערוץ Y. מודד את ערך ה- Y הממוצע עבור כל חסימת מדגם שצוין, וקובע את PASS או נכשל על ידי השוואה לערך ה- Y המרכזי. מבחן אחידות הצבעים מוערך במרחב R/G ו- B/G.
ממשקי API נבדקו:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
מעבר: ברדיוס שצוין של התמונה, השונות של ערך R/G ו- B/G חייבת להיות פחות מ- 20% כדי לעבור את הבדיקה.
סצינה 6
סצנה 6 היא רשת של עיגולים קטנים עם ריבוע בפינה אחת כדי להצביע על אוריינטציה. החוגים הקטנים נדרשים לבדיקת פונקציית זום בטווח גדול.
סצינה 6
test_in_sensor_zoom
בודק את התנהגות תכונת זום חיישן המצלמה, המייצרת תמונות גולמיות קצוצות.
כאשר מקרה השימוש בזרם מוגדר ל- CROPPED_RAW
, המבחן לוקח שני לכידות מעל טווח הזום, תמונת גולמית מלאה (FOV) ותמונה גולמית קצוצה. המבחן ממיר את התמונות למערכי RGB, מוריד את תמונת הגולמית הקצוצה בגודל מלא לגודל המדווח על ידי SCALER_RAW_CROP_REGION
ומחושב את ההבדל ממוצע השורש התלת-ממדי (RMS) בין שתי התמונות.
ממשקי API נבדקו:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#SCALER_RAW_CROP_REGION
מעבר: ההבדל ממוצע השורש התלת -ממדי (RMS) בין תמונת הגולמית הקצוצה המפורצת בתמונה הגולמית FOV המלאה הוא פחות מ- 1%.
test_zoom
בודק את התנהגות זום המצלמה. לוקח לכידות על טווח הזום ובודק אם המעגלים הולכים וגדלים ככל שהמצלמה מתקרבת פנימה.
ממשקי API נבדקו:
-
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
מעבר: הגודל היחסי של המעגל שנלכד מדויק כנגד יחס זום מבוקש כדי להבטיח שהמצלמה מתקרבת כראוי.
test_zoom כדי למצוא את קווי המתאר של המעגל הקרוב למרכז.
test_low_latency_zoom
בודק את התנהגות זום ההשהיה הנמוכה של המצלמה. לוקח לכידות על טווח הזום עם android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM)
, ובודק אם המעגלים בתמונות הפלט תואמים את יחסי הזום במטא נתונים של לכידה.
ממשקי API נבדקו:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_SETTINGS_OVERRIDES
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CaptureRequest#CONTROL_SETTINGS_OVERRIDE
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#CONTROL_SETTINGS_OVERRIDE
מעבר: הגודל היחסי של המעגל שנלכד מדויק כנגד מטא נתונים של תוצאת יחס הזום.
test_preview_video_zoom_match
בודק כי תוך הקלטה והתרחשות, תצוגה מקדימה של וידאו ותצוגת פלט וידאו ומציגים את אותה הפלט. מחשבת את גודל המעגל הקרוב למרכז ביחס זום שונה ובודק אם גודל המעגל גדל ככל שיחס הזום גדל.
ממשקי API נבדקו:
-
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
מעבר: הגודל היחסי של המעגל שנלכד מדויק כנגד יחס זום מבוקש בווידיאו ותצוגה מקדימה.
VGA_640X480_KEY_FRAME.PNG (לפני זום)
Preview_640x480_key_frame.png (לפני זום)
Vga_640x480_key_frame.png (אחרי זום)
Preview_640x480_key_frame.png (לאחר זום)
scene_extensions
בדיקות scene_extensions
מיועדות לתוספי מצלמה ועליהם להשתמש במצלמה ITS-A-A-Box , מכיוון שהם דורשים שליטה מדויקת בסביבת הבדיקה.
סצנה_הדר
סצנת scene_hdr
מורכבת מדיוקן משמאל וקוד QR בעל ניגודיות נמוכה מימין.
סצנה_הדר
test_hdr_extension
בודק את סיומת HDR . לוקח לכידות עם וללא ההרחבה מופעלת, ובודק אם ההרחבה הופכת את קוד ה- QR ליותר לגילוי.
ממשקי API נבדקו:
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
-
android.hardware.camera2.CameraExtensionSession#capture
מעבר: הרחבת HDR מצמצמת את מספר שינויי הניגודיות הדרושים לגילוי קוד ה- QR או מצמצם את השיפוע על פני קוד ה- QR.
סצנה_ לילה
סצנת scene_night
מורכבת מעגל לבן עם ארבעה עיגולים קטנים יותר בתוכו, כולם על רקע שחור. המעגל הקטן יותר בפינה הימנית העליונה כהה יותר מהאחרים כדי להצביע על אוריינטציה.
סצנה_ לילה
test_night_extension
בודק את סיומת הלילה . לוקח לכידות עם ובלי ההרחבה מופעלת, ובודק את הדברים הבאים:
- הלכידה עם סיומת הלילה מופעלת אורך זמן רב יותר.
- הלכידה עם סיומת הלילה מופעלת היא בהירה יותר או שיש לה ממצאי סצנה עם מראה משופר.
ממשקי API נבדקו:
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
-
android.hardware.camera2.CameraExtensionSession#capture
מעבר: בהשוואה ללכידה ללא הארכת הלילה מופעלת, לכידה עם מאפשרת הלילה מופעלת אורך לפחות 0.5 שניות. הלכידה חייבת להיות בהירה לפחות ב -10%, או שהנקודות האפורות בסצינה חייבות להיות ערכי 20 פיקסלים נמוכים ממרכז המעגל שמסביב.
Sensor_fusion
בדיקות היתוך חיישנים דורשות תנועת טלפון ספציפית מול דפוס לוח. לקבלת תוצאות אופטימליות, וודא כי תרשים הבדיקה מותקן שטוח. תרשימים שאינם שטוחים משפיעים על חישובי הסיבוב עבור רבים מהבדיקות. ניתן לבצע אוטומציה של בדיקות sensor_fusion
באמצעות תיבת היתוך החיישן .
תמונת לוח השוחן
test_multi_camera_frame_sync
בדיקות המסגרות חותמות זמן שנלכדו על ידי מצלמה לוגית נמצאות בטווח של 10 שניות על ידי חישוב זוויות ריבועים בתוך לוח הדוק כדי לקבוע את חותמת הזמן.
ממשקי API נבדקו:
-
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()
מעבר: זווית בין תמונות מכל מצלמה לא משתנה בצורה ניכרת כאשר הטלפון מסתובב.
test_preview_stabization
בדיקות שהתייצבה בתצוגה מקדימה וידאו מסתובבות פחות מג'ירוסקופ.
ממשקי API נבדקו:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
מעבר: סיבוב זווית מקסימום מעל מסגרות הוא פחות מ- 70% מסיבוב הגירוסקופ.
להלן סרטונים מדגם עם וללא ייצוב.
וידאו מדגם עם ייצוב
וידאו מדגם ללא ייצוב
test_sensor_fusion
בודק את ההבדל בין חותמת הזמן בין המצלמה לג'ירוסקופ ליישומי AR ו- VR. הטלפון מסתובב 90 מעלות 10 פעמים מול דפוס לוח הבדיקה. התנועה היא בערך 2 נסיעה הלוך ושוב. בדיקה זו מדלגת אם לא כלול גירוסקופ או אם הפרמטר המקור REALTIME
מקור זמן לא מופעל.
מבחן test_sensor_fusion
מייצר מספר חלקות. שתי החלקות החשובות ביותר לניפוי באגים הן:
test_sensor_fusion_gyro_events
: מציג את אירועי הגירוסקופ לטלפון במהלך הבדיקה. התנועה בכיוון ה- X וה- Y מרמזת שהטלפון אינו מורכב היטב על צלחת ההרכבה, ומפחית את ההסתברות של הבדיקה שעוברת. מספר המחזורים בעלילה תלוי במהירות הכתיבה לחיסכון במסגרות.test_sensor_fusion_gyro_events
test_sensor_fusion_plot_rotations
: מציג את יישור האירועים של הגירוסקופ ואירועי המצלמה. עלילה זו חייבת להראות תנועה תואמת בין מצלמה לג'ירוסקופ ל- +/- 1 ms.test_sensor_fusion_plot_rotations
ממשקי API נבדקו:
-
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
מעבר: קיזוז חותמות חותמות המצלמה והגירוסקופ הוא פחות מ- 1 ms לפי סעיף 7.3.9 חיישני נאמנות גבוהים [C-2-14] .
מנגנוני כישלון:
- שגיאת קיזוז: קיזוז המצלמה-גיירוסקופ אינו מכויל נכון לתוך +/- 1 ms.
- טיפות מסגרת: הצינור אינו מהיר מספיק כדי לתפוס 200 פריימים ברציפות.
- שגיאות שקע:
adb
לא יכול להתחבר באופן אמין ל- DUT מספיק זמן כדי לבצע את המבחן. - התרשים אינו רכוב שטוח. עלילה
test_sensor_fusion_plot_rotations
יש מסגרות בהן הגירוסקופ וסיבוב המצלמה משתנים במידה ניכרת כאשר המצלמה מסתובבת דרך חלקי התרשים שאינם שטוחים. - המצלמה אינה רכובה שטוחה. העלילה
test_sensor_fusion_gyro_events
מציגה תנועה במטוסי x ו- y. כישלון זה שכיח יותר במצלמות הפונות קדמיות שכן למצלמה האחורית יש לעתים קרובות בליטה מורמת לשאר גוף הטלפון, ויוצרת הטיה בעת הרכבה האחורית של הטלפון לצלחת ההרכבה.
test_video_stabization
בדיקות שהתייצבות וידאו מסתובבות פחות מג'ירוסקופ.
ממשקי API נבדקו:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
מעבר: סיבוב זווית מקסימום מעל מסגרות הוא פחות מ- 60% מסיבוב הגירוסקופ.
להלן סרטונים מדגם עם וללא ייצוב.
וידאו מדגם עם ייצוב
וידאו מדגם ללא ייצוב
test_led_snapshot
בודקים תצלומי ה- LED אינם רוויים או מגורים את התמונה.
מבחן זה מוסיף בקר תאורה לתיבת היתוך החיישן כדי לשלוט על האורות. כאשר האורות מוגדרים OFF
, הבדיקה לוקחת לכידה כאשר מצב AUTO_FLASH
מוגדר ל- ON
. במהלך לכידה זו, הבדיקה מפעילה רצף מראש עם ההדק aePrecapture
שנקבע כדי START
, ומגדיר את כוונת הלכידה לתצוגה Preview
כדי לקחת את הלכידה עם פלאש.
מכיוון שלכידה יש נקודה חמה ייחודית בגלל פלאש, הבדיקה מחשבת את ממוצע תמונת הפלאש של כל הלכידה ומוודא אם הערך נמצא בטווח (68, 102). כדי לבדוק אם התמונה מאוזנת לבנה באופן סביר, הבדיקה מחשבת את יחסי ה- R/G ו- B/G ומוודאת אם היחסים נמצאים בתוך 0.95 ו- 1.05.
ממשקי API נבדקו:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
מעבר: יחסי R/G ו- B/G נמצאים בתוך 0.95 ו- 1.05. ממוצע תמונת הפלאש נמצא בטווח (68, 102).