בדף הזה מפורטים השינויים ב-Camera Image Test Suite (ITS) ב-Android 11. השינויים מתחלקים לקטגוריות הבאות:
- שינויים בחומרה
- בדיקות חובה ראשונות ברמת API
- תאורה שנבדקה ואומתה
- שינויים בשמות של סצנות
- בדיקת שינויים ותוספות
- הגדלת מספר הבדיקות המוגבלות של המצלמה
שינויים בחומרה
ב-Android 11 בוצעו כמה שינויים בחומרה כדי להפחית את העלויות ולהגדיל את הזמינות. השינויים האלה נכללים בקטגוריות הבאות:
- יצרן נוסף
- שיטות ייצור מאוחדות
- אפשרויות נוספות לטאבלטים
- פתיחת הטאבלט במצב מקופל
- בקר חדש של מיזוג חיישנים
יצרן נוסף
חברת Rahi Systems מוסמכת לייצר מארזי בדיקה של ITS בנוסף לספק הקיים שלנו, MYWAY design. פרטי החברה של ספקים שעומדים בדרישות הם:
Rahi Systems Inc.
48303 Fremont Blvd, Fremont CA 94538, USA
rahisystems.com/products/android-device-testing-equipment/
androidpartner@rahisystems.com
+1-510-319-3802MYWAY design
4F., No. 163, Fu-Ying Road, XinZhuang District, New Taipei City, Taiwan
twmyway.com
sales@myway.tw
+886-2-29089060
שיטות ייצור מאוחדות
מארז הבדיקה rev1 regular field-of-view (RFoV) ITS-in-a-box עוצב מחדש כדי להשתמש בשיטות הייצור שבהן נעשה שימוש במארזי הבדיקה wide field-of-view (WFoV) box ו-sensor fusion box. הפונקציונליות זהה, ולצורך פשטות, העיצוב נקרא rev1a. העיצוב החדש מאפשר ליצרנים להשתמש בסוג אחד של פלסטיק כדי לייצר את כל מארזי הבדיקה. בנוסף, התושבת לטאבלט ומחזיקי התאורה עוצבו מחדש כדי להתאים למגוון רחב יותר של טאבלטים ופסי תאורת LED.
כדי להוריד את התיאורים והשרטוטים המכניים העדכניים, אפשר לעיין בתיבת RFoV (גרסה 1a) ובתיבת WFoV (גרסה 2.9).
אפשרויות נוספות לטאבלט
טאבלטים, כולל Samsung Galaxy Tab A 10.1 ו-Chuwi Hi9 Air 10.1, נוספים לרשימת הטאבלטים המומלצים. חשוב שלטאבלט לא יהיה אפנון רוחב פולס (PWM) כדי להתאים את בהירות המסך ולמנוע פסים בתמונות שצולמו.
למידע העדכני ביותר על טאבלטים מומלצים, אפשר לעיין בדרישות לטאבלטים.
פתיחה מופחתת של טאבלטים
כדי לאפשר שימוש ב-Galaxy Tab A 10.1, הגובה של הפתח בטאבלט קטן מעט עבור מארזי הבדיקה של RFoV (גרסה 1a) ו-WFOV (גרסה 2). rev1a.1 ו-rev2.9 הן הגרסאות שמשקפות את השינויים האלה. לשרטוטים האלה, אפשר לעיין בתיבת RFoV (גרסה rev1a) ובתיבת WFoV (גרסה rev2.9).
בקר חדש של מיזוג חיישנים
החומרה של בקר מיזוג החיישנים עוצבה מחדש כדי לשפר את יכולת הייצור. הבקר החדש מבוסס על Arduino, עם מגן ללוח ניתוב מותאם אישית שמותקן על Arduino. איור 1 מציג את המגן ואיור 2 מציג את השרטוט המכני של המארז. הבקר החדש מופעל על ידי אספקת מתח של 5 V שמפעילה את המנוע ישירות. האלקטרוניקה נשלטת לחלוטין דרך מחבר ה-USB. ספק הכוח הנפרד מאפשר בידוד מלא בין האלקטרוניקה של הבקרה לבין מנוע הסרוו. בנוסף, בקר יחיד יכול לשלוט בעד שישה מנועי סרוו.
איור 1. מבט על של Arduino shield
איור 2. עיצוב מחסומים
Android 11 תואם לדורות קודמים של בקרים קיימים. כדי להפעיל בדיקה באמצעות בקר מבוסס Arduino, משתמשים בפקודה:
python tools/run_all_tests.py device=# camera=# rot_rig=arduino:1 scenes=sensor_fusion
רמת ה-API הראשונה
ב-Android 10, בדיקות ITS מסומנות בסימון MANDATED
ובסימון NOT_YET_MANDATED. כדי להשיק מכשיר Android 10, כל הבדיקות של MANDATED חייבות לעבור. יכול להיות שNOT_YET_MANDATED בדיקות ייכשלו, אבל הן יופיעו כNOT_YET_MANDATED בדוחות של CTS Verifier.PASS הדרישה של MANDATED tests
רלוונטית גם למכשירים משודרגים. הדרישה הזו שמכשירים משודרגים יעברו את כל הבדיקות של MANDATED גרמה לעיכוב בהפיכת הבדיקות לבדיקות של MANDATED, כי גם מכשירים ישנים יותר צריכים לעבור את הבדיקות.
ב-Android 11, בדיקות MANDATED מוגבלות על ידי הדגל של רמת ה-API הראשונה ממאפייני הטלפון. במכשירים שמשדרגים ל-Android 11, הבדיקות מופעלות כNOT_YET_MANDATEDבדיקותPASS, כלומר בדיקה יכולה להיכשל אבל להופיע בטבלה כPASS ב-CtsVerifier.apk.
לדוגמה:
- ב-Android 11, הבדיקה
test_channel_saturationהיאMANDATEDלמכשירים עם רמת API ראשונה שגבוהה מ-29. - ב-Android 10, הבדיקה
test_channel_saturationהיאMANDATEDלכל המכשירים.
אימות התאורה בסצנה
ב-Android מגרסה 11, תאורת הסצנה מאומתת על ידי ניתוח הבהירות בפינות הסצנה. כל הסצנות הידניות עוברות אימות של התאורה, וסצנות שמבוססות על טאבלט עוברות אימות של מצלמות RFoV במתקן הבדיקה של RFoV, ומצלמות WFoV במתקן הבדיקה של WFoV. אם רמות התאורה לא מספיקות, המערכת מדווחת על שגיאה והבדיקה נכשלת.
שינויים בשם של סצנה
ב-Android 10, סצנה 1 אחראית לרוב הבדיקות ולחלק גדול מסך זמן הבדיקה. אם בדיקה כלשהי בסצנה 1 נכשלת, צריך להריץ מחדש את כל הסצנה. מבחינת העיצוב, הפעלה מחדש של הסצנה כולה מפחיתה את המעבר של בדיקות שוליים. ב-Android 11, זמני ההפעלה מחדש קצרים יותר כי סצנה 1 מפולחת לשתי סצנות, scene1_1 ו-scene1_2.
בטבלה הבאה מוצגים זמני הבדיקה של המצלמה האחורית של Pixel 4 בסצנות שונות. מספר הבדיקות מחולק כדי להשוות את זמן הבדיקה, ולא כדי להשוות את מספר הבדיקות.
בנוסף, מתבצע ניקוי של השמות. סצנה 2 מחולקת עם אותיות וסצנה 1 מחולקת עם מספרים. המינוח של התוספים השונים הוא:
- סצנות עם אותו תרשים, אבל בדיקות שונות:
*_1,2,3 - סצנות עם תרשימים שונים, אבל אותם מבחנים:
*_a,b,c
| סצנה | מספר הבדיקות | זמן הריצה של Pixel 4 (דקות:שניות) |
|---|---|---|
| 0 | 11 | 1:12 |
| 1_1 | 22 | 5:12 |
| 1_2 | 13 | 5:20 |
| 2_a | 5 | 3:22 |
| 2_b | 1 | 0:24 |
| 2_c | 1 | 0:24 |
| 3 | 6 | 2:04 |
| 4 | 2 | 2:46 |
בדיקת שינויים
הבדיקות עודכנו לשימוש ברמת ה-API הראשונה
ב-Android 11, הבדיקות בטבלה הבאה עודכנו כך שישתמשו בדגל של רמת ה-API הראשונה. בכל הבדיקות האלה נעשה שימוש ברמת API ראשונית של 29, מלבד בבדיקה test_tonemap_curve, שבה נעשה שימוש ברמת API ראשונית של 30.
| סצנה | שם הבדיקה | רמת ה-API הראשונה | תיאור |
|---|---|---|---|
| 0 | test_tonemap_curve |
30 | חשוב לוודא שלצינור יש פלט צבעים תקין עם מיפוי טונים לינארי וקלט תמונה אידיאלי (ההסתמכות היא על test_test_patterns). |
| 1 | test_ae_precapture_trigger |
29 | בודקים את מכונת המצבים של AE כשמשתמשים בטריגר שלפני הצילום. מוודאים שעם AE מושבת, לטריגר של טרום-לכידה אין השפעה. |
test_channel_saturation |
29 | כדי למנוע גוון באזורים רוויים, צריך לוודא שערוצי ה-RGB מגיעים לערכים דומים. | |
| 2_a/b/c | test_num_faces |
29 | הגדלת המגוון של הגילאים בסצנות שבהן רואים פנים. |
בדיקות עם שינויים
הבדיקות בטבלה הבאה מתעדכנות ב-Android 11. השינויים מתוארים בעמודה תיאור השינויים.
| סצנה | שם הבדיקה | רמת ה-API הראשונה | תיאור השינויים |
|---|---|---|---|
| 1 | test_burst_sameness_manual |
30 | הפחתת הסבילות ל-2%. |
| 4 | test_aspect_ratio_and_crop |
30 | שינוי להפעלה במכשירים מוגבלים. |
test_multi_camera_alignment |
30 | אם אין תמיכה בצילום מכמה מצלמות, צריך לעבור בין המצלמות בנפרד. שינוי הלוגיקה של בחירת המצלמה כדי להתאים למערכות עם שלוש וארבע מצלמות, ודילוג על מצלמות מונו, מצלמות עומק בלבד ומצלמות IR. |
בדיקות חדשות
הבדיקות בטבלה הבאה מופעלות ב-Android 11. בטבלה הבאה מופיע סיכום של הבדיקות, ובקטעים הבאים מופיעים תיאורים מפורטים.
| סצנה | שם הבדיקה | רמת ה-API הראשונה | תיאור |
|---|---|---|---|
| 0 | test_vibration_restrictions |
30 | מוודאים שההתראות והרטט לא מופעלים במהלך צילום התמונות. |
| 2_a | test_jpeg_quality |
30 | בדיקה שטבלאות קוונטיזציה מקטינות את הדחיסה כדי לשפר את איכות ה-JPEG. |
| 2_d/2_e | test_num_faces |
30 | הגדלת המגוון של גילאים של אנשים בתמונות. |
| 2_e | test_continuous_picture |
30 | מוודאים שהתשלום על 3A יתבצע ב-android.control.afAvailableModes =
CONTINUOUS_PICTURE. |
| שינוי | test_scene_change |
31 | android.control.afSceneChange הוצהר על שינוי בסצנה. |
| 6 | test_zoom |
30 | בדיקה של android.control.zoomRatioRange. |
scene0/test_vibration_restriction
הבדיקה הזו לא דורשת סצנה ספציפית, אבל צריך להניח את המכשיר הנבדק (DUT) על משטח קשיח או להרכיב אותו על משטח קשיח. כולל הרכבה על מארזי בדיקה של ITS-in-a-box.
טענות
- אין רטט במהלך השימוש במצלמה
scene2_a/test_jpeg_quality
שיטה
חלקים שונים של קובץ ה-JPEG מוגדרים על ידי סמנים של 2 בייט. מידע נוסף זמין במאמר בנושא JPEG.
הבדיקה מחלצת את מטריצות הכימות מהתמונה שצולמה בפורמט JPEG. הסמן של מטריצות הכימות בצילום ה-JPEG הוא הרצף [255, 219]. כשמוצאים את הסמן, שני הפריטים הבאים ברשימה הם הגודל. סמן הגודל של JPEG DQT הוא בדרך כלל [0, 132] = 256*0+132 = 132, שזה הגודל של נתוני DQT בצילום JPEG. הנתונים המוטמעים הם מהצורה: [255, 219, 0, 132, 0 (סמן בהירות), מטריצת בהירות 8x8, 1 (סמן צבע), מטריצת צבע 8x8].
הערך 0 של סמן מטריצת הבהירות והערך 1 של סמן הכרומה מופיעים באופן עקבי במספר מכשירים, כולל טלפונים שמפרידים בין שתי המטריצות לקטעי DQT נפרדים בקובץ ה-JPEG. בדרך כלל, למטריצות של בהירות יש מגוון ערכים רחב יותר בהשוואה למטריצות של כרומה, כי העין האנושית רגישה יותר לבהירות מאשר לכרומה, ותמונות JPEG לוקחות את זה בחשבון.
למטה מוצגות דוגמאות של מטריצות בהירות וצבע שחולצו עבור גורמי איכות של 85 ו-25 במצלמה האחורית של Pixel 4 שמצלמת את scene2_a באמצעות מתקן הבדיקה של ITS.
ערכי המטריצה עולים (כלומר, הדחיסה גדלה) באופן משמעותי בהגדרה של איכות נמוכה יותר. הטבלאות האלה יודפסו עם הסקריפט רק אם יוחל הדגל debug=True. שימו לב להבדלים הגדולים יותר בין הערכים במטריצות של בהירות בהשוואה למטריצות של כרומה.
luma matrix (quality = 85) chroma matrix (quality = 85)
[[ 5 3 4 4 4 3 5 4] [[ 5 5 5 7 6 7 14 8]
[ 4 4 5 5 5 6 7 12] [ 8 14 30 20 17 20 30 30]
[ 8 7 7 7 7 15 11 11] [30 30 30 30 30 30 30 30]
[ 9 12 17 15 18 18 17 15] [30 30 30 30 30 30 30 30]
[17 17 19 22 28 23 19 20] [30 30 30 30 30 30 30 30]
[26 21 17 17 24 33 24 26] [30 30 30 30 30 30 30 30]
[29 29 31 31 31 19 23 34] [30 30 30 30 30 30 30 30]
[36 34 30 36 28 30 31 30]] [30 30 30 30 30 30 30 30]]
luma matrix (quality = 25) chroma matrix (quality = 25)
[[ 32 22 24 28 24 20 32 28] [[ 34 36 36 48 42 48 94 52]
[ 26 28 36 34 32 38 48 80] [ 52 94 198 132 112 132 198 198]
[ 52 48 44 44 48 98 70 74] [198 198 198 198 198 198 198 198]
[ 58 80 116 102 122 120 114 102] [198 198 198 198 198 198 198 198]
[112 110 128 144 184 156 128 136] [198 198 198 198 198 198 198 198]
[174 138 110 112 160 218 162 174] [198 198 198 198 198 198 198 198]
[190 196 206 208 206 124 154 226] [198 198 198 198 198 198 198 198]
[242 224 200 240 184 202 206 198]] [198 198 198 198 198 198 198 198]]
איור 3 מציג את ערכי המטריצה הממוצעים של המצלמה האחורית של Pixel 4 לעומת איכות JPEG. ככל שאיכות ה-JPEG עולה, רמת הדחיסה (הממוצע של מטריצת ה-DQT של בהירות/צבע) יורדת.
איור 3. ממוצעים של מטריצת DQT של בהירות/כרומה במצלמה האחורית של Pixel 4 לעומת איכות JPEG
טענות
- [25, 45, 65, 86], +20 באיכות, יש הפחתה של 20% בממוצעים של מטריצת הכימות
- מטען הייעודי (payload) של מטריצת DQT הוא מספר ריבועי.
תמונה 4 מציגה דוגמה לטלפון שנכשל בבדיקה. שימו לב: בתמונות באיכות נמוכה מאוד (jpeg.quality < 50), אין עלייה בדחיסה במטריצת הכימות.
איור 4. דוגמה לבדיקה שנכשלה
scene2_d/e test_num_faces
הוספנו שתי סצנות חדשות לזיהוי פנים כדי להגדיל את מגוון הפנים שהאלגוריתם לזיהוי פנים בודק. בבדיקות חוזרות של מספר מצלמות, הפנים שהכי קשה לזהות צפויות להיות הפנים הכי שמאליות בסצנה scene2_d. בפרט, יש גם כובע וגם זקן על הדוגמנית, משהו חדש בסצנות הפנים. הסצנות החדשות מוצגות באיורים 5 ו-6.
איור 5. scene2_d
איור 6. scene2_e
טענות
num_faces == 3
scene2_e/test_continuous_picture
שיטה
בבדיקה test_continuous_picture נעשה שימוש ב-scene2_e, אבל אפשר להפעיל אותה עם כל אחת מהסצנות של הפנים. בבדיקה הזו, נלכדים 50 פריימים ברזולוציית VGA עם ההגדרה הראשונה של בקשת הלכידה android.control.afMode = 4
(CONTINUOUS_PICTURE).
מערכת ה-3A צפויה להתייצב בסוף צילום של 50 פריימים.
טענות
- 3A נמצא במצב מאוחד בסוף הצילום.
scene_change/test_scene_change
שיטה
מופעלת בדיקה חדשה כדי לבדוק אם הדגל android.control.afSceneChange מוצהר עם שינוי סצנה. החלפת הסצנה מתבצעת באמצעות הטאבלט. מוצגת סצנה של פנים, ואז הטאבלט מופעל ומושבת כדי ליצור החלפת סצנה. הסצנה משתמשת מחדש ב-scene2_e אבל היא בסצנה נפרדת בגלל
השליטה הנדרשת בטאבלט.
בנוסף, בבדיקה ידנית, אפשר לשנות את הסצנה על ידי נופוף ביד מול המצלמה.
איור 7 מציג תרשים תזמון של הבדיקה. התזמון בין כיבוי המסך לבין הצילום מותאם על סמך תוצאות אירועים מצילומים קודמים.
איור 7. תרשים תזמון של test_scene_change
תנאים לשינוי:
- אם יש שינוי בסצנה ו-
afSceneChange == 1, הבדיקה מחזירהPASS. - אם יש שינוי בסצנה ו-
afSceneChange == 0, השינוי בסצנה מוזז 5 פריימים אחורה כדי לתת יותר זמן ל-afSceneChangeלהופיע. - אם אין שינוי בסצנה והערך הוא
afSceneChange == 1, הבדיקה מחזירהFAIL. - אם אין שינוי בסצנה ו-
afSceneChange == 0, השינוי בסצנה מתרחש 30 פריימים מוקדם יותר כדי שהשינוי בסצנה יתועד.
טענות
- החלפה בין מסכים (סצנות).
- הערך של הדגל
afSceneChangeהוא [0, 1]. - אם אין שינוי בסצנה, מתבצעת התכנסות של 3A (זהה מבחינה פונקציונלית ל-
test_continuous_picture). - אם
afSceneChange == 1, הבהירות חייבת להשתנות בסצנה. -
PASSתוך שישה ניסיונות, עם שינוי בתזמון על סמך התוצאות הקודמות.
scene6/test_zoom
שיטה
נדרשת סצנה חדשה כדי לבדוק את android.control.zoomRatioRange, כי בסצנות הקיימות אין תכונה קטנה מספיק שאפשר להגדיל (סצנות [1, 2, 4]), או שיש בסצנה הרבה אובייקטים שלא קל לזהות, מה שמסבך את תהליך חילוץ התכונות (סצנה 3).
איור 8 מציג את הסצנה החדשה עם מערך רגיל של עיגולים. מערך העיגולים מאפשר להקל על הדרישות לגבי מיקום המרכז של ה-DUT או התרשים, ומאפשר שיהיה עיגול תמיד קרוב למרכז של התמונה שצולמה. בסצנה הזו, מערך של 9x5
עיגולים עם מסגרת שחורה מכסה את כל הטאבלט. כדי להציג את הכיוון, אחד העיגולים מוחלף בריבוע בפינה השמאלית העליונה. גודל העיגולים
הוא תכונה עם שטח של כ-7,500 פיקסלים (radius=50pixels) עבור חיישן בגודל 4,000x3,000 שצולם עם שדה ראייה (FoV) של כ-80 מעלות.
איור 8. סצנת test_zoom
איור 9. Pixel 4 cam[0] zoom = [1, 3.33, 5.67, 8] images with found circle
איור 9 מציג תמונות שצולמו במצלמה האחורית של Pixel 4 כשהזום גדל מ-1 ל-8x בארבעה שלבים. סט התמונות הזה צולם ללא הקפדה מיוחדת על המיקום במרכז, למעט שימוש בצמצם לבדיקת הטלפון עם שני פתחים כדי לאפשר בדיקה של המצלמות הקדמית והאחורית. צפוי היסט מהמרכז, והוא נצפה כשהטאבלט של התרשים נמצא מעט משמאל למרכז. בנוסף, התרשים נראה מתאים לבדיקה עם יחסי שינוי גודל של יותר מפי 8.
חיפוש מעגלים
הבדיקה כוללת שיטה find_circle() באמצעות findContours שמוצאת את כל קווי המתאר ומצמצמת את החיפוש של קווי המתאר לעיגולים הרצויים על ידי בדיקת הדברים הבאים:
- השטח של קווי המתאר צריך להיות גדול מ-10 פיקסלים.
- הקווים חייבים להיות
NUM_PTS >= 15. - המרכזים של קווי המתאר צריכים להיות שחורים.
- הקווים צריכים להיות דומים לעיגול, כלומר השטח שלהם צריך להיות קרוב לשטח של קו המתאר pi*r2.
טווח בדיקה
התהליך של android.control.zoomRatioRange מחולק ל-10 שלבים.
- [1, 7] בדיקות [1, 1.67, 2.33, 3, 3.67, 4.33, 5, 5.67, 6.33, 7]
הזום נעצר אם העיגול שזוהה נוגע בגבולות התמונה. יש בדיקה שמוודאת שהושגה רמת זום מספקת בבדיקה (10x).
טענות
- לפחות עיגול אחד נמצא בכל הגדרת זום.
- המערכת בודקת פי 10 או מקסימום
android.control.zoomRatioRange. - רדיוס העיגול משתנה בהתאם לזום (סובלנות של 10% מהצפוי).
- ההיסט של מרכז העיגול מהמרכז משתנה בהתאם לזום (RTOL 10% מהצפוי).
- הגעתם לרמת הזום הנדרשת (פי 2).
שיפור בדיקת המצלמה המוגבלת
ב-Android 11, הבדיקות בטבלה הבאה בודקות מצלמות LIMITED. בנוסף לבדיקות החדשות, הבדיקה scene4/test_aspect_ratio_and_crop עודכנה כדי לאפשר בדיקה של מכשירי LIMITED עם רמת API ראשונית של 30 ומעלה.
| סצנה | שם הבדיקה |
|---|---|
| 0 | test_vibration_restrictions |
| 2_a | test_jpeg_quality |
| 2_d/2_e | test_num_faces |
| 4 | test_aspect_ratio_and_crop |
| 6 | test_zoom |
באיור 10 מוצג מפענח סודי של ITS ב-Android 11. בטבעת לפענוח סודות מוצגות הגדרות הבדיקה שחוסמות בדיקות ספציפיות. הסיווג מבוסס על קוד צבעים כדי להקל על הצפייה. הפריטים העיקריים שמוגבלים לגישה הם:
MANUAL_SENSORREAD_3A*נדרשMANUAL SENSORCOMPUTE_TARGET_EXPOSURES*נדרשMANUAL SENSORPER_FRAME_CONTROLRAWSENSORS*REALTIMEMULTI_CAMERA
MANUAL SENSOR, READ_3A, COMPUTE_TARGET_EXPOSURES ו-PER_FRAME_CONTROL שולטים ברוב הבדיקות. בנוסף, בדיקות שמופעלות במכשירי LIMITED מודגשות בירוק בהיר.
איור 10. טבעת פענוח סודית של Android 11