אפקט בוקה במצלמה הוא אפקט של עומק שדה רדוד שנוצר על ידי טשטוש חלקים מהסצנה כדי שהם לא יהיו במוקד. במצלמות בניידים, הפוקוס מתקבל באמצעות נתוני עומק שהתקבלו מראיית הסטריאו משתי מצלמות או מפוטודיודות כפולות (PD) של מצלמה אחת.
החל מ-Android 11, פלטפורמת Android תומכת בהטמעות bokeh ומספקת ממשקי API להפיכת התכונה לזמינה לאפליקציות צד שלישי.
הטמעה
כדי להפוך את תכונת ה-Bokh במצלמה לזמינה במכשיר, מבצעים את הפעולות הבאות:
פרסום של
ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES
:התג הזה בפורמט של מערך טריופל בן שלושה מספרים שלמים, כאשר כל טריופל בפורמט
{mode, maxWidth, maxHeight}
. בנוסף ל-{ANDROID_CONTROL_EXTENDED_SCENE_MODE_DISABLED, 0, 0}
, ב-HAL של המצלמה צריך להופיע גם אחד מהמצביםANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTURE
אוANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUS
או שניהם, עם גדלי הסטרימינג המקסימליים התואמים.פרסום
ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES
:התג הזה בפורמט של מערך
{minZoomRatio, maxZoomRatio}
, שמכיל את כל טווחי יחס הזום של מצב תצוגה מורחב מופעל, באותו הסדר כמו ב-ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES
. אם טווח הזום הוא[1.0, 1.0]
, סימן שאין תמיכה בזום.אכלוס
ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE
ב-ANDROID_CONTROL_AVAILABLE_MODES
.
כדי שאפליקציה תפעיל את תכונת ה-bokeh, האפליקציה צריכה להגדיר את ANDROID_CONTROL_MODE
לערך ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE
ואת ANDROID_CONTROL_EXTENDED_SCENE_MODE
לאחד מהמצבים הנתמכים של סצנה מורחבת.
חשוב לדעת שהטמעת אפקט בוקהה עלולה להוביל לצריכת זיכרון נוספת בגלל חישוב סטראוסקופי.
אם אי אפשר להחיל מצב תצוגה מורחב נתמך לכל פריים, והפעלה או השבתה שלו גורמות לעיכובים לא צפויים, צריך לכלול את ANDROID_CONTROL_EXTENDED_SCENE_MODE
ב-ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
. במקביל, מטמיעים את השיטה ICameraDeviceSession::isReconfigurationRequired()
כדי להימנע מהגדרה מחדש של מצבי סצנה מורחבים שלא דורשים הגדרה מחדש.
אימות
כדי לאמת את תכונת הבוקה במכשיר, מריצים את הבדיקות הבאות של CTS, VTS ו-CTS Verifier:
CtsCameraTestCases
VtsHalCameraProviderV2_4TargetTest
CameraBokehTest
ב-CTS Verifier