تست دوربین ITS

این صفحه فهرست جامعی از تست‌های مجموعه تست تصویر دوربین (ITS) را ارائه می‌کند که بخشی از تأییدکننده مجموعه تست سازگاری Android (CTS) است. تست‌های ITS تست‌های عملکردی هستند، به این معنی که کیفیت تصویر را اندازه‌گیری نمی‌کنند، اما همه عملکردهای دوربین تبلیغاتی همانطور که انتظار می‌رود کار می‌کنند. این سند به توسعه‌دهندگان و آزمایش‌کنندگان اجازه می‌دهد بفهمند که آزمایش‌های فردی چه می‌کنند و چگونه خطاهای آزمایش را اشکال‌زدایی کنند.

دوربین ITS gates را بر اساس ویژگی های دوربین مورد نیاز، سطح 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 اجرا شوند.

تست ها بر اساس صحنه به صورت زیر گروه بندی می شوند:

برای توضیح هر صحنه به بخش های جداگانه مراجعه کنید.

صحنه 0

تست های Scene0 به اطلاعات صحنه خاصی نیاز ندارند. اما برای تست ژیروسکوپ و لرزش گوشی باید ثابت باشد.

test_jitter

لرزش را در مهرهای زمانی دوربین اندازه گیری می کند.

API های آزمایش شده:

پاس: حداقل 30 میلی‌ثانیه دلتا بین فریم‌ها وجود دارد.

test_jitter_plot.png

test_jitter_plot.png (به محدوده کوچک محور y توجه کنید. Jitter در واقع در این نمودار کوچک است.)

test_metadata

اعتبار ورودی های فراداده را آزمایش می کند. به نتایج عکس‌برداری و ویژگی‌های دوربین به اشیاء نگاه می‌کند. این آزمایش از نوردهی و دریافت مقادیر auto_capture_request استفاده می کند زیرا محتوای تصویر مهم نیست.

API های آزمایش شده:

Pass: سطح سخت‌افزار، rollingShutterSkew ، برچسب‌های frameDuration ، timestampSource ، croppingType ، blackLevelPattern ، pixel_pitch ، FoV، فاصله هایپرکانونی موجود هستند و مقادیر معتبری دارند.

test_request_capture_match

آزمایش می کند که دستگاه با بازخوانی فراداده ضبط، مقادیر نوردهی و افزایش صحیح را می نویسد.

API های آزمایش شده:

پاس: درخواست و گرفتن مقادیر فراداده در تمام عکس‌ها مطابقت دارد.

test_sensor_events

آزمایش می کند که دستگاه پرس و جو می کند و رویدادهای حسگر را برای دستگاه هایی که پشتیبانی از همجوشی حسگر را تبلیغ می کنند چاپ می کند. سنسورهای مورد انتظار شتاب سنج، ژیروسکوپ و مغناطیس سنج هستند. این تست فقط در صورتی کار می کند که صفحه نمایش روشن باشد، یعنی دستگاه در حالت آماده به کار نیست.

API های آزمایش شده:

پاس: رویدادها برای هر سنسور دریافت می شود.

test_solid_color_test_pattern

آزمایش‌هایی که الگوهای تست رنگ ثابت به درستی برای بی‌صدا کردن دوربین ایجاد می‌شوند. اگر قطع دوربین پشتیبانی می شود، الگوهای تست رنگ ثابت باید پشتیبانی شوند. اگر بی‌صدا کردن دوربین پشتیبانی نمی‌شود، الگوهای تست رنگ ثابت فقط در صورتی آزمایش می‌شوند که قابلیت تبلیغ شده باشد.

اگر تصاویر RAW پشتیبانی می شوند، تخصیص رنگ نیز آزمایش می شود. رنگ های تست شده مشکی، سفید، قرمز، آبی و سبز هستند. برای دوربین هایی که از تصاویر RAW پشتیبانی نمی کنند، فقط مشکی تست شده است.

API های آزمایش شده:

پاس: الگوهای تست جامد پشتیبانی شده رنگ صحیح هستند و واریانس کمی در تصویر وجود دارد.

test_test_pattern

پارامتر android.sensor.testPatternMode را برای گرفتن فریم‌ها برای هر الگوی آزمایشی معتبر آزمایش می‌کند و بررسی می‌کند که فریم‌ها برای رنگ‌های ثابت و نوارهای رنگی درست تولید شده‌اند. این آزمون شامل مراحل زیر است:

  1. تصاویر را برای همه الگوهای تست پشتیبانی شده می گیرد.
  2. یک بررسی صحت ساده برای الگوی تست رنگ ثابت و نوارهای رنگی انجام می دهد.

API های آزمایش شده:

پاس: الگوهای تست پشتیبانی شده به درستی تولید می شوند.

test_test_patterns_2

test_test_patterns_2.jpg

test_tonemap_curve

تبدیل الگوی آزمایشی از RAW به YUV را با نقشه خطی آزمایش می کند. این آزمایش به android.sensor.testPatternMode = 2 (COLOR_BARS) نیاز دارد تا یک الگوی تصویر عالی برای تبدیل نقشه تن ایجاد کند. اطمینان حاصل می کند که خط لوله دارای خروجی های رنگی مناسب با نقشه خطی و ورودی تصویر ایده آل است (متکی به test_test_patterns ).

API های آزمایش شده:

پاس: YUV و RAW شبیه یکدیگر هستند.

test_tonemap_curve_raw_2

test_tonemap_curve_raw_2.jpg

test_tonemap_curve_yuv_2.jpg

test_tonemap_curve_yuv_2.jpg

test_unified_timestamp

آزمایش می کند که آیا رویدادهای حسگر تصویر و حرکت در یک حوزه زمانی هستند یا خیر.

API های آزمایش شده:

پاس: مهرهای زمانی حرکت بین دو مهر زمانی تصویر هستند.

test_vibration_restriction

آزمایش می کند که آیا لرزش دستگاه مطابق انتظار عمل می کند یا خیر.

API های آزمایش شده:

پاس: هنگامی که توسط API محدودیت صوتی دوربین بی‌صدا می‌شود، دستگاه نمی‌لرزد.

صحنه 1

صحنه 1 یک نمودار خاکستری است. نمودار خاکستری باید مرکز 30 درصد میدان دید دوربین را پوشش دهد. انتظار می رود نمودار خاکستری 3A (نور خودکار، تعادل رنگ سفید خودکار، فوکوس خودکار) را به طور متوسط ​​به چالش بکشد زیرا منطقه مرکزی هیچ ویژگی ندارد. با این حال، درخواست عکسبرداری کل صحنه را مشخص می کند که شامل ویژگی های کافی برای همگرایی 3A است.

دوربین های RFoV را می توان در دستگاه تست WFoV یا RFoV آزمایش کرد. اگر یک دوربین RFoV در دستگاه تست WFoV آزمایش شود، نمودار با ⅔ مقیاس می شود تا از برخی مرزهای نمودار خاکستری در FoV اطمینان حاصل شود تا به همگرایی 3A کمک کند. برای توضیحات دقیق تر از دستگاه های تست دوربین، دوربین ITS-in-a-a-box را ببینید.

صحنه 1

صحنه 1: نمودار اندازه کامل (سمت چپ). ⅔ نمودار مقیاس شده (راست).

test_ae_precapture_trigger

هنگام استفاده از ماشه پیش گرفتن، دستگاه حالت AE را آزمایش می کند. پنج درخواست دستی را با AE غیرفعال می گیرد. آخرین درخواست دارای یک ماشه Precapture AE است که باید نادیده گرفته شود زیرا AE غیرفعال است.

API های آزمایش شده:

پاس: AE همگرا می شود.

test_auto_vs_manual

تست‌هایی که عکس‌های خودکار و دستی گرفته‌اند یکسان هستند.

API های آزمایش شده:

پاس: افزایش و تبدیل دستی تراز سفیدی گزارش شده در هر نتیجه عکسبرداری با estimate تعادل رنگ سفید خودکار از الگوریتم 3A دوربین مطابقت دارد.

test_auto_vs_manual_auto

test_auto_vs_manual_auto.jpg

test_auto_vs_manual_wb

test_auto_vs_manual_wb.jpg

test_auto_vs_manual_manual_wb_tm

test_auto_vs_manual_manual_wb_tm.jpg

تست_سیاه_سفید

تست هایی که دستگاه تصاویر سیاه و سفید کامل تولید می کند. دو عکس می گیرد، اولی با بهره بسیار کم و نوردهی کوتاه که منجر به یک عکس سیاه می شود و دومی با بهره بسیار زیاد و نوردهی طولانی که منجر به یک عکس سفید می شود.

API های آزمایش شده:

Pass: تصاویر سیاه و سفید تولید می کند. کانال های اشباع شده تصاویر سفید دارای مقادیر RGB [255، 255، 255] با حاشیه خطای کمتر از 1٪ اختلاف هستند.

تست_سیاه_سفید_سیاهتست_سیاه_سفید_سیاه
test_black_white_black.jpg test_black_white_white.jpg

test_black_white_plot_means

test_black_white_plot_means.png

test_burst_capture

تأیید می کند که کل خط لوله ضبط می تواند با سرعت ضبط کامل و زمان CPU مطابقت داشته باشد.

API های آزمایش شده:

Pass: مجموعه ای از تصاویر در اندازه کامل را می گیرد، افت فریم و روشنایی تصویر را بررسی می کند.

test_burst_sameness_manual

5 بار پشت سر هم از 50 عکس با تنظیمات ضبط دستی می گیرد و بررسی می کند که همه آنها یکسان هستند. از این آزمایش می توان برای شناسایی فریم های پراکنده ای که به روش متفاوتی پردازش می شوند یا مصنوعاتی دارند استفاده کرد.

API های آزمایش شده:

پاس: تصاویر از نظر بصری و در مقادیر RGB یکسان هستند.

Fail: یک افزایش یا کاهش نمودار میانگین RGB را در ابتدای هر انفجار نشان می دهد

  • تحمل برای first_API_level <30 3٪ است
  • تحمل برای first_API_level >= 30 2٪ است

test_burst_sameness_manual_mean

test_burst_sameness_manual_mean.jpg

test_burst_sameness_manual_plot_means

test_burst_sameness_manual_plot_means.png

test_capture_result

آزمایش می کند که داده های معتبر در اشیاء CaptureResult برمی گردند. عکسبرداری خودکار، دستی و خودکار انجام می دهد.

API های آزمایش شده:

پاس: ابرداده برای همه عکس‌برداری‌ها معتبر است و تنظیمات دستی در ضبط خودکار دوم به بیرون درز نمی‌کنند. تصحیح سایه لنز را برای عکسبرداری ترسیم می کند.

test_capture_result_plot_lsc_auto_ch0

test_capture_result_plot_lsc_auto_ch0.png

test_crop_region_raw

آزمایش می کند که جریان های RAW قابل برش نیستند.

API های آزمایش شده:

پاس: تصاویر YUV در مرکز برش داده می شوند اما تصاویر خام نه.

test_crop_region_raw_comp_raw_crop

test_crop_region_raw_comp_raw_crop.jpg

test_crop_region_raw_comp_raw_full

test_crop_region_raw_comp_raw_full.jpg

test_crop_region_raw_comp_yuv_crop

test_crop_region_raw_comp_yuv_crop.jpg

test_crop_region_raw_yuv_full

test_crop_region_raw_yuv_full.jpg

test_crop_regions

آزمایش هایی که مناطق کشت کار می کنند. یک تصویر کامل می گیرد و وصله هایی از 5 ناحیه مختلف (گوشه ها و مرکز) ایجاد می کند. با مجموعه برش برای 5 منطقه عکس می گیرد. مقادیر پچ و برش تصویر را با هم مقایسه می کند.

API های آزمایش شده:

Pass: تصویر ناحیه برش خورده با وصله مربوط به تصویر برش مطابقت دارد.

test_dng_noise_model

بررسی می کند که پارامترهای مدل خام DNG صحیح هستند. طرح، واریانس اندازه‌گیری شده یک وصله مرکزی کارت خاکستری را در عکس‌های خام گرفته‌شده در طیف وسیعی از حساسیت‌ها نشان می‌دهد و این مقادیر را با واریانسی که در هر حساسیت انتظار می‌رود توسط مدل نویز DNG در HAL دوربین مقایسه می‌کند (بر اساس پارامترهای O,S در اشیاء نتیجه گرفتن بازگردانده می شوند). برای جزئیات بیشتر در مورد مدل نویز DNG، سند زیر را در مورد مدل نویز DNG دانلود کنید.

API های آزمایش شده:

پاس: پارامترهای مدل خام DNG صحیح است. مقادیر RGB مورد انتظار با مقادیر واقعی RGB اندازه گیری شده مطابقت دارد.

test_dng_noise_model_plog

test_dng_noise_model_plog.png

test_ev_compensation_advanced

آزمایش هایی که نشان می دهد جبران ارزش نوردهی (EV) اعمال می شود. این آزمایش نوردهی را در هشت مرحله افزایش می دهد و روشنایی اندازه گیری شده را در مقابل روشنایی مورد انتظار بررسی می کند. مقادیر مورد انتظار از روشنایی تصویر بدون اعمال جبران EV محاسبه می شود و اگر مقادیر محاسبه شده از محدوده مقدار واقعی تصویر بیشتر شود، مقدار مورد انتظار اشباع می شود. اگر مقادیر مورد انتظار و مقادیر اندازه‌گیری شده مطابقت نداشته باشند یا تصاویر در عرض پنج مرحله بیش از حد نوردهی کنند، آزمایش با شکست مواجه می‌شود.

API های آزمایش شده:

پاس: تصاویر افزایش نوردهی را بدون نوردهی بیش از حد در پنج مرحله نشان می‌دهند.

test_ev_compensation_advanced_plot_means

test_ev_compensation_advanced_plot_means.png

test_ev_compensation_basic

آزمایش می کند که جبران EV با استفاده از محدوده ایجاد شده با CONTROL_AE_COMPENSATION_STEP اعمال می شود. در هر مقدار جبرانی هشت فریم گرفته می شود.

API های آزمایش شده:

پاس: با افزایش تنظیم جبران EV، میزان عکس‌برداری افزایش می‌یابد، و هشت فریم ثبت‌شده برای هر تنظیم جبران EV دارای مقادیر luma پایدار هستند.

test_ev_compensation_basic

test_ev_compensation_basic.png

test_exposure_x_iso

تست هایی که نشان می دهد نوردهی ثابت به عنوان ISO و زمان نوردهی متفاوت است. مجموعه‌ای از عکس‌ها را می‌گیرد که ISO و زمان نوردهی برای متعادل کردن یکدیگر انتخاب شده‌اند. نتایج باید روشنایی یکسانی داشته باشند، اما در طول توالی تصویر باید نویزتر شود. تأیید می کند که مقادیر میانگین پیکسل های نمونه به یکدیگر نزدیک هستند. اطمینان حاصل می کند که تصاویر روی 0 یا 1 قرار نگرفته اند (که آنها را مانند خطوط صاف می کند). با تنظیم پرچم debug در فایل پیکربندی، آزمایش را می توان با تصاویر RAW نیز اجرا کرد.

API های آزمایش شده:

پاس: تصاویر دارای روشنایی یکسان هستند، اما با ISO بالاتر نویزتر می شوند. صفحات RGB زمانی که مقدار ISO*exposure در فضای بهره آزمایش شده ثابت باشد صاف هستند.

مکانیسم شکست:

  • در test_exposure_plot_means.png ، با افزایش مقادیر ضریب بهره (محور x)، مقادیر میانگین صفحه نرمال شده RGB (محور y) شروع به انحراف از مقادیر ضریب بهره کم می کند.

test_exposure_plot_means

test_exposure_plot_means.png

test_exposure_mult=1.00test_exposure_mult=64.00
test_exposure_mult=1.00.jpg test_exposure_mult=64.00.jpg

test_jpeg

آزمایش‌هایی که تصاویر YUV و تصاویر JPEG دستگاه را تبدیل کرده‌اند یکسان به نظر می‌رسند. تست مرکز 10% تصویر را می گیرد و مقدار RGB را محاسبه می کند و مطابقت آنها را تأیید می کند.

API های آزمایش شده:

Pass: میانگین تفاوت RGB بین هر تصویر کمتر از 3٪ است.

test_jpeg_fmt=jpg.jpgtest_jpeg=fmt=yuv.jpg
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.jpgtest_latching_i=01.jpgtest_latching_i=02.jpg
test_latching_i=00.jpg test_latching_i=01.jpg test_latching_i=02.jpg
test_latching_i=03.jpgtest_latching_i=04.jpgtest_latching_i=05.jpg
test_latching_i=03.jpg test_latching_i=04.jpg test_latching_i=05.jpg
test_latching_i=06.jpgtest_latching_i=07.jpgtest_latching_i=08.jpg
test_latching_i=06.jpg test_latching_i=07.jpg test_latching_i=08.jpg
test_latching_i=09.jpgtest_latching_i=10.jpgtest_latching_i=11.jpg
test_latching_i=09.jpg test_latching_i=10.jpg test_latching_i=11.jpg
test_latching_i=12.jpg
test_latching_i=12.jpg

test_latching_plot_means

test_latching_plot_means.png

test_linearity

آزمایش می کند که پردازش دستگاه را می توان به پیکسل های خطی معکوس کرد. دنباله ای از عکس ها را با دستگاه به سمت یک هدف یکنواخت می گیرد.

API های آزمایش شده:

پاس: مقادیر R، G، B باید به صورت خطی با افزایش حساسیت افزایش یابد.

test_linearity_plot_means

test_linearity_plot_means.png

test_locked_burst

تست قفل 3A و انفجار YUV (با استفاده از تنظیم خودکار). این آزمون برای قبولی در دستگاه‌های محدودی طراحی شده است که MANUAL_SENSOR یا PER_FRAME_CONTROLS ندارند. تست سازگاری تصویر YUV را بررسی می کند در حالی که بررسی نرخ فریم در CTS است.

API های آزمایش شده:

پاس: عکس‌ها یکدست به نظر می‌رسند.

test_locked_burst_frame0

test_locked_burst_frame0.jpg

test_locked_burst_frame1

test_locked_burst_frame1.jpg

test_locked_burst_frame2

test_locked_burst_frame2.jpg

test_param_color_correction

آزمایش می کند که پارامترهای android.colorCorrection.* هنگام تنظیم اعمال می شوند. عکس هایی با مقادیر تبدیل و افزایش متفاوت می گیرد، و آزمایش می کند که به نسبت متفاوت به نظر می رسند. تبدیل و سود به گونه ای انتخاب می شوند که خروجی به طور فزاینده ای قرمز یا آبی شود. از نقشه خطی استفاده می کند. نگاشت تن تکنیکی است که در پردازش تصویر برای نگاشت یک مجموعه از رنگ ها به مجموعه ای دیگر به منظور تقریب ظاهر تصاویر با دامنه دینامیکی بالا در محیطی که محدوده دینامیکی محدودتری دارد استفاده می شود.

API های آزمایش شده:

پاس: مقادیر R و B با توجه به تبدیل افزایش می یابد.

test_param_color_correction_plot_means

test_param_color_correction_plot_means.png

*محور x درخواست های ضبط است: 0 = وحدت، 1 = تقویت قرمز، 2 = تقویت آبی

test_param_color_correction_req=0

test_param_color_correction_req=0.jpg

test_param_color_correctness_req=1

test_param_color_correctness_req=1.jpg (تقویت R)

test_param_color_correction_req=2

test_param_color_correction_req=2.jpg (تقویت B)

test_param_flash_mode

آزمایش می کند که پارامتر android.flash.mode اعمال می شود. به صورت دستی نوردهی را در سمت تاریک قرار می دهد، به طوری که مشخص است که فلاش روشن شده است یا نه، و از یک نقشه خطی استفاده می کند. مرکز را با تصویر کاشی بررسی می کند تا ببیند آیا یک گرادیان بزرگ ایجاد شده است تا بررسی کند که فلاش روشن شده است یا خیر.

API های آزمایش شده:

Pass: مرکز تصویر کاشی دارای یک گرادیان بزرگ است به این معنی که فلاش شلیک می شود.

test_param_flash_mode_1

test_param_flash_mode_1.jpg

test_param_flash_mode_1_tile

test_param_flash_mode_1_tile.jpg

test_param_flash_mode_2

test_param_flash_mode_2.jpg

test_param_flash_mode_2_tile

test_param_flash_mode_2_tile.jpg

test_param_noise_reduction

آزمایش می کند که هنگام تنظیم پارامتر android.noiseReduction.mode به درستی اعمال شود. با دوربین کم نور عکس می گیرد. از یک بهره آنالوگ بالا برای اطمینان از نویز بودن تصویر گرفته شده استفاده می کند. سه عکس برای NR خاموش، "سریع" و "کیفیت بالا" می گیرد. همچنین تصویری با بهره کم و NR خاموش می گیرد و از واریانس آن به عنوان خط پایه استفاده می کند. هرچه SNR (نسبت سیگنال به نویز) بالاتر باشد، کیفیت تصویر بهتر است.

API های آزمایش شده:

پاس: SNR با حالت های مختلف کاهش نویز متفاوت است و مانند نمودار زیر رفتار می کند.

test_param_noise_reduction_plot_SNRs

test_param_noise_reduction_plot_SNRs.png

0: OFF، 1: FAST، 2: HQ، 3: MIN، 4: ZSL

test_param_noise_reduction_high_gain_nr=0

test_param_noise_reduction_high_gain_nr=0.jpg

test_param_noise_reduction_high_gain_nr=1

test_param_noise_reduction_high_gain_nr=1.jpg

test_param_noise_reduction_high_gain_nr=2

test_param_noise_reduction_high_gain_nr=2.jpg

test_param_noise_reduction_high_gain_nr=3

test_param_noise_reduction_high_gain_nr=3.jpg

test_param_noise_reduction_low_gain

test_param_noise_reduction_low_gain.jpg

test_param_shading_mode

آزمایش می کند که پارامتر android.shading.mode اعمال می شود.

API های آزمایش شده:

پاس: حالت‌های سایه‌زنی تغییر می‌کنند و نقشه‌های سایه‌زنی لنز مطابق انتظار اصلاح می‌شوند.

test_param_shading_mode_ls_maps_mode_0_loop_0

test_param_shading_mode_ls_maps_mode_0_loop_0.png

test_param_shading_mode_ls_maps_mode_1_loop_0

test_param_shading_mode_ls_maps_mode_1_loop_0.png

test_param_shading_mode_ls_maps_mode_2_loop_0

test_param_shading_mode_ls_maps_mode_2_loop_0.png

test_param_tonemap_mode

آزمایش هایی که پارامتر android.tonemap.mode اعمال می شود. منحنی های نقشه رنگی مختلف را برای هر کانال R، G، B اعمال می کند و بررسی می کند که تصاویر خروجی مطابق انتظار اصلاح شده باشند. این آزمون از دو تست تست 1 و تست 2 تشکیل شده است.

API های آزمایش شده:

پاس:

  • test1: هر دو تصویر دارای نقشه خطی هستند، اما n=1 دارای شیب تندتری است. کانال G (سبز) برای تصویر n=1 روشن تر است.
  • test2: نقشه تن یکسان، اما طول متفاوت. تصاویر هم همینطور.
test_param_tonemap_mode_n=0.jpgtest_param_tonemap_mode_n=1.jpg
test_param_tonemap_mode_n=0.jpg test_param_tonemap_mode_n=1.jpg

test_post_raw_sensitivity_boost

افزایش حساسیت RAW را بررسی می کند. مجموعه ای از تصاویر RAW و YUV را با حساسیت های مختلف می گیرد، ترکیب تقویت حساسیت RAW را پست می کند و بررسی می کند که آیا میانگین پیکسل خروجی با تنظیمات درخواست مطابقت دارد یا خیر.

API های آزمایش شده:

پاس: با افزایش بوست، تصاویر RAW تیره تر می شوند در حالی که روشنایی تصاویر YUV ثابت می مانند

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.jpg

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_raw_s=0224_boost=1600

test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg

test_post_raw_sensitivity_boost_raw_s=0112_boost=3199

test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg

test_post_raw_sensitivity_boost_raw_plot_means

test_post_raw_sensitivity_boost_raw_plot_means.png

test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199

test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400

test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200

test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg

test_post_raw_sensitivity_boost_yuv_plot_means

test_post_raw_sensitivity_boost_yuv_plot_means.png

test_raw_burst_sensitivity

مجموعه ای از تصاویر خام را با افزایش افزایش می دهد و نویز را اندازه گیری می کند. فقط به صورت خام و به صورت رگباری عکس می گیرد.

API های آزمایش شده:

پاس: هر شات نویزتر از شلیک قبلی است، زیرا بهره در حال افزایش است.

از واریانس سلول شبکه آمار مرکز استفاده می کند.

test_raw_burst_sensitivity_variance

test_raw_burst_sensitivity_variance.png

test_raw_exposure

مجموعه ای از تصاویر خام را با افزایش زمان نوردهی می گیرد و مقادیر پیکسل را اندازه گیری می کند.

API های آزمایش شده:

Pass: افزایش ISO (بهره) پیکسل ها را نسبت به نور حساس تر می کند، بنابراین نمودار به سمت چپ حرکت می کند.

test_raw_exposure_s=55

test_raw_exposure_s=55.png

(10⁰ 1 ms، 101 10 ms، 10-1 0.1 ms است)

test_raw_exposure_s=132

test_raw_exposure_s=132.png

test_raw_exposure_s=209

test_raw_exposure_s=209.png

test_raw_exposure_s=286

test_raw_exposure_s=286.png

test_raw_exposure_s=363

test_raw_exposure_s=363.png

test_raw_exposure_s=440

test_raw_exposure_s=440.png

test_raw_sensitivity

مجموعه ای از تصاویر خام را با افزایش حساسیت می گیرد و نویز (واریانس) در مرکز 10% تصویر را اندازه گیری می کند. آزمایش هایی که نشان می دهد هر شات نویزتر از عکس قبلی است.

API های آزمایش شده:

پاس: با هر ضربه واریانس افزایش می یابد.

test_raw_sensitivity_variance

test_raw_sensitivity_variance.png

test_reprocess_noise_reduction

تست هایی که android.noiseReduction.mode برای پردازش مجدد درخواست ها اعمال می شود. تصاویر پردازش شده را با دوربین کم نور می گیرد. از یک بهره آنالوگ بالا برای اطمینان از نویز بودن تصویر ضبط شده استفاده می کند. سه تصویر پردازش شده را برای NR خاموش، "سریع" و "کیفیت بالا" می گیرد. یک تصویر پردازش مجدد با بهره کم و NR خاموش می گیرد و از واریانس آن به عنوان خط پایه استفاده می کند.

API های آزمایش شده:

پاس: FAST >= OFF، HQ >= FAST، HQ >> OFF

نمودار SNR معمولی در مقابل NR_MODE

نمودار SNR معمولی در مقابل NR_MODE

test_tonemap_sequence

دنباله‌ای از عکس‌ها را با منحنی‌های نقشه رنگی مختلف آزمایش می‌کند. 3 عکس دستی با نقشه رنگی خطی می گیرد. 3 عکس دستی با نقشه آهنگ پیش فرض می گیرد. دلتا را بین هر جفت فریم متوالی محاسبه می کند.

API های آزمایش شده:

پاس: 3 فریم یکسان و به دنبال آن یک مجموعه متفاوت از 3 فریم یکسان وجود دارد.

test_tonemap_sequence_i=0

test_tonemap_sequence_i=0.jpg

test_tonemap_sequence_i=1

test_tonemap_sequence_i=1.jpg

test_tonemap_sequence_i=2

test_tonemap_sequence_i=2.jpg

test_tonemap_sequence_i=3

test_tonemap_sequence_i=3.jpg

test_tonemap_sequence_i=4

test_tonemap_sequence_i=4.jpg

test_tonemap_sequence_i=5

test_tonemap_sequence_i=5.jpg

test_yuv_jpeg_all

تست‌هایی که تمام اندازه‌ها و فرمت‌های گزارش‌شده برای عکس‌برداری کار می‌کنند. از یک درخواست دستی با یک نقشه خطی استفاده می کند تا YUV و JPEG هنگام تبدیل توسط ماژول image_processing_utils یکسان به نظر برسند. تصاویر به‌طور پیش‌فرض ذخیره نمی‌شوند، اما می‌توانند با فعال کردن debug_mode ذخیره شوند.

API های آزمایش شده:

پاس: همه مراکز تصویر دارای حداکثر تفاوت RMS (مقدار ریشه میانگین مربع سیگنال) در تصاویر تبدیل شده RGB با 3٪ بالاترین وضوح تصویر YUV هستند.

test_yuv_jpeg_all

test_yuv_jpeg_all.png

test_yuv_plus_dng

تست هایی که اندازه ها و فرمت های گزارش شده برای ثبت تصویر کار می کنند.

API های آزمایش شده:

Pass: تست تصاویر درخواستی را تکمیل و برمی گرداند.

test_yuv_plus_dng

test_yuv_plus_dng.jpg

test_yuv_plus_jpeg

گرفتن یک فریم را به عنوان خروجی YUV و JPEG آزمایش می کند. از یک درخواست دستی با یک نقشه خطی استفاده می کند تا YUV و JPEG هنگام تبدیل توسط ماژول image_processing_utils یکسان به نظر برسند.

API های آزمایش شده:

پاس: تصاویر YUV و JPEG مشابه هستند و کمتر از 1٪ RMS (مقدار ریشه میانگین مربع سیگنال) تفاوت دارند.

test_yuv_plus_jpg_jpg.jpgtest_yuv_plus_jpeg_yuv.jpg
test_yuv_plus_jpg_jpg.jpg test_yuv_plus_jpeg_yuv.jpg

test_yuv_plus_raw

در صورت پشتیبانی، گرفتن یک فریم را به عنوان خروجی RAW/RAW10/RAW12 و YUV آزمایش می‌کند. از یک درخواست دستی با نقشه خطی استفاده می کند، بنابراین انتظار می رود خام و YUV یکسان باشند. مقادیر RGB 10% مرکز تصاویر تبدیل شده را با هم مقایسه می کند. گزارشات android.shading.mode .

API های آزمایش شده:

پاس: تصاویر YUV و خام مشابه هستند و کمتر از 3.5٪ RMS (مقدار ریشه میانگین مربع سیگنال) تفاوت دارند.

test_yuv_plus_raw_shading=1_raw.jpgtest_yuv_plus_raw_shading=1_yuv.jpg
test_yuv_plus_raw_shading=1_raw.jpg test_yuv_plus_raw_shading=1_yuv.jpg

صحنه2_a

scene2_a دارای سه چهره با زمینه خاکستری و لباس خنثی است. چهره ها به گونه ای انتخاب می شوند که طیف وسیعی از رنگ پوست داشته باشند. نمودار باید جهت گیری درستی داشته باشد تا تشخیص چهره به طور بهینه کار کند.

صحنه2_a

صحنه2_a

test_autoframing

رفتار قاب خودکار دستگاه دوربین را آزمایش می کند. بزرگنمایی زیادی انجام می دهد به طوری که هیچ یک از چهره های صحنه قابل مشاهده نیست، حالت قاب خودکار را با تنظیم AUTOFRAMING در CaptureRequest روی True فعال می کند و بررسی می کند که آیا تمام چهره های صحنه اصلی را می توان در هنگام همگرا شدن وضعیت (یعنی زمانی که حالت همگرا می شود) شناسایی کرد. AUTOFRAMING_STATE در CaptureResult روی AUTOFRAMING_STATE_CONVERGED تنظیم شده است.

API های آزمایش شده:

پاس: هر سه چهره شناسایی می شوند.

test_display_p3

آزمایش‌ها، ضبط P3 را در JPEG با استفاده از ColorSpaceProfiles API نمایش می‌دهد. آزمایش می کند که JPEG گرفته شده دارای یک نمایه ICC مناسب در هدر خود باشد و اینکه تصویر حاوی رنگ هایی خارج از محدوده sRGB باشد.

API های آزمایش شده:

پاس: JPEG حاوی نمایه نمایشگر P3 ICC و رنگ‌هایی خارج از محدوده sRGB است.

test_effects

قاب را برای جلوه های دوربین پشتیبانی شده می گیرد و بررسی می کند که آیا آنها به درستی تولید شده اند یا خیر. این آزمایش فقط جلوه‌های OFF و MONO را بررسی می‌کند، اما تصاویر را برای همه جلوه‌های پشتیبانی شده ذخیره می‌کند.

API های آزمایش شده:

Pass: تصویر صحنه را با جلوه‌های OFF و یک تصویر تک رنگ با جلوه‌ها روی MONO می‌گیرد.

test_effects_MONO

test_effects_MONO.jpg

test_format_combos

ترکیب های مختلف فرمت های خروجی را آزمایش می کند.

API های آزمایش شده:

پاس: همه ترکیب ها با موفقیت ضبط می شوند.

test_num_faces

تشخیص چهره را آزمایش می کند.

API های آزمایش شده:

پاس: سه چهره را پیدا می کند.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_reprocess_uv_swap

آزمایش‌هایی که نشان می‌دهد پردازش مجدد YUV هواپیماهای U و V را تعویض نمی‌کند. این با محاسبه مجموع تفاوت‌های مطلق (SAD) بین تصویر پردازش‌شده مجدد و عکس‌برداری غیر پردازش‌شده شناسایی می‌شود. اگر مبادله صفحات خروجی U و V ضبط مجدد منجر به افزایش SAD شود، در این صورت خروجی دارای صفحات U و V صحیح فرض می شود.

API های آزمایش شده:

پاس: هواپیماهای U و V تعویض نمی شوند.

test_reprocess_uv_swap

test_reprocess_uv_swap.png

صحنه2_ب

test_num_faces

تشخیص چهره را با افزایش تنوع رنگ پوست در صحنه های صورت آزمایش می کند.

API های آزمایش شده:

پاس: 3 چهره را پیدا می کند.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_yuv_jpeg_capture_sameness

دو تصویر را با استفاده از بزرگترین فرمت‌های رایج YUV و JPEG با نسبت ابعادی مشابه با بزرگ‌ترین فرمت JPEG با وضوح تصویر 1920x1440 می‌گیرد. jpeg.quality روی 100 تنظیم می کند و درخواست دو سطحی را می گیرد. هر دو تصویر را به آرایه‌های RGB تبدیل می‌کند و اختلاف ریشه سه‌بعدی میانگین مربع (RMS) بین دو تصویر را محاسبه می‌کند.

به‌علاوه، این آزمایش تأیید می‌کند که خروجی‌های YUV برای همه موارد استفاده از جریان پشتیبانی‌شده تا حد معقولی شبیه به YUV با حالت استفاده STILL_CAPTURE هستند.

API های آزمایش شده:

پاس: تصاویر YUV و JPEG برای مورد استفاده STILL_CAPTURE کمتر از 3٪ RMS (مقدار ریشه میانگین مربع سیگنال) تفاوت دارند. تصاویر YUV برای همه موارد استفاده پشتیبانی شده کمتر از 10٪ تفاوت RMS با تصاویر YUV با استفاده STILL_CAPTURE دارند.

صحنه2_ج

test_num_faces

تشخیص چهره را با افزایش تنوع رنگ پوست در صحنه های صورت آزمایش می کند.

API های آزمایش شده:

پاس: 3 چهره را پیدا می کند.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_jpeg_capture_perf_class

تأخیر ضبط JPEG را برای کلاس عملکرد S همانطور که در بخش 2.2.7.2 دوربین در CDD مشخص شده است، آزمایش می کند.

پاس: باید دارای تأخیر ضبط JPEG camera2 کمتر از 1000 میلی ثانیه برای وضوح 1080p باشد که توسط دوربین CTS PerformanceTest در شرایط نور ITS (3000K) برای هر دو دوربین اصلی اندازه‌گیری شده است.

test_camera_launch_perf_class

تأخیر راه اندازی دوربین را برای کلاس عملکرد S طبق بخش 2.2.7.2 دوربین در CDD مشخص شده آزمایش می کند.

پاس: باید تاخیر راه اندازی camera2 (باز کردن دوربین تا اولین فریم پیش نمایش) کمتر از 600 میلی ثانیه باشد که توسط دوربین CTS PerformanceTest در شرایط نوری ITS (3000K) برای هر دو دوربین اصلی اندازه گیری شده است.

test_default_camera_hdr

تست‌هایی که ضبط پیش‌فرض دوربین، Ultra HDR برای کلاس عملکرد 15 است، همانطور که در بخش 2.2.7.2 دوربین CDD مشخص شده است.

پاس: ضبط پیش‌فرض بسته دوربین باید Ultra HDR برای دستگاه کلاس عملکرد 15 باشد.

صحنه2_د

test_num_faces

تشخیص چهره را با افزایش تنوع رنگ پوست در صحنه های صورت آزمایش می کند.

API های آزمایش شده:

پاس: 3 چهره را پیدا می کند.

صحنه2_e

test_continuous_picture

50 فریم با وضوح VGA با اولین تنظیم درخواست عکسبرداری گرفته می شود android.control.afMode = 4 (CONTINUOUS_PICTURE).

API های آزمایش شده:

Pass: سیستم 3A در پایان گرفتن 50 فریم ته نشین می شود.

test_num_faces

تشخیص چهره را با افزایش تنوع رنگ پوست در صحنه های صورت آزمایش می کند.

API های آزمایش شده:

پاس: 3 چهره را پیدا می کند.

صحنه2_f

scene2_f دارای سه چهره با زمینه سفید و لباس سفید است. چهره ها طیف وسیعی از رنگ پوست و کنتراست بالایی با پس زمینه دارند.

scene2_f.png

صحنه2_f

test_num_faces

تشخیص چهره را با افزایش تنوع رنگ پوست در صحنه های صورت آزمایش می کند.

API های آزمایش شده:

پاس: 3 چهره را پیدا می کند.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

صحنه 3

Scene3 از نمودار ISO12233 استفاده می کند و اکثر تست ها از روش استخراج نمودار برای یافتن نمودار در صحنه استفاده می کنند. به همین دلیل، اکثر تصاویر ذخیره شده مانند تصاویر صحنه های 1، 2 یا 4 حاشیه ندارند، بلکه فقط نمودار هستند. نمودار باید در جهت گیری صحیح باشد تا نمودار یاب بهینه کار کند.

test_edge_enhancement

آزمایش می کند که پارامتر android.edge.mode به درستی اعمال شود. تصاویر بدون پردازش مجدد را برای هر حالت لبه می گیرد و وضوح تصویر خروجی و فراداده نتیجه ضبط را برمی گرداند. یک درخواست عکس برداری را با یک حالت لبه، حساسیت، زمان نوردهی، فاصله فوکوس و پارامتر سطح خروجی پردازش می کند.

Pass: حالت HQ (2) واضح تر از حالت OFF (0). حالت FAST (1) واضح تر از حالت OFF . حالت HQ واضح تر یا برابر با حالت FAST است.

API های آزمایش شده:

پارامترهای دوربین تحت تاثیر:

  • EDGE_MODE

test_edge_enhancement_edge=0

test_edge_enhancement_edge=0.jpg

test_edge_enhancement_edge=1

test_edge_enhancement_edge=1.jpg (حالت سریع)

test_edge_enhancement_edge=2

test_edge_enhancement_edge=2.jpg (حالت با کیفیت بالا)

test_flip_mirror

بررسی می کند که آیا تصویر مطابق با بخش CDD 7.5.2 دوربین جلو [C-1-5] به درستی جهت یابی شده است.

تصاویر آینه شده، برگردانده شده یا چرخانده شده را می توان با ویژگی الماس در نزدیکی مرکز شناسایی کرد.

پاس: تصویر برعکس، آینه یا چرخانده نمی شود.

test_flip_mirror_scene_patch

test_flip_mirror_scene_patch.jpg

test_imu_drift

آزمایش می کند که آیا واحد اندازه گیری اینرسی (IMU) خروجی پایداری به مدت 30 ثانیه دارد در حالی که دستگاه ثابت است و یک پیش نمایش با وضوح بالا می گیرد.

API های آزمایش شده:

پاس:

  • دریفت ژیروسکوپ در طول زمان تست کمتر از 0.01 راد است.
  • واریانس خواندن ژیروسکوپ کمتر از 1E-7 راد 2 / ثانیه 2 / هرتز در طول زمان تست است.
  • رانش بردار چرخش در طول زمان آزمایش کمتر از 0.01 راد است.
  • (هنوز اجباری نشده است) رانش ژیروسکوپ کمتر از 1 درجه در ثانیه است.

test_imu_drift_gyro_drift.png

test_imu_drift_gyro_drift.png

test_imu_drift_rotation_vector_drift.png

test_imu_drift_rotation_vector_drift.png

test_landscape_to_portrait

آزمایش می کند که آیا افقی به عمودی برای حسگرهای افقی گرا به درستی عمل می کند.

API های آزمایش شده:

قبولی: آزمون می‌تواند نموداری را با چرخش مورد انتظار (0 درجه زمانی که لغو افقی به عمودی غیرفعال است، 90 درجه وقتی فعال است) تعیین کند.

test_landscape_to_portrait

test_landscape_to_portrait.png

test_lens_movement_reporting

آزمایش می کند که آیا پرچم حرکت لنز به درستی گزارش شده است یا خیر. 24 عکس پشت سر هم با 12 فریم اول در فاصله فوکوس بهینه (همانطور که توسط 3A یافت می شود) و 12 فریم آخر در حداقل فاصله فوکوس می گیرد. در اطراف فریم 12، لنز حرکت می کند و باعث کاهش وضوح می شود. با حرکت لنز به موقعیت نهایی ، وضوح در نهایت تثبیت می شود. پرچم حرکت لنز باید در تمام قاب هایی که در آن وضوح در وضوح در چند فریم اول با لنز ثابت در فاصله کانونی بهینه قرار دارد ، و چند فریم پایانی که لنز در حداقل فاصله کانونی ثابت است ، ادعا شود. قاب دقیقی که لنز حرکت می کند مهم نیست: آنچه بررسی می شود این است که هنگام حرکت لنز ، پرچم حرکت ادعا می شود.

API آزمایش کرد:

پاس: پرچم حرکت لنز در قاب با تغییر وضوح 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

آزمایشات اگر روشهای پردازش مجدد برای تقویت لبه به درستی کار می کنند. یک درخواست ضبط را با یک حالت لبه پردازش مجدد پردازش می کند و حالت های مختلف را برای ضبط با حالت های لبه پردازشگر غیرفعال مقایسه می کند.

API آزمایش کرد:

پاس: وضوح برای حالتهای مختلف لبه صحیح است. HQ (حالت 2) واضح تر از OFF است (حالت 0) ، و بهبود بین حالت های مختلف مشابه است.

test_reprocess_edge_enhancement_plot

test_reprocess_edge_enhancement_plot.png

صحنه 4

صحنه 4 از یک دایره سیاه روی یک پس زمینه سفید در داخل یک مربع تشکیل شده است. آزمایشات در صحنه 4 می تواند به تراز حساس باشد ، بنابراین با شروع از 15 ، می توانید از check_alignment.py در فهرست ابزارها استفاده کنید تا بررسی تراز DUT و نمودار را فعال کنید.

صحنه 4

صحنه 4

test_30_60fps_preview_fov_match

آزمایشاتی که 30 فریم در ثانیه و 60 فریم در ثانیه فیلم های پیش نمایش دارای همان FOV هستند. این تست دو فیلم را ضبط می کند ، یکی با 30 فریم در ثانیه و دیگری با 60 فریم در ثانیه. یک قاب نماینده از هر ویدیو انتخاب شده و مورد تجزیه و تحلیل قرار می گیرد تا اطمینان حاصل شود که تغییر FOV در دو فیلم در مشخصات قرار دارد. آزمایشاتی که نسبت ابعاد دایره ثابت باقی می ماند ، مرکز دایره پایدار است و شعاع دایره ثابت است.

API آزمایش کرد:

پاس: تصاویر کشیده نشده ، مرکز تصاویر بیش از 3 ٪ متفاوت نیست و حداکثر نسبت ابعاد بین 30 فریم بر ثانیه و 60 فیلم تغییر می کند

مکانیسم های شکست:

  • دایره از فیلم 30 فریم در ثانیه از نظر اندازه با ویدیوی 60 فریم در ثانیه متفاوت است.
  • دایره موجود در تصویر ضبط شده توسط خط لوله پردازش تحریف شده است.
  • دایره موجود در تصویر ضبط شده به دلیل درخواست ضبط نسبت ابعاد شدید ، باعث کاهش ارتفاع یا عرض تصویر می شود.
  • دایره موجود در تصویر ضبط شده بازتاب در مرکز دارد و کاملاً پر نمی شود.

test_aspect_ratio_and_crop

آزمایش اگر تصاویر در خط لوله تصویر تحریف شده یا به طور غیر منتظره ای بریده شده اند. از یک دایره از همه قالب ها عکس می گیرد. تأیید می کند که دایره تحریف نشده است ، دایره از مرکز تصویر حرکت نمی کند ، و دایره با نسبت یا وضوح ابعاد مختلف اندازه را نادرست تغییر نمی دهد.

API آزمایش کرد:

پاس: تصاویر کشیده نشده اند ، مرکز تصاویر بیش از 3 ٪ متفاوت نیست و حداکثر FOV ممکن (میدان دید) حفظ می شود.

مکانیسم های شکست:

  • این دوربین با دایره نمایش داده شده روی رایانه لوحی در مرکز صحنه ضبط شده تراز نشده است.
  • دایره موجود در تصویر ضبط شده توسط خط لوله پردازش تحریف شده است.
  • تصویر با وضوح پایین در خط لوله تصویر دو برابر شده است و باعث ایجاد FOV مختلف بین تصاویر با وضوح بالا و پایین می شود.
  • دایره موجود در تصویر ضبط شده به دلیل درخواست ضبط نسبت ابعاد شدید ، باعث کاهش ارتفاع یا عرض تصویر می شود.
  • دایره موجود در تصویر ضبط شده بازتاب در مرکز دارد و کاملاً پر نمی شود.

test_multi_camera_alignment

پارامترهای کالیبراسیون دوربین مربوط به موقعیت یابی دوربین را برای سیستم های چند دوربین آزمایش می کند. با استفاده از زیر دوربین های فیزیکی چند دوربین ، با یکی از دوربین های فیزیکی عکس می گیرد. مرکز دایره را پیدا می کند. مرکز دایره را به مختصات جهان برای هر دوربین می پردازد. تفاوت بین مراکز دایره دوربین ها در مختصات جهان را مقایسه می کند. مختصات جهان را به مختصات پیکسل بازگرداند و در برابر اصل به عنوان یک بررسی اعتبار مقایسه می شود. اندازه های دایره را بررسی می کند که آیا فاصله کانونی دوربین ها متفاوت است یا خیر.

API آزمایش کرد:

پاس: مراکز و اندازه های دایره همانطور که در تصاویر پیش بینی شده در مقایسه با تصاویر ضبط شده با استفاده از داده های کالیبراسیون دوربین و طول کانونی انتظار می رود.

مکانیسم های شکست:

  • LENS_INTRINSIC_CALIBRATION ، LENS_POSE_TRANSLATION یا LENS_POSE_ROTATION مقادیر طراحی هستند و داده های کالیبراسیون واقعی نیستند.
  • سیستم دوربین برای تنظیم تست مناسب نیست. به عنوان مثال ، آزمایش یک سیستم دوربین گسترده و فوق العاده گسترده با دکل تست RFOV. برای اطلاعات بیشتر ، به دوربین آن در یک جعبه FQ1 مراجعه کنید.

test_preview_aspect_ratio_and_crop

این تست مشابه تست TEST_ASPECT_RATIO_AND_CROP برای ضبط های هنوز هم ، فرمت های پیش نمایش پشتیبانی شده را بررسی می کند تا اطمینان حاصل شود که قاب های پیش نمایش کشیده نشده و یا به طور نامناسب خرد نمی شوند. تأیید می کند که نسبت ابعاد دایره تغییر نمی کند ، تصاویر بریده شده دایره را در مرکز قاب نگه می دارند و اندازه دایره برای یک قالب ثابت یا با وضوح مختلف تغییر نمی کند (زمینه نمایش بررسی).

API آزمایش کرد:

پاس: تصاویر کشیده نشده اند ، مرکز تصاویر بیش از 3 ٪ متفاوت نیست و حداکثر FOV ممکن (میدان دید) حفظ می شود.

test_preview_stabilization_fov

اندازه های پیش نمایش پشتیبانی شده را بررسی می کند تا اطمینان حاصل شود که FOV به طور مناسب از آن استفاده می شود. این تست دو فیلم را ضبط می کند ، یکی با ON پیش نمایش و دیگری با OFF پیش نمایش. یک قاب نماینده از هر ویدیو انتخاب شده و مورد تجزیه و تحلیل قرار می گیرد تا اطمینان حاصل شود که تغییر FOV در دو فیلم در مشخصات است.

API آزمایش کرد:

پاس: نسبت ابعاد دایره در مورد ثابت باقی مانده است ، محل مرکزی دایره پایدار است و اندازه دایره بیش از 20 ٪ تغییر نمی کند.

test_video_aspect_ratio_and_crop

فیلم هایی از یک دایره را در داخل یک مربع در تمام قالب های ویدیویی می گیرد. فریم های کلیدی را استخراج می کند و نسبت ابعاد دایره را تغییر نمی دهد ، تصاویر خرد شده دایره را در مرکز نگه می دارند و اندازه دایره برای یک قالب ثابت یا با وضوح متفاوت (بررسی میدان نمایش) تغییر نمی کند.

API آزمایش کرد:

پاس: قاب های ویدئویی کشیده نشده اند ، مرکز قاب ها بیش از 3 ٪ تفاوت ندارند و حداکثر FOV ممکن (میدان دید) حفظ می شود.

صحنه 5

Scene5 به یک صحنه خاکستری یکنواخت روشن نیاز دارد. این کار توسط یک دیفیوزر قرار داده شده بر روی لنز دوربین انجام می شود. ما دیفیوزر زیر را توصیه می کنیم: www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168 .

برای تهیه صحنه ، یک دیفیوزر را در مقابل دوربین وصل کنید و دوربین را به منبع روشنایی در حدود 2000 لوکس نشان دهید. تصاویر ضبط شده برای Scene5 نیاز به نورپردازی پراکنده و بدون هیچ ویژگی مشهود دارند. موارد زیر یک تصویر نمونه است:

صحنه 5

صحنه 5

test_lens_shading_and_color_uniformity

آزمایشاتی که اصلاح سایه لنز به طور مناسب اعمال می شود ، و رنگ یک صحنه یکنواخت تک رنگ به طور مساوی توزیع می شود. این تست را روی یک قاب YUV با Auto 3A انجام می دهد. سایه لنز بر اساس کانال Y ارزیابی می شود. مقدار متوسط ​​Y را برای هر بلوک نمونه مشخص شده اندازه گیری می کند و با مقایسه با مقدار مرکز Y ، پاس یا شکست را تعیین می کند. تست یکنواختی رنگ در فضای R/G و B/G ارزیابی می شود.

API آزمایش کرد:

پاس: در شعاع مشخص شده تصویر ، واریانس مقدار R/G و B/G باید برای گذراندن آزمون کمتر از 20 ٪ باشد.

صحنه 6

Scene6 شبکه ای از دایره های کوچک با یک مربع در یک گوشه برای نشان دادن جهت گیری است. حلقه های کوچک برای آزمایش عملکرد بزرگنمایی در یک محدوده بزرگ مورد نیاز است. آزمایشات در صحنه 6 می تواند به تراز حساس باشد ، بنابراین با شروع از 15 ، می توانید از check_alignment.py در فهرست ابزارها استفاده کنید تا بررسی تراز DUT و نمودار را فعال کنید.

صحنه 6

صحنه 6

test_in_sensor_zoom

آزمایش عملکرد بزرگنمایی دوربین در سنسور ، که تصاویر خام خرد شده را تولید می کند.

با استفاده از جریان استفاده از جریان به CROPPED_RAW ، این آزمایش دو ضبط از محدوده زوم ، یک میدان کامل از نمایش (FOV) و یک تصویر خام خرد شده می گیرد. این تست تصاویر را به آرایه های RGB تبدیل می کند ، تصویر خام خرد شده با اندازه کامل را به اندازه گزارش شده توسط SCALER_RAW_CROP_REGION تبدیل می کند و تفاوت میانگین مربع ریشه سه بعدی (RMS) بین دو تصویر را محاسبه می کند.

API آزمایش کرد:

PASS: تفاوت میانگین مربع ریشه سه بعدی (RMS) بین تصویر خام خرد شده پایین و تصویر خام FOV کمتر از آستانه تعیین شده در آزمون است.

test_zoom

رفتار بزرگنمایی دوربین را آزمایش می کند. ضبط را از محدوده زوم می گیرد و بررسی می کند که آیا دایره ها با بزرگنمایی دوربین بزرگتر می شوند. برای هر قالب (YUV ، JPEG) ، از همان جلسه ضبط دوربین برای همگرایی 3A و گرفتن ضبط استفاده می شود.

API آزمایش کرد:

پاس: اندازه نسبی دایره ضبط شده در برابر نسبت بزرگنمایی درخواست شده دقیق است تا اطمینان حاصل شود که دوربین به درستی بزرگنمایی می شود.

test_zoom

test_zoom برای یافتن کانتور دایره نزدیک به مرکز.

test_low_latency_zoom

رفتار بزرگنمایی دوربین را آزمایش می کند. ضبط از محدوده زوم با android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM) می گیرد و بررسی می کند که دایره های موجود در تصاویر خروجی با نسبت های بزرگنمایی در ابرداده ضبط مطابقت دارند یا خیر. از همان جلسه ضبط دوربین برای همگرایی 3A و گرفتن ضبط استفاده می شود.

API آزمایش کرد:

پاس: اندازه نسبی دایره ضبط شده در برابر ابرداده نتیجه نسبت بزرگنمایی دقیق است.

test_preview_video_zoom_match

تست هایی که هنگام ضبط و بزرگنمایی ، پیش نمایش ویدیو و خروجی ویدیو را نمایش داده و همان خروجی را ضبط می کنید. اندازه دایره نزدیک به مرکز را با نسبت های مختلف بزرگنمایی محاسبه می کند و بررسی می کند که آیا با افزایش نسبت بزرگنمایی ، اندازه دایره افزایش می یابد یا خیر.

API آزمایش کرد:

پاس: اندازه نسبی دایره ضبط شده در برابر نسبت بزرگنمایی درخواست شده در فیلم و پیش نمایش دقیق است.

VGA_640X480_KEY_FRAME.PNG

vga_640x480_key_frame.png (قبل از بزرگنمایی)

preview_640x480_key_frame.png

PREVIEW_640X480_KEY_FRAME.PNG (قبل از بزرگنمایی)

vga_640x480_key_frame_zoomed.png

VGA_640X480_KEY_FRAME.PNG (بعد از بزرگنمایی)

preview_640x480_key_frame_zoomed.png

PREVIEW_640X480_KEY_FRAME.PNG (بعد از بزرگنمایی)

test_preview_zoom

آزمایشاتی که نسبت بزرگنمایی هر قاب پیش نمایش با ابرداده ضبط مربوطه مطابقت دارد. این آزمایش فریم های پیش نمایش را از محدوده زوم می گیرد و کانتور دایره را نزدیک به مرکز می یابد. سپس آزمایش بررسی می کند که دایره انتخاب شده بزرگتر می شود و مرکز دایره با بزرگنمایی دوربین از مرکز تصویر دور می شود.

API آزمایش کرد:

پاس: اندازه نسبی دایره انتخاب شده برای نسبت بزرگنمایی گزارش شده از نتیجه ضبط مربوطه برای همه فریم های پیش نمایش دقیق است. فاصله نسبی دایره انتخاب شده از مرکز تصویر برای نسبت بزرگنمایی گزارش شده از نتیجه ضبط مربوطه از تمام فریم های پیش نمایش دقیق است.

test_zoom

TEST_PREVIEW_ZOOM تصاویر که دایره انتخاب شده نزدیک به مرکز را نشان می دهد

test_session_characteristics_zoom

محدوده نسبت بزرگنمایی را برای کلیه تنظیمات جلسه پشتیبانی شده ذکر شده در CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION آزمایش می کند. برای هر یک از این تنظیمات ، اگر CameraDeviceSetup#isSessionConfigurationSupported True بازگردد ، این آزمایش تأیید می کند که دامنه نسبت بزرگنمایی که در CameraDeviceSetup#getSessionCharacteristics وجود دارد ، می توان به دست آورد.

API آزمایش کرد:

پاس: هر دو نسبت حداقل و حداکثر بزرگنمایی را می توان برای هر SessionConfiguration پشتیبانی شده پشتیبانی شده ذکر شده در CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION دریافت کرد.

صحنه 7

Scene7 یک قاب مستطیل شکل است که به چهار ربع مساوی تقسیم می شود که هر کدام با رنگ دیگری پر شده اند. در مرکز مستطیل یک نمودار لبه شیب دار برای بررسی وضوح قرار دارد. چهار نشانگر Aruco با چهار گوشه بیرونی مستطیل تراز شده است تا در به دست آوردن مختصات دقیق قاب مستطیل اصلی در نسبت های مختلف بزرگنمایی کمک کند.

صحنه 7

صحنه 7

test_multi_camera_switch

این آزمایش تأیید می کند که در طول ضبط پیش نمایش در نسبت های مختلف بزرگنمایی ، سوئیچ بین لنزهای Ultrawide (UW) و گسترده (W) منجر به مقادیر RGB مشابه می شود.

در این آزمون از نسبت های بزرگنمایی مختلف در محدوده از پیش تعریف شده استفاده می کند تا یک ضبط پیش نمایش پویا را انجام دهد و نقطه ای را که دوربین فیزیکی در آن تغییر می کند ، شناسایی کند. این نقطه کراس اوور را از UW به لنز W نشان می دهد.

قاب های ضبط شده در و قبل از نقطه متقاطع برای قرار گرفتن در معرض خودکار (AE) ، تعادل سفید خودکار (AWB) و فوکوس خودکار (AF) تجزیه و تحلیل می شوند.

بررسی AE تضمین می کند که تغییر LUMA در محدوده مورد انتظار برای هر دو لنز UW و W قرار دارد. بررسی AWB تأیید می کند که نسبت های R/G و B/G برای هر دو تصویر لنز UW و W در آستانه مقادیر آستانه قرار دارند. بررسی AF مقدار تخمین وضوح را بر اساس میانگین بزرگی شیب بین تصاویر لنز UW و W ارزیابی می کند.

API آزمایش کرد:

پاس: برای گذراندن آزمون ، چک های AE ، AWB و AF باید همه عبور کنند. موارد زیر معیارهای هر چک است:

  • بررسی AE: تغییر LUMA بین تصاویر لنز UW و W باید کمتر از 0.5 ٪ باشد.
  • بررسی AWB: تفاوت بین مقادیر R/G و B/G برای تصاویر لنز UW و W باید کمتر از 0.5 ٪ باشد.
  • بررسی AF: تغییر وضوح تصویر بین تصاویر لنز UW و W باید کمتر از 2 ٪ باشد.

scene8

Scene8 یک قاب مستطیل شکل است که به چهار منطقه مساوی تقسیم می شود ، هر کدام حاوی یک پرتره با قرار گرفتن در معرض متفاوت یا پوششی با سایه رنگی متفاوت (سایه آبی ، افزایش قرار گرفتن در معرض ، کاهش قرار گرفتن در معرض ، سایه زرد). چهار نشانگر Aruco با چهار گوشه بیرونی مستطیل تراز شده است تا مختصات دقیق قاب مستطیل اصلی بدست آید.

scene8

scene8

test_ae_awb_regions

آزمایشاتی که مقادیر RGB و LUMA هنگام ضبط پیش نمایش در مناطق مختلف قرار گرفتن در معرض خودکار (AE) و مناطق تعادل سفید (AWB) متفاوت است.

این تست یک ضبط پیش نمایش هشت ثانیه ای را ضبط می کند ، AE و اندازه گیری AWB را در هر ربع به مدت دو ثانیه انجام می دهد. سپس این آزمایش یک قاب را از ضبط پیش نمایش هر منطقه استخراج می کند و از قاب های استخراج شده برای انجام چک های زیر AE و AWB استفاده می کند:

  • Check AE: تأیید می کند که اندازه گیری قاب منطقه با کاهش قرار گرفتن در معرض ، مقدار لوما را بیش از 1 ٪ افزایش می دهد تا قاب که منطقه را با افزایش قرار گرفتن در معرض اندازه گیری می کند. این تأیید می کند که تصاویر هنگام اندازه گیری یک منطقه تاریک روشن می شوند.
  • بررسی AWB: تأیید می کند که نسبت قرمز به آبی (از میانگین مقادیر RGB تصویر) در قاب با منطقه اندازه گیری آبی بیش از 2 ٪ بیشتر از قاب با ناحیه اندازه گیری زرد است. این تأیید می کند که تصاویر هنگام اندازه گیری یک منطقه زرد (گرم) یا آبی (خنک) دارای مقدار RGB متعادل هستند.

API آزمایش کرد:

PASS: AE و AWB هر دو پاس را بررسی می کنند.

صحنه 9

Scene9 از هزاران محافل به اندازه تصادفی و رنگی تشکیل شده است تا صحنه ای با تکرارپذیری بسیار کم برای استرس الگوریتم های فشرده سازی JPEG ایجاد شود.

صحنه 9

صحنه 9

test_jpeg_high_entropy

تست هایی که فشرده سازی دوربین JPEG در صحنه 9 با آنتروپی بالا و فاکتور کیفیت JPEG به 100 ٪ کار می کند. فاکتور بزرگنمایی افزایش می یابد تا اطمینان حاصل شود که صحنه نمایش داده شده در رایانه لوحی ، میدان دید دوربین را پر می کند.

API آزمایش کرد:

پاس: پرونده JPEG به درستی فشرده می شود ، نوشته شده و از دیسک خوانده می شود.

test_jpeg_quality

کیفیت فشرده سازی دوربین JPEG را آزمایش می کند. ویژگی های مرحله jpeg از طریق android.jpeg.quality و تضمین می کند که جداول کمیت به درستی تغییر می کند.

API آزمایش کرد:

پاس: ماتریس کمیت با افزایش کیفیت کاهش می یابد. (ماتریس عامل تقسیم را نشان می دهد.)

test_jpeg_quality

Pixel 4 دوربین عقب Luma/Chroma DQT ماتریس میانگین در مقابل کیفیت JPEG

test_jpeg_quality ناموفق بود

مثال آزمون ناموفق

توجه داشته باشید که برای تصاویر با کیفیت بسیار پایین (jpeg.quality <50) ، در ماتریس کمیت افزایش فشرده سازی وجود ندارد.

Scene_video

صحنه scene_video یک صحنه ویدیویی است. این شامل چهار دایره رنگی مختلف است که با نرخ قاب های مختلف در برابر پس زمینه سفید به جلو و عقب حرکت می کنند.

Scene_video

test_preview_frame_drop

آزمایشاتی که نرخ فریم پیش نمایش درخواست شده با صحنه پویا حفظ می شود. این آزمایش بر روی تمام دوربین هایی که در معرض برنامه های شخص ثالث قرار دارند اجرا می شود.

API آزمایش کرد:

پاس: نرخ فریم پیش نمایش در حداکثر محدوده نرخ فریم درخواست شده است و میانگین تغییر بین قاب های متوالی کمتر از تحمل نسبی است که در آزمون تعیین شده است.

endextensions

تست های scene_extensions برای پسوندهای دوربین است و باید از دوربین آن در یک جعبه استفاده کند ، زیرا به کنترل دقیق محیط آزمایش نیاز دارند. علاوه بر این ، تمام نشت نور باید کنترل شود. این ممکن است نیاز به پوشش دکل آزمایشی ، DUT و قرص با پارچه قطره ای و همچنین از بین بردن نشت نور از صفحه جلوی DUT داشته باشد.

strenge_hdr

صحنه scene_hdr از یک پرتره در سمت چپ و کد QR کم کنتراست در سمت راست تشکیل شده است.

strenge_hdr

strenge_hdr

test_hdr_extension

پسوند HDR را آزمایش می کند. ضبط ها را با و بدون فعال شدن پسوند انجام می دهد ، و بررسی می کند که آیا پسوند باعث می شود کد QR قابل تشخیص تر باشد.

API آزمایش کرد:

پاس: پسوند HDR تعداد تغییرات کنتراست مورد نیاز برای تشخیص کد QR را کاهش می دهد یا شیب را در کد QR کاهش می دهد.

Scene_low_light

صحنه scene_low_light از شبکه ای از مربع های مختلف سایه های خاکستری در برابر پس زمینه سیاه تشکیل شده است و شبکه مربع ها با یک طرح قرمز محدود می شوند. مربع ها در جهت گیری منحنی هیلبرت مرتب شده اند.

Scene_low_light

Scene_low_light

test_night_extension

آزمایش شبانه . ضبط را با برنامه افزودنی فعال می کند و موارد زیر را انجام می دهد:

  • حضور 20 مربع را تشخیص می دهد
  • لوما محدود شده توسط هر مربع را محاسبه می کند
  • مقدار لوما متوسط ​​6 مربع اول را با توجه به جهت گیری شبکه منحنی هیلبرت محاسبه می کند
  • تفاوت در مقدار LUMA مربع های متوالی (به عنوان مثال ، Square2 - Square) تا مربع های 5 و 6 (Square6 - Square5) را محاسبه می کند و میانگین پنج تفاوت محاسبه شده را می یابد.

API آزمایش کرد:

پاس: میانگین مقدار لوما 6 مربع اول باید حداقل 85 باشد و میانگین اختلاف در مقدار لوما مربع های متوالی تا مربع های 5 و 6 باید حداقل 17 باشد.

طرح درخشش زیر نشان می دهد که نتیجه تست عبور چگونه به نظر می رسد.

STRENGE_LOW_LIGHT_INGY_PASS

test_low_light_boost_extension

حالت AE Low Light Boost را آزمایش می کند. اگر Camera2 از حالت AE Low Light Boost پشتیبانی می کند ، این تست برای Camera2 انجام می شود. اگر پسوند دوربین حالت شب پشتیبانی شود و پسوند از حالت کم نور AE پشتیبانی کند ، این تست نیز برای پسوند دوربین حالت شب انجام می شود. این تست حالت AE را به سمت کم نور تنظیم می کند ، یک قاب از پیش نمایش می گیرد و موارد زیر را انجام می دهد:

  • حضور 20 جعبه را تشخیص می دهد
  • لوما محدود شده توسط هر جعبه را محاسبه می کند
  • مقدار لوما متوسط ​​6 مربع اول را با توجه به جهت گیری شبکه منحنی هیلبرت محاسبه می کند
  • تفاوت در مقدار LUMA مربع های متوالی (به عنوان مثال ، Square2 - Square) تا مربع های 5 و 6 (Square6 - Square5) را محاسبه می کند و میانگین پنج تفاوت محاسبه شده را می یابد.

API آزمایش کرد:

پاس: میانگین مقدار لوما 6 مربع اول باید حداقل 70 باشد و میانگین تفاوت در مقدار لومای مربع های متوالی تا مربع های 5 و 6 باید حداقل 17 باشد.

flash_flash

تست های scene_flash به یک صحنه تاریک در جعبه فیوژن سنسور نیاز دارند.

test_auto_flash

آزمایشاتی که به صورت خودکار در صحنه تاریک برای دوربین های عقب و جلوی جلوی آن قرار می گیرد. برای دوربین های جلویی ، Auto-Flash از صفحه نمایش برای روشنایی صحنه استفاده می کند ، نه یک واحد فلش فیزیکی. این آزمایش تأیید می کند که با بررسی اینکه مرکز تصویر کاشی با فعال کردن خودکار فلش روشن تر است ، شلیک خودکار شلیک می شود. برای تحریک خودکار فلش ، چراغ های موجود در دکل تست باید خاموش شوند. چراغ ها را می توان به طور خودکار با کنترلر Arduino خاموش کرد. صحنه باید کاملاً تاریک باشد تا آزمون به درستی کار کند. برنامه دوربین JetPack ( JCA ) باید قبل از آزمایش روی دستگاه نصب شود. Flash Auto-Flash برای دوربین های عقب به حالت AE متکی است که باعث ایجاد شود ، اما Flash خودکار برای دوربین های جلویی به AE متکی نیست و همیشه تحریک می شود.

API آزمایش کرد:

PASS: مرکز تصویر کاشی با فعال کردن خودکار فلش روشن تر از تصویر صحنه اصلی برای همه دوربین ها است.

test_flash_strength

تست هایی که کنترل قدرت فلش در حالت SINGLE به درستی انجام می شود.

تأیید می کند که اگر دستگاه از کنترل قدرت فلش در حین استفاده از دوربین در حالت SINGLE پشتیبانی کند ، قدرت فلش با سطح قدرت درخواستی مختلف تغییر می کند. تأیید می کند که کنترل قدرت فلش با AE_MODES مختلف کار می کند. به عنوان مثال ، اگر حالت قرار گرفتن در معرض خودکار ON یا OFF باشد ، سطح استحکام فلش تأثیر آن را در روشنایی دارد و اگر حالت ON_AUTO_FLASH باشد ، سطح استحکام فلش هیچ تاثیری در روشنایی ندارد. برای انجام آزمایش ، چراغ های موجود در دکل آزمایش باید خاموش شوند. چراغ ها را می توان به طور خودکار با کنترلر Arduino خاموش کرد. صحنه باید کاملاً تاریک باشد تا آزمون به درستی کار کند.

API آزمایش کرد:

پاس:

هنگامی که حالت قرار گرفتن در معرض خودکار ON یا OFF است ، با افزایش سطح استحکام فلاش از FLASH_SINGLE_STRENGTH_MAX_LEVEL روشنایی تکه های تصویر افزایش می یابد. هنگامی که حالت قرار گرفتن در معرض خودکار ON_AUTO_FLASH است ، تفاوت در روشنایی تکه های تصویر در تحمل است زیرا سطح استحکام فلاش از Flash به FLASH_SINGLE_STRENGTH_MAX_LEVEL افزایش می یابد.

test_led_snapshot

تست هایی که عکس های LED به تصویر اشباع نمی شوند یا رنگ آن را رنگ نمی کنند.

این تست یک کنترلر روشنایی را به جعبه فیوژن سنسور اضافه می کند تا چراغ ها را کنترل کند. با OFF چراغ ها ، آزمایش با حالت AUTO_FLASH تنظیم شده روی ON ضبط می شود. در طی این ضبط ، آزمایش یک توالی احتیاطی را با تنظیم START aePrecapture شروع می کند و هدف خود را برای Preview تنظیم می کند تا ضبط را با فلاش بدست آورد.

از آنجا که ضبط به دلیل فلاش دارای یک کانون متمایز است ، آزمایش میانگین تصویر فلش کل ضبط را محاسبه می کند و تأیید می کند که آیا مقدار در محدوده (68 ، 102) است. برای بررسی اینکه آیا تصویر به طور معقول متعادل سفید است ، آزمایش نسبت های R/G و B/G را محاسبه می کند و تأیید می کند که آیا نسبت ها در 0.95 و 1.05 هستند.

API آزمایش کرد:

پاس: نسبت های R/G و B/G در 0.95 و 1.05 است. میانگین تصویر فلش در محدوده (68 ، 102) است.

test_preview_min_frame_rate

آزمایشاتی که میزان فریم پیش نمایش در یک صحنه تاریک به درستی کاهش می یابد. برای اینکه این آزمایش به درستی کار کند ، چراغ های موجود در دکل آزمایشی باید توسط کنترلر یا به صورت دستی توسط اپراتور آزمون خاموش شوند.

API آزمایش کرد:

پاس: نرخ فریم پیش نمایش در حداقل محدوده نرخ فریم درخواست شده است و تغییر بین فریم ها کمتر از تحمل مطلق در آزمون است.

test_torch_strength

تست هایی که کنترل قدرت فلش در حالت TORCH به درستی انجام می شود.

تأیید می کند که اگر دستگاه از کنترل قدرت فلش در حین استفاده از دوربین در حالت TORCH پشتیبانی کند ، قدرت مشعل با سطح قدرت درخواستی مختلف تغییر می کند. تأیید می کند که کنترل قدرت فلش با AE_MODES مختلف کار می کند. به عنوان مثال ، اگر حالت قرار گرفتن در معرض خودکار ON یا OFF باشد ، سطح استحکام فلش تأثیر آن را در روشنایی دارد و اگر حالت ON_AUTO_FLASH باشد ، سطح استحکام فلش هیچ تاثیری در روشنایی ندارد. تأیید می کند که مقاومت مشعل در طول مدت پشت سر هم یکسان باقی می ماند و یک جلسه ضبط ویدیو را شبیه سازی می کند. برای انجام آزمایش ، چراغ های موجود در دکل آزمایش باید خاموش شوند. چراغ ها را می توان به طور خودکار با کنترلر Arduino خاموش کرد. صحنه باید کاملاً تاریک باشد تا آزمون به درستی کار کند.

API آزمایش کرد:

پاس:

هنگامی که حالت قرار گرفتن در معرض خودکار ON یا OFF است ، با افزایش سطح استحکام فلاش از FLASH_TORCH_STRENGTH_MAX_LEVEL روشنایی تکه های تصویر افزایش می یابد. هنگامی که حالت قرار گرفتن در معرض خودکار ON_AUTO_FLASH است ، تفاوت در روشنایی تکه های ترکیبی از تصویر در تحمل قرار می گیرد زیرا سطح استحکام فلاش از Flash به FLASH_TORCH_STRENGTH_MAX_LEVEL افزایش می یابد.

حسگر_فیوژن

تست های فیوژن سنسور نیاز به حرکت تلفنی خاص در مقابل الگوی چکمه و نشانگرهای آروکو دارند. برای نتایج بهینه ، اطمینان حاصل کنید که نمودار آزمایش صاف است. نمودارهایی که مسطح نیستند ، برای بسیاری از آزمایشات بر محاسبات چرخش تأثیر می گذارد. نمودار باید با چاپ در 17 "x17" (43x43 سانتی متر) پشت جعبه فیوژن سنسور را پر کند. تست های sensor_fusion می توانند با جعبه فیوژن سنسور خودکار شوند.

نمودار همجوشی سنسور

نمودار همجوشی سنسور

نمودار همجوشی سنسور در دکل

نمودار فیوژن سنسور که پشت جعبه فیوژن سنسور را پر می کند

test_lens_intrinsic_calibration

آزمایشاتی که مرکز نوری لنز در هنگام حرکت لنز به دلیل تثبیت کننده تصویر نوری (OIS) تغییر می کند. در صورت پشتیبانی از نمونه های ذاتی لنز ، آزمایشاتی مبنی بر اینکه مرکز نوری نمونه های ذاتی لنز هنگام حرکت لنز به دلیل تثبیت کننده تصویر نوری (OIS) تغییر می کند.

API آزمایش کرد:

گذر: مرکز نوری لنزهای ذاتی توسط یک پیکسل یا بیشتر تغییر می کند. اگر نمونه های ذاتی لنز پشتیبانی شود ، مراکز نوری نمونه های ذاتی لنز توسط یک پیکسل یا بیشتر تغییر می کنند.

test_lens_intrinsic_calibration_example.png

نمونه ای از طرح test_lens_intrinsic_calibration که نشان دهنده تغییر نقاط اصلی در پیکسل ها برای هر فریم است

test_multi_camera_frame_sync

تست هایی که زمان سنجی را که توسط دوربین منطقی ضبط شده اند ، با محاسبه زوایای مربع در داخل تخته سنگ در 10 میلی ثانیه انجام می شود تا زمانی را تعیین کند.

API آزمایش کرد:

پاس: زاویه بین تصاویر از هر دوربین با چرخش تلفن به طرز چشمگیری تغییر نمی کند.

test_preview_distigat

آزمایشاتی که اعوجاج در طول هر قاب پیش نمایش در سطوح مختلف زوم اصلاح می شود. برای هر قاب پیش نمایش ، این آزمایش نقاط ایده آل را بر اساس ذاتی دوربین و بیرونی ها محاسبه می کند. در تصویر مثال ، نقاط ایده آل به رنگ سبز نشان داده شده است. نقاط واقعی به رنگ قرمز نشان داده شده است. خطای اعوجاج بر اساس فاصله پیکسل میانگین مربع (RMS) بین نقاط واقعی و نقاط ایده آل محاسبه می شود. از نکات برجسته سبز و قرمز روی تصویر برای تشخیص بصری ناحیه خطای اعوجاج استفاده می شود.

TEST_PREVIEW_DISTOTTOME_EXAMPLE.JPG

تصویر تخته سنگ با نقاط ایده آل به عنوان نقاط سبز و واقعی به عنوان قرمز

API آزمایش کرد:

پاس: خطای اعوجاج عادی هر قاب پیش نمایش کمتر از آستانه تعیین شده در آزمون است.

test_preview_stabilization

آزمایشاتی که فیلم پیش نمایش را تثبیت می کند کمتر از ژیروسکوپ می چرخد.

API آزمایش کرد:

عبور: چرخش حداکثر زاویه بر روی فریم ها کمتر از 70 ٪ چرخش ژیروسکوپ است.

موارد زیر نمونه های نمونه با و بدون تثبیت است.

  • ویدیوی نمونه با تثبیت

  • ویدیوی نمونه بدون تثبیت

test_sensor_fusion

تست اختلاف زمانی بین دوربین و ژیروسکوپ برای برنامه های AR و VR. تلفن 90 درجه 10 بار در مقابل الگوی تخته سنگ چرخانده شده است. حرکت حدود 2 ثانیه سفر است. اگر هیچ ژیروسکوپ درج نشده باشد یا اینکه پارامتر منبع Timestamp REALTIME فعال نشده باشد ، این آزمایش رد می شود.

آزمون test_sensor_fusion تعدادی توطئه ایجاد می کند. دو نقشه مهم برای اشکال زدایی عبارتند از:

  • test_sensor_fusion_gyro_events : وقایع ژیروسکوپ را برای تلفن در طول آزمایش نشان می دهد. حرکت در جهت x و y به این معنی است که تلفن به طور ایمن روی صفحه نصب نصب نشده است و احتمال گذراندن آزمون را کاهش می دهد. تعداد چرخه های موجود در طرح بستگی به سرعت نوشتن برای صرفه جویی در فریم ها دارد.

    test_sensor_fusion_gyro_events.png

    test_sensor_fusion_gyro_events

  • test_sensor_fusion_plot_rotations : تراز ژیروسکوپ و حوادث دوربین را نشان می دهد. این طرح باید حرکت تطبیق بین دوربین و ژیروسکوپ تا +/- 1 ms را نشان دهد.

    test_sensor_fusion_plot_rotations.png

    test_sensor_fusion_plot_rotations

API آزمایش کرد:

پاس: جبران Timestamps دوربین و ژیروسکوپ کمتر از 1 میلی ثانیه طبق بخش CDD 7.3.9 سنسورهای وفاداری بالا [C-2-14] .

مکانیسم های شکست:

  • خطای افست: جبران دوربین گیروسکوپ به درستی در 1/1 میلی ثانیه کالیبره نشده است.
  • قطرات فریم: خط لوله به اندازه کافی سریع نیست که بتواند 200 فریم را به طور متوالی ضبط کند.
  • خطاهای سوکت: adb نمی تواند به اندازه کافی طولانی به DUT متصل شود تا آزمایش را انجام دهد.
  • نمودار مسطح نصب نشده است. طرح test_sensor_fusion_plot_rotations دارای قاب هایی است که ژیروسکوپ و چرخش دوربین به طور قابل توجهی متفاوت است زیرا دوربین در قسمت های نمودار مسطح نمی چرخد.
  • دوربین مسطح نصب نشده است. طرح test_sensor_fusion_gyro_events حرکت در هواپیماهای X و Y را نشان می دهد. این خرابی در دوربین های جلوی آن شایع تر است زیرا دوربین عقب اغلب دارای یک دست انداز بلند شده به بقیه بدنه تلفن است و هنگام نصب قسمت عقب تلفن به صفحه نصب ، شیب ایجاد می کند.

test_video_stabilization

آزمایشاتی که فیلم تثبیت شده است ، کمتر از ژیروسکوپ می چرخند.

API آزمایش کرد:

گذر: چرخش حداکثر زاویه بر روی فریم کمتر از 60 ٪ چرخش ژیروسکوپ است.

موارد زیر نمونه های نمونه با و بدون تثبیت است.

  • ویدیوی نمونه با تثبیت

  • ویدیوی نمونه بدون تثبیت

combination

تست های feature_combination تأیید می کنند که ویژگی ها به طور صحیح کار می کنند وقتی چندین ویژگی دوربین به طور همزمان فعال می شوند. این تست ها از همان تصویر checkerboard استفاده می کنند که در صحنه فیوژن سنسور استفاده می شود.

test_feature_combination

آزمایش تمام ترکیبات ترکیبات مختلف جریان ، تثبیت پیش نمایش ، محدوده FPS هدف ، فیلم HDR 10 بیتی و Ultra HDR که توسط دستگاه دوربین پشتیبانی می شوند. این تست بسیار حافظه بسیار فشرده است ، بنابراین توصیه می کنیم از یک میزبان با حداقل 128 گیگابایت رم استفاده کنید.

برای Android 15 و بالاتر ، پرونده پیکربندی شامل یک قسمت log_feature_combo_support است که به طور پیش فرض False است. هنگامی که قسمت log_feature_combo_support روی True تنظیم شده است ، این آزمایش تمام ترکیبات ویژگی های پشتیبانی شده را اجرا می کند و نتایج را بدون عدم موفقیت در آزمون وارد یک فایل Proto می کند. برای آزمایش انطباق ، قسمت log_feature_combo_support باید روی False تنظیم شود.

API آزمایش کرد:

پاس: برای هر ترکیب ویژگی پشتیبانی شده:

  • اگر تثبیت پیش نمایش روشن باشد ، جریان پیش نمایش تثبیت می شود.
  • نرخ فریم پیش نمایش در پیکربندی AE_TARGET_FPS_RANGE قرار می گیرد.
  • فضای رنگی ضبط شده پیش نمایش جریان با آنچه تنظیم شده است مطابقت دارد.
  • ضبط Ultra HDR دارای نقشه افزایش معتبر است.
،

در این صفحه لیست کاملی از تست های موجود در زیر مجموعه Test Image Test (ITS) ، که بخشی از تأیید کننده تست سازگاری Android (CTS) است ، ارائه می دهد. تست های آن تست های کاربردی است ، به این معنی که کیفیت تصویر را اندازه گیری نمی کند ، اما تمام عملکردهای دوربین تبلیغاتی همانطور که انتظار می رود کار می کنند. این سند به توسعه دهندگان و آزمایش کنندگان این امکان را می دهد تا آزمون های فردی را انجام دهند و چگونه می توانند خرابی های آزمون را اشکال بزنند.

آزمایشگاه دروازه های آن توسط ویژگی های دوربین مورد نیاز ، سطح API و سطح عملکرد رسانه (MPC). برای سطح API ، استفاده از ro.product.first_api_level به تست های دروازه اضافه شده در سطح API خاص است که برای تجربیات منفی کاربر برای عملکرد در سطح API پایین تر آزمایش می کند. استفاده از ro.vendor.api_level برای تست های دروازه برای ویژگی های اضافه شده در یک سطح خاص API که به قابلیت سخت افزاری جدید نیاز دارد. اگر ro.odm.build.media_performance_class برای یک دستگاه تعریف شده باشد ، بسته به سطح MPC نیاز به آزمایش های خاص دارد.

آزمایشات بر اساس صحنه به شرح زیر گروه بندی می شوند:

  • STRENGE0 : ضبط ابرداده ، لرزش ، ژیروسکوپ ، لرزش
  • صحنه 1 : قرار گرفتن در معرض ، حساسیت ، جبران EV ، YUV در مقابل JPEG/RAW
  • صحنه 2 : تشخیص چهره ، تست هایی که به صحنه های رنگی نیاز دارند
  • scene3 : Edge enhancement, lens movement
  • scene4 : Aspect ratio, cropping, field-of-view
  • scene5 : Lens shading
  • scene6 : Zoom
  • scene7 : Multi camera switch
  • scene8 : AE and AWB region metering
  • scene9 : JPEG compression
  • scene_extensions : Camera extensions
  • scene_flash : Autoflash, min frame rate
  • scene_video : Frame drops
  • sensor_fusion : Camera/gyroscope timing offset
  • feature_combination : Feature combinations

See individual sections for a description of each scene.

scene0

Scene0 tests require no specific scene information. However, the phone must be stationary for gyroscope and vibration testing.

test_jitter

Measures jitter in camera timestamps.

APIs tested:

Pass: There's at least a 30 ms delta between frames.

test_jitter_plot.png

test_jitter_plot.png (Note the small y-axis range. Jitter is actually small in this plot.)

test_metadata

Tests the validity of metadata entries. Looks at capture results and at the camera characteristics objects. This test uses auto_capture_request exposure and gain values because image content isn't important.

APIs tested:

Pass: Hardware level, rollingShutterSkew , frameDuration tags, timestampSource , croppingType , blackLevelPattern , pixel_pitch , FoV, hyperfocal distance are present and have valid values.

test_request_capture_match

Tests that the device writes the correct exposure and gain values by reading back the capture metadata.

APIs tested:

Pass: Request and capture metadata values match across all shots.

test_sensor_events

Tests that device queries and prints out sensor events for devices that advertise sensor fusion support. The sensors expected are accelerometer, gyroscope, and magnetometer. This test only works if the screen is on, meaning the device isn't in standby mode.

APIs tested:

Pass: Events for each sensor are received.

test_solid_color_test_pattern

Tests that solid color test patterns are generated properly for camera muting. If camera muting is supported, solid color test patterns must be supported. If camera muting is not supported, solid color test patterns are only tested if the capability is advertised.

If RAW images are supported, color assignment is tested as well. The colors tested are black, white, red, blue, and green. For cameras that don't support RAW images, only black is tested.

APIs tested:

Pass: Solid test patterns supported are the correct color and there is low variance in the image.

test_test_pattern

Tests the android.sensor.testPatternMode parameter to capture frames for each valid test pattern and checks that the frames are generated correctly for solid colors and color bars. This test includes the following steps:

  1. Captures images for all supported test patterns.
  2. Performs a simple correctness check for solid color test pattern and color bars.

APIs tested:

Pass: Supported test patterns are generated correctly.

test_test_patterns_2

test_test_patterns_2.jpg

test_tonemap_curve

Tests conversion of test pattern from RAW to YUV with linear tonemap. This test requires android.sensor.testPatternMode = 2 (COLOR_BARS) to generate a perfect image pattern for tonemap conversion. Ensures pipeline has proper color outputs with linear tonemap and ideal image input (relies on test_test_patterns ).

APIs tested:

Pass: The YUV and the RAW look similar to each other.

test_tonemap_curve_raw_2

test_tonemap_curve_raw_2.jpg

test_tonemap_curve_yuv_2.jpg

test_tonemap_curve_yuv_2.jpg

test_unified_timestamp

Tests if image and motion sensor events are in the same time domain.

APIs tested:

Pass: Motion timestamps are between the two image timestamps.

test_vibration_restriction

Tests if the device's vibration is functioning as expected.

APIs tested:

Pass: The device doesn't vibrate when muted by the camera audio restriction API.

صحنه 1

scene1 is a gray chart. The gray chart must cover the center 30% of the camera field of view. The gray chart is expected to challenge 3A (auto exposure, auto white balance, auto focus) moderately as the center region has no features. However, the capture request specifies the entire scene which includes sufficient features for 3A to converge.

RFoV cameras can be tested in the WFoV or the RFoV test rig. If a RFoV camera is tested in the WFoV test rig, the chart is scaled by ⅔ to ensure some boundaries for the gray chart in the FoV to help 3A converge. For more detailed descriptions of the camera test rigs, see Camera ITS-in-a-box .

صحنه 1

scene1: Full size chart (left). ⅔ scaled chart (right).

test_ae_precapture_trigger

Tests the AE state machine when using the precapture trigger. Captures five manual requests with AE disabled. The last request has an AE precapture trigger, which should be ignored because AE is disabled.

APIs tested:

Pass: AE converges.

test_auto_vs_manual

Tests that captured auto and manual shots look the same.

APIs tested:

Pass: Manual white balance gains and transform reported in each capture result match with the auto white balance estimate from camera's 3A algorithm.

test_auto_vs_manual_auto

test_auto_vs_manual_auto.jpg

test_auto_vs_manual_wb

test_auto_vs_manual_wb.jpg

test_auto_vs_manual_manual_wb_tm

test_auto_vs_manual_manual_wb_tm.jpg

test_black_white

Tests that the device produces full black and white images. Takes two captures, the first with extremely low gain and short exposure, which results in a black photo, and the second with extremely high gain and long exposure, which results in a white photo.

APIs tested:

Pass: Produces black and white images. Saturated channels of white images have RGB values of [255, 255, 255] with a margin of error of less than 1% difference.

test_black_white_blacktest_black_white_black
test_black_white_black.jpg test_black_white_white.jpg

test_black_white_plot_means

test_black_white_plot_means.png

test_burst_capture

Verifies that the entire capture pipeline can keep up with the speed of fullsize capture and CPU time.

APIs tested:

Pass: Captures a burst of full size images, checks for frame drops and image brightness.

test_burst_sameness_manual

Takes 5 bursts of 50 images with manual capture setting and checks that they're all identical. This test can be used to identify if there are sporadic frames that are processed differently or have artifacts.

APIs tested:

Pass: Images are identical visually and in RGB values.

Fail: Shows a spike or drop of the RGB average chart at the beginning of each burst

  • Tolerance is 3% for first_API_level < 30
  • Tolerance is 2% for first_API_level >= 30

test_burst_sameness_manual_mean

test_burst_sameness_manual_mean.jpg

test_burst_sameness_manual_plot_means

test_burst_sameness_manual_plot_means.png

test_capture_result

Tests that valid data comes back in CaptureResult objects. Does an auto, manual, and auto capture.

APIs tested:

Pass: Metadata is valid for all captures and the manual settings don't leak into the second auto capture. Plots out the lens shading correction for the captures.

test_capture_result_plot_lsc_auto_ch0

test_capture_result_plot_lsc_auto_ch0.png

test_crop_region_raw

Tests that the RAW streams aren't croppable.

APIs tested:

Pass: YUV images get center-cropped but not RAW images.

test_crop_region_raw_comp_raw_crop

test_crop_region_raw_comp_raw_crop.jpg

test_crop_region_raw_comp_raw_full

test_crop_region_raw_comp_raw_full.jpg

test_crop_region_raw_comp_yuv_crop

test_crop_region_raw_comp_yuv_crop.jpg

test_crop_region_raw_yuv_full

test_crop_region_raw_yuv_full.jpg

test_crop_regions

Tests that crop regions work. Takes a full image and creates patches of 5 different regions (corners and center.) Takes images with crop set for the 5 regions. Compares the patch and the crop image values.

APIs tested:

Pass: Image of the cropped region matches the patch that corresponds to the crop image.

test_dng_noise_model

Verifies that the DNG raw model parameters are correct. The plot depicts the measured variance of a center patch of the grey card in raw shots captured over a range of sensitivities, and compares these values with the variance that is expected at each sensitivity by the DNG noise model in the camera HAL (based on the O,S parameters returned in the capture result objects). For a more details on the DNG noise model, download the following document on the DNG Noise Model .

APIs tested:

Pass: DNG raw model parameters are correct. Expected RGB values match that of the actual RGB values measured.

test_dng_noise_model_plog

test_dng_noise_model_plog.png

test_ev_compensation_advanced

Tests that the exposure value (EV) compensation is applied. The test increases exposure in eight steps, and checks measured brightness versus expected brightness. Expected values are calculated from image brightness of image with no EV compensation applied and the expected value will saturate if the calculated values exceed the actual image value range. Test fails if the expected values and measured values don't match or images overexpose within five steps.

APIs tested:

Pass: Images show increasing exposure without overexposing within five steps.

test_ev_compensation_advanced_plot_means

test_ev_compensation_advanced_plot_means.png

test_ev_compensation_basic

Tests that the EV compensation is applied using a range created with CONTROL_AE_COMPENSATION_STEP . Eight frames are captured at each compensation value.

APIs tested:

Pass: Captures increase in luma with increased EV compensation setting, and the eight frames captured for each EV compensation setting have stable luma values.

test_ev_compensation_basic

test_ev_compensation_basic.png

test_exposure_x_iso

Tests that a constant exposure is achieved as ISO and exposure time vary. Takes a series of shots that have ISO and exposure time chosen to balance each other. Results should have the same brightness, but over the sequence the image should get noisier. Verifies sample pixel mean values are close to each other. Ensures that the images aren't clamped to 0 or 1 (which would make them look like flat lines). The test can also be run with RAW images by setting the debug flag in your configuration file.

APIs tested:

Pass: Images have the same brightness, but get noisier with higher ISO. RGB planes are flat when the value of ISO*exposure is constant over the tested gain space.

Fail mechanism:

  • In test_exposure_plot_means.png , as the gain multiplier values (x-axis) increase, the normalized RGB plane average values (y-axis) start to deviate from the low gain multiplier values.

test_exposure_plot_means

test_exposure_plot_means.png

test_exposure_mult=1.00test_exposure_mult=64.00
test_exposure_mult=1.00.jpg test_exposure_mult=64.00.jpg

test_jpeg

Tests that converted YUV images and device JPEG images look the same. Test takes the center 10% of the image and calculates the RGB value, and verifies that they match.

APIs tested:

Pass: The average RGB difference between each image is less than 3%.

test_jpeg_fmt=jpg.jpgtest_jpeg=fmt=yuv.jpg
test_jpeg_fmt=jpg.jpg test_jpeg=fmt=yuv.jpg

test_latching

Tests that settings (exposure and gain) latch on the right frame for FULL and LEVEL_3 cameras. Takes a series of shots using back-to-back requests, varying the capture request parameters between shots. Checks that the images have the expected properties.

APIs tested:

Pass: Images [2, 3, 6, 8, 10, 12, 13] have increased ISO or exposure and show up with higher RGB means on test_latching_plot_means.png .

test_latching_i=00.jpgtest_latching_i=01.jpgtest_latching_i=02.jpg
test_latching_i=00.jpg test_latching_i=01.jpg test_latching_i=02.jpg
test_latching_i=03.jpgtest_latching_i=04.jpgtest_latching_i=05.jpg
test_latching_i=03.jpg test_latching_i=04.jpg test_latching_i=05.jpg
test_latching_i=06.jpgtest_latching_i=07.jpgtest_latching_i=08.jpg
test_latching_i=06.jpg test_latching_i=07.jpg test_latching_i=08.jpg
test_latching_i=09.jpgtest_latching_i=10.jpgtest_latching_i=11.jpg
test_latching_i=09.jpg test_latching_i=10.jpg test_latching_i=11.jpg
test_latching_i=12.jpg
test_latching_i=12.jpg

test_latching_plot_means

test_latching_plot_means.png

test_linearity

Tests that device processing can be inverted to linear pixels. Captures a sequence of shots with the device pointed at a uniform target.

APIs tested:

Pass: R, G, B values must increase linearly with increased sensitivity.

test_linearity_plot_means

test_linearity_plot_means.png

test_locked_burst

Tests 3A lock and YUV burst (using auto setting). This test is designed to pass even on limited devices that don't have MANUAL_SENSOR or PER_FRAME_CONTROLS . The test checks YUV image consistency while the frame rate check is in CTS.

APIs tested:

Pass: Captures look consistent.

test_locked_burst_frame0

test_locked_burst_frame0.jpg

test_locked_burst_frame1

test_locked_burst_frame1.jpg

test_locked_burst_frame2

test_locked_burst_frame2.jpg

test_param_color_correction

Tests that the android.colorCorrection.* parameters are applied when set. Takes shots with different transform and gain values, and tests that they look correspondingly different. The transform and gains are chosen to make the output increasingly red or blue. Uses a linear tonemap. Tone mapping is a technique used in image processing to map one set of colors to another to approximate the appearance of high-dynamic-range images in a medium that has a more limited dynamic range.

APIs tested:

Pass: R and B values boost according to transformation.

test_param_color_correction_plot_means

test_param_color_correction_plot_means.png

*The x-axis is the capture requests: 0 = unity, 1=red boost, 2= blue boost

test_param_color_correction_req=0

test_param_color_correction_req=0.jpg

test_param_color_correctness_req=1

test_param_color_correctness_req=1.jpg (R boost)

test_param_color_correction_req=2

test_param_color_correction_req=2.jpg (B boost)

test_param_flash_mode

Tests that the android.flash.mode parameter is applied. Manually sets the exposure to be on the dark side, so that it is obvious whether the flash fired or not, and uses a linear tonemap. Checks the center with the tile image to see if there's a large gradient that's created to verify whether the flash fired.

APIs tested:

Pass: The center of the tile image has a large gradient meaning that the flash fired.

test_param_flash_mode_1

test_param_flash_mode_1.jpg

test_param_flash_mode_1_tile

test_param_flash_mode_1_tile.jpg

test_param_flash_mode_2

test_param_flash_mode_2.jpg

test_param_flash_mode_2_tile

test_param_flash_mode_2_tile.jpg

test_param_noise_reduction

Tests that the android.noiseReduction.mode parameter is applied correctly when set. Captures images with the camera dimly lit. Uses a high analog gain to ensure the captured image is noisy. Captures three images, for NR off, "fast", and "high quality". Also captures an image with low gain and NR off, and uses the variance of this as the baseline. The higher the SNR (Signal to Noise Ratio), the better the image quality.

APIs tested:

Pass: SNR varies with different noise reduction modes and behaves similarly as the graph below.

test_param_noise_reduction_plot_SNRs

test_param_noise_reduction_plot_SNRs.png

0: OFF, 1: FAST, 2: HQ, 3: MIN , 4: ZSL

test_param_noise_reduction_high_gain_nr=0

test_param_noise_reduction_high_gain_nr=0.jpg

test_param_noise_reduction_high_gain_nr=1

test_param_noise_reduction_high_gain_nr=1.jpg

test_param_noise_reduction_high_gain_nr=2

test_param_noise_reduction_high_gain_nr=2.jpg

test_param_noise_reduction_high_gain_nr=3

test_param_noise_reduction_high_gain_nr=3.jpg

test_param_noise_reduction_low_gain

test_param_noise_reduction_low_gain.jpg

test_param_shading_mode

Tests that the android.shading.mode parameter is applied.

APIs tested:

Pass: Shading modes are switched and the lens shading maps are modified as expected.

test_param_shading_mode_ls_maps_mode_0_loop_0

test_param_shading_mode_ls_maps_mode_0_loop_0.png

test_param_shading_mode_ls_maps_mode_1_loop_0

test_param_shading_mode_ls_maps_mode_1_loop_0.png

test_param_shading_mode_ls_maps_mode_2_loop_0

test_param_shading_mode_ls_maps_mode_2_loop_0.png

test_param_tonemap_mode

Tests that the android.tonemap.mode parameter is applied. Applies different tonemap curves to each R, G, B channel, and checks that the output images are modified as expected. This test consists of two tests, test1 and test2.

APIs tested:

پاس:

  • test1: Both images have a linear tonemap, but n=1 has a steeper gradient. The G (green) channel is brighter for the n=1 image.
  • test2: Same tonemap, but different length. Images are the same.
test_param_tonemap_mode_n=0.jpgtest_param_tonemap_mode_n=1.jpg
test_param_tonemap_mode_n=0.jpg test_param_tonemap_mode_n=1.jpg

test_post_raw_sensitivity_boost

Checks post RAW sensitivity boost. Captures a set of RAW and YUV images with different sensitivity, posts RAW sensitivity boost combination and checks if the output pixel mean matches request settings.

APIs tested:

Pass: RAW images get darker as boost increases while YUV images stay constant in brightness

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.jpg

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_raw_s=0224_boost=1600

test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg

test_post_raw_sensitivity_boost_raw_s=0112_boost=3199

test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg

test_post_raw_sensitivity_boost_raw_plot_means

test_post_raw_sensitivity_boost_raw_plot_means.png

test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199

test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400

test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200

test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg

test_post_raw_sensitivity_boost_yuv_plot_means

test_post_raw_sensitivity_boost_yuv_plot_means.png

test_raw_burst_sensitivity

Captures a set of raw images with increasing gains and measures the noise. Captures raw-only, in a burst.

APIs tested:

Pass: Each shot is noisier than the previous shot, as the gain is increasing.

Uses the variance of the center stats grid cell.

test_raw_burst_sensitivity_variance

test_raw_burst_sensitivity_variance.png

test_raw_exposure

Captures a set of raw images with increasing exposure time and measures the pixel values.

APIs tested:

Pass: Increasing the ISO (gain) makes the pixels more sensitive to light, so the plot moves towards the left.

test_raw_exposure_s=55

test_raw_exposure_s=55.png

(10⁰ is 1 ms, 10¹ is 10 ms, 10⁻¹ is 0.1 ms)

test_raw_exposure_s=132

test_raw_exposure_s=132.png

test_raw_exposure_s=209

test_raw_exposure_s=209.png

test_raw_exposure_s=286

test_raw_exposure_s=286.png

test_raw_exposure_s=363

test_raw_exposure_s=363.png

test_raw_exposure_s=440

test_raw_exposure_s=440.png

test_raw_sensitivity

Captures a set of raw images with increasing sensitivities and measures the noise (variance) in the center 10% of image. Tests that each shot is noisier than the previous one.

APIs tested:

Pass: Variance increases with each shot.

test_raw_sensitivity_variance

test_raw_sensitivity_variance.png

test_reprocess_noise_reduction

Tests that android.noiseReduction.mode is applied for reprocessing requests. Captures reprocessed images with the camera dimly lit. Uses a high analog gain to ensure the capture image is noisy. Captures three reprocessed images, for NR off, "fast", and "high quality". Captures a reprocessed image with low gain and NR off, and uses the variance of this as the baseline.

APIs tested:

Pass: FAST >= OFF, HQ >= FAST, HQ >> OFF

Typical SNR vs NR_MODE plot

Typical SNR vs NR_MODE plot

test_tonemap_sequence

Tests a sequence of shots with different tonemap curves. Captures 3 manual shots with a linear tonemap. Captures 3 manual shots with default tonemap. Computes the delta between each consecutive frame pair.

APIs tested:

Pass: There are 3 identical frames followed by a different set of 3 identical frames.

test_tonemap_sequence_i=0

test_tonemap_sequence_i=0.jpg

test_tonemap_sequence_i=1

test_tonemap_sequence_i=1.jpg

test_tonemap_sequence_i=2

test_tonemap_sequence_i=2.jpg

test_tonemap_sequence_i=3

test_tonemap_sequence_i=3.jpg

test_tonemap_sequence_i=4

test_tonemap_sequence_i=4.jpg

test_tonemap_sequence_i=5

test_tonemap_sequence_i=5.jpg

test_yuv_jpeg_all

Tests that all reported sizes and formats for image capture work. Uses a manual request with a linear tonemap so that the YUV and JPEG look the same when converted by the image_processing_utils module. Images aren't saved by default, but can be saved by enabling debug_mode .

APIs tested:

Pass: All image centers have a max RMS (root-mean-square value of a signal) difference in RGB converted images with 3% of highest resolution YUV image.

test_yuv_jpeg_all

test_yuv_jpeg_all.png

test_yuv_plus_dng

Tests that the reported sizes and formats for image capture work.

APIs tested:

Pass: Test completes and returns the images requested.

test_yuv_plus_dng

test_yuv_plus_dng.jpg

test_yuv_plus_jpeg

Tests capturing a single frame as both YUV and JPEG outputs. Uses a manual request with a linear tonemap so that the YUV and JPEG look the same when converted by the image_processing_utils module.

APIs tested:

Pass: YUV and JPEG images are similar and have less than 1% RMS (root-mean-square value of a signal) difference.

test_yuv_plus_jpg_jpg.jpgtest_yuv_plus_jpeg_yuv.jpg
test_yuv_plus_jpg_jpg.jpg test_yuv_plus_jpeg_yuv.jpg

test_yuv_plus_raw

Tests capturing a single frame as both RAW/RAW10/RAW12 and YUV outputs if supported. Uses a manual request with linear tonemap so raw and YUV are expected to be the same. Compares RGB converted images' center 10% RGB values. Logs android.shading.mode .

APIs tested:

Pass: YUV and raw images are similar and have less than 3.5% RMS (root-mean-square value of a signal) difference.

test_yuv_plus_raw_shading=1_raw.jpgtest_yuv_plus_raw_shading=1_yuv.jpg
test_yuv_plus_raw_shading=1_raw.jpg test_yuv_plus_raw_shading=1_yuv.jpg

scene2_a

scene2_a has three faces with a gray background and neutral clothing. The faces are chosen to have a wide range of skin tones. The chart must have the correct orientation for face detection to work optimally.

scene2_a

scene2_a

test_autoframing

Tests the camera device's autoframing behavior. Performs a large zoom such that none of the faces in the scene are visible, enables the autoframing mode by setting AUTOFRAMING in CaptureRequest to True , and verifies whether all the faces in the original scene can be detected when the state converges (that is, when AUTOFRAMING_STATE in CaptureResult is set to AUTOFRAMING_STATE_CONVERGED ).

APIs tested:

Pass: All three faces are detected.

test_display_p3

Tests Display P3 capture in JPEG using the ColorSpaceProfiles API. Tests that the captured JPEG has an appropriate ICC profile in its header, and that the image contains colors outside of the sRGB gamut.

APIs tested:

Pass: The JPEG contains a Display P3 ICC profile and colors outside the sRGB gamut.

test_effects

Captures frame for supported camera effects and checks if they are generated correctly. The test only checks effects OFF and MONO , but saves images for all supported effects.

APIs tested:

Pass: Captures the scene image with effects OFF and a monochrome image with effects set to MONO .

test_effects_MONO

test_effects_MONO.jpg

test_format_combos

Tests different combinations of output formats.

APIs tested:

Pass: All the combinations are successfully captured.

test_num_faces

Tests face detection.

APIs tested:

Pass: Finds three faces.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_reprocess_uv_swap

Tests that YUV reprocessing doesn't swap the U and V planes. This is detected by calculating the sum of absolute differences (SAD) between the reprocessed image and a non-reprocessed capture. If swapping the output U and V planes of the reprocessed capture results in an increased SAD, then the output is assumed to have the correct U and V planes.

APIs tested:

Pass: The U and V planes aren't swapped.

test_reprocess_uv_swap

test_reprocess_uv_swap.png

scene2_b

test_num_faces

Tests face detection with increased skin tone diversity in face scenes.

APIs tested:

Pass: Finds 3 faces.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_yuv_jpeg_capture_sameness

Captures two images using the largest common YUV and JPEG formats with the same aspect ratio as the largest JPEG format not exceeding a resolution of 1920x1440. Sets jpeg.quality to 100 and captures a dual surface request. Converts both images to RGB arrays and calculates the 3D root mean square (RMS) difference between the two images.

In addition, this test verifies that the YUV outputs for all supported stream use cases are reasonably similar to the YUV with the STILL_CAPTURE use case.

APIs tested:

Pass: YUV and JPEG images for the STILL_CAPTURE use case have less than 3% RMS (root-mean-square value of a signal) difference; YUV images for all supported use cases have less than 10% RMS difference from YUV images with the STILL_CAPTURE use case.

scene2_c

test_num_faces

Tests face detection with increased skin tone diversity in face scenes.

APIs tested:

Pass: Finds 3 faces.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_jpeg_capture_perf_class

Tests JPEG capture latency for the S performance class as specified in section 2.2.7.2 Camera in the CDD.

Pass: MUST have camera2 JPEG capture latency < 1000ms for 1080p resolution as measured by the CTS camera PerformanceTest under ITS lighting conditions (3000K) for both primary cameras.

test_camera_launch_perf_class

Tests camera launch latency for the S performance class as specified section 2.2.7.2 Camera in the CDD.

Pass: MUST have camera2 startup latency (open camera to first preview frame) < 600ms as measured by the CTS camera PerformanceTest under ITS lighting conditions (3000K) for both primary cameras.

test_default_camera_hdr

Tests that default camera capture is Ultra HDR for performance class 15 as specified in section 2.2.7.2 Camera of the CDD.

Pass: Default camera package capture MUST be Ultra HDR for a performance class 15 device.

scene2_d

test_num_faces

Tests face detection with increased skin tone diversity in face scenes.

APIs tested:

Pass: Finds 3 faces.

scene2_e

test_continuous_picture

50 VGA resolution frames are captured with the capture request first setting android.control.afMode = 4 (CONTINUOUS_PICTURE).

APIs tested:

Pass: 3A system settles by the end of a 50-frame capture.

test_num_faces

Tests face detection with increased skin tone diversity in face scenes.

APIs tested:

Pass: Finds 3 faces.

scene2_f

scene2_f has three faces with a white background and white clothing. The faces have a wide range of skin tones and high contrast with the background.

scene2_f.png

scene2_f

test_num_faces

Tests face detection with increased skin tone diversity in face scenes.

APIs tested:

Pass: Finds 3 faces.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

صحنه 3

Scene3 uses the ISO12233 chart, and most tests use a chart extractor method to find the chart in the scene. For this reason, most of the saved images don't have borders like the images for scenes 1, 2 or 4, but only the chart. The chart must be in the correct orientation for the chart finder to work optimally.

test_edge_enhancement

Tests that the android.edge.mode parameter is applied correctly. Captures non-reprocess images for each edge mode and returns sharpness of the output image and the capture result metadata. Processes a capture request with a given edge mode, sensitivity, exposure time, focus distance, and output surface parameter.

Pass: HQ mode (2) sharper than OFF mode (0). FAST mode (1) sharper than OFF mode. HQ mode sharper or equal to FAST mode.

APIs tested:

Impacted camera parameters:

  • EDGE_MODE

test_edge_enhancement_edge=0

test_edge_enhancement_edge=0.jpg

test_edge_enhancement_edge=1

test_edge_enhancement_edge=1.jpg (fast mode)

test_edge_enhancement_edge=2

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

test_flip_mirror_scene_patch.jpg

test_imu_drift

Tests if the inertial measurement unit (IMU) has stable output for 30 seconds while the device is stationary and capturing a high definition preview.

APIs tested:

پاس:

  • The drift of the gyro is less than 0.01 rad over the test time.
  • The variance of the gyro reading is less than 1E-7 rad 2 /s 2 /Hz over the test time.
  • The drift of the rotation vector is less than 0.01 rad over the test time.
  • (Not yet mandated) the drift of the gyro is less than 1 degree per second.

test_imu_drift_gyro_drift.png

test_imu_drift_gyro_drift.png

test_imu_drift_rotation_vector_drift.png

test_imu_drift_rotation_vector_drift.png

test_landscape_to_portrait

Tests if the landscape to portrait override functions correctly for landscape-oriented sensors.

APIs tested:

Pass: The test is able to locate a chart with the expected rotation (0 degrees when the landscape to portrait override is disabled, 90 degrees when enabled).

test_landscape_to_portrait

test_landscape_to_portrait.png

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 stabilizes 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 few frames with the lens stationary at optimum focal distance, and the final few 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:

Pass: Lens movement flag is True in the frame with sharpness change.

Fail mechanisms:

  • lens_moving: True ( android.hardware.camera2.CaptureResult#LENS_STATE = 1) in test_log.DEBUG is asserted only in frames where sharpness isn't changing.
  • Frames with lens_moving: False ( android.hardware.camera2.CaptureResult#LENS_STATE = 0) in test_log.DEBUG has a sharpness difference compared to the first few frames at optimum focal distance or the last few frames at minimum focus distance.

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:

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

test_reprocess_edge_enhancement_plot.png

scene4

Scene4 consists of a black circle on a white background inside a square. Tests in scene4 can be sensitive to alignment, so starting in 15, you can use check_alignment.py in the tools directory to enable a check of the DUT and chart alignment.

scene4

scene4

test_30_60fps_preview_fov_match

Tests that 30 FPS and 60 FPS preview videos have the same FoV. The test captures two videos, one with 30 FPS and another with 60 FPS. A representative frame is selected from each video and analyzed to ensure that the FoV changes in the two videos are within specifications. Tests that the circle's aspect ratio remains constant, the center of the circle remains stable, and the radius of the circle remains constant.

APIs tested:

Pass: Images aren't stretched, the center of images don't differ by more than 3%, and the maximum aspect ratio change between 30 FPS and 60 FPS videos is no more than 7.5%

Fail mechanisms:

  • The circle from the 30 FPS video is significantly different in size from the 60 FPS video.
  • The circle in the captured image is distorted by the processing pipeline.
  • The circle in the captured image is cropped due to an extreme aspect ratio capture request reducing the height or width of the image.
  • The circle in the captured image has a reflection in the center and doesn't appear fully filled.

test_aspect_ratio_and_crop

Tests if images are distorted or cropped unexpectedly in the image pipeline. Takes pictures of a circle over all formats. Verifies the circle isn't distorted, the circle doesn't move from the center of image, and the circle doesn't change size incorrectly with different aspect ratios or resolutions.

APIs tested:

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.

Fail mechanisms:

  • The camera isn't aligned with the circle displayed on the tablet in the center of the captured scene.
  • The circle in the captured image is distorted by the processing pipeline.
  • Lower resolution image is double cropped in the image pipeline creating different FoV between high and low resolution images.
  • The circle in the captured image is cropped due to an extreme aspect ratio capture request reducing the height or width of the image.
  • The circle in the captured image has a reflection in the center and doesn't appear fully filled.

test_multi_camera_alignment

Tests the camera calibration parameters related to camera positioning for multi-camera systems. 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:

Pass: Circle centers and sizes are as expected in projected images compared to captured images using camera calibration data and focal lengths.

Fail mechanisms:

  • LENS_INTRINSIC_CALIBRATION , LENS_POSE_TRANSLATION , or LENS_POSE_ROTATION are design values and not actual calibration data.
  • The camera system isn't appropriate for the test setup. For example, testing a wide and an ultra-wide camera system with the RFoV test rig. For more information, see Camera ITS-in-a-box FAQ1 .

test_preview_aspect_ratio_and_crop

Similar to the test_aspect_ratio_and_crop test for still captures, this test checks the supported preview formats to ensure the preview frames aren't stretched or cropped inappropriately. Verifies that the aspect ratio of the circle doesn't change, the cropped images keep the circle in center of the frame, and the circle size doesn't change for a constant format or with different resolutions (field of view check).

APIs tested:

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_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:

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%.

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:

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.

صحنه 5

Scene5 requires a uniformly lit gray scene. This is accomplished by a diffuser placed over the camera lens. We recommend the following diffuser: www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168 .

To prepare the scene, attach a diffuser in front of the camera and point the camera to a lighting source of around 2000 lux. Images captured for scene5 require diffuse lighting with no features evident. The following is a sample image:

صحنه 5

scene5 capture

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:

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. Tests in scene6 can be sensitive to alignment, so starting in 15, you can use check_alignment.py in the tools directory to enable a check of the DUT and chart alignment.

scene6

scene6

test_in_sensor_zoom

Tests the behavior of the camera in-sensor zoom feature, which produces cropped RAW images.

With the stream use case set to CROPPED_RAW , the test takes two captures over the zoom range, a full field of view (FoV) RAW image and a cropped RAW image. The test converts the images to RGB arrays, downscales the full-sized cropped RAW image to the size reported by SCALER_RAW_CROP_REGION , and calculates the 3D root mean square (RMS) difference between the two images.

APIs tested:

Pass: The 3D root mean square (RMS) difference between the downscaled cropped RAW image and the full FoV RAW image is less than the threshold set in the test.

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. For each format (YUV, JPEG), the same camera capture session is used to converge 3A and take captures.

APIs tested:

Pass: Relative size of captured circle is accurate against requested zoom ratio to ensure camera is zooming correctly.

test_zoom

test_zoom to find the contour of the circle closest to the center.

test_low_latency_zoom

Tests the camera low latency zoom behavior. Takes captures over the zoom range with android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM) , and checks if the circles in the output images match the zoom ratios in the capture metadata. The same camera capture session is used to converge 3A and take captures.

APIs tested:

Pass: Relative size of captured circle is accurate against the zoom ratio result metadata.

test_preview_video_zoom_match

Tests that while recording and zooming, video preview and video output display and record the same output. Calculates the size of the circle closest to the center at different zoom ratios and checks whether the size of the circle increases as the zoom ratio increases.

APIs tested:

Pass: Relative size of captured circle is accurate against requested zoom ratio in video and preview.

VGA_640x480_key_frame.png

VGA_640x480_key_frame.png (before zoom)

preview_640x480_key_frame.png

preview_640x480_key_frame.png (before zoom)

VGA_640x480_key_frame_zoomed.png

VGA_640x480_key_frame.png (after zoom)

preview_640x480_key_frame_zoomed.png

preview_640x480_key_frame.png (after zoom)

test_preview_zoom

Tests that the zoom ratio of each preview frame matches the corresponding capture metadata. The test takes preview frames over the zoom range and finds the contour of the circle closest to the center. The test then checks that the selected circle gets bigger and that the center of the circle moves away from the center of the image as the camera zooms in.

APIs tested:

Pass: The relative size of the selected circle is accurate for the reported zoom ratio of the corresponding capture result for all of the preview frames. The relative distance of the selected circle from the center of the image is accurate for the reported zoom ratio of the corresponding capture result of all the preview frames.

test_zoom

test_preview_zoom images showing selected circle closest to the center

test_session_characteristics_zoom

Tests the zoom ratio range for all supported session configurations listed in CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION . For each of those configurations, if CameraDeviceSetup#isSessionConfigurationSupported returns true, the test verifies that the zoom ratio range returned in CameraDeviceSetup#getSessionCharacteristics can be reached.

APIs tested:

Pass: Both the minimum and maximum zoom ratios can be reached for each supported SessionConfiguration listed in CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION .

scene7

Scene7 is a rectangular frame divided into four equal quadrants, each filled with a different color. In the center of the rectangle is a slanted edge chart for sharpness checks. Four ArUco markers are aligned with the four outer corners of the rectangle to assist in obtaining accurate coordinates of the main rectangle frame at varying zoom ratios.

scene7

scene7

test_multi_camera_switch

This test verifies that during preview recording at varying zoom ratios, the switch between the ultrawide (UW) and wide (W) lenses results in similar RGB values.

The test uses different zoom ratios within the predefined range to perform a dynamic preview recording and identify the point at which the physical camera changes. This point marks the crossover from the UW to the W lens.

The frames captured at and before the crossover point are analyzed for auto exposure (AE), auto white balance (AWB), and autofocus (AF).

The AE check ensures that the luma change is within the expected range for both UW and W lens images. The AWB check verifies that the ratios of R/G and B/G are within threshold values for both UW and W lens images. The AF check evaluates the sharpness estimation value based on the average gradient magnitude between UW and W lens images.

APIs tested:

Pass: For the test to pass, the AE, AWB, and AF checks must all pass. The following are the criteria for each check:

  • AE check: The luma change between the UW and W lens images must be less than 0.5%.
  • AWB check: The difference between the R/G and B/G values for the UW and W lens images must be less than 0.5%.
  • AF check: The image sharpness change between the UW and W lens images must be less than 2%.

scene8

Scene8 is a rectangular frame divided into four equal regions, each containing a portrait taken with a different exposure or overlaid with a different color shade (blue shade, increased exposure, decreased exposure, yellow shade). Four ArUco markers are aligned with the four outer corners of the rectangle to obtain accurate coordinates of the main rectangle frame.

scene8

scene8

test_ae_awb_regions

Tests that the RGB and luma values differ when preview recording at different auto exposure (AE) and auto white balance (AWB) regions.

The test records an eight second preview recording, performing AE and AWB metering on each quadrant for two seconds each. The test then extracts a frame from each region's preview recording, and uses the extracted frames to perform the following AE and AWB checks:

  • AE check: Verifies that the frame metering the region with decreased exposure has an increased luma value of more than 1% than the frame metering the region with increased exposure. This verifies that images are brightened when metering a dark region.
  • AWB check: Verifies that the ratio of red to blue (of the image's average RGB values) in the frame with the blue metering region is more than 2% higher than the frame with the yellow metering region. This verifies that images have a balanced RGB value when metering a yellow (warm) or blue (cool) region.

APIs tested:

Pass: The AE and AWB checks both pass.

صحنه 9

Scene9 consists of thousands of randomly sized and colored circles to create a scene with very low repeatability to stress JPEG compression algorithms.

صحنه 9

صحنه 9

test_jpeg_high_entropy

Tests that camera JPEG compression works on scene9 with high entropy and the JPEG quality factor set to 100%. The zoom factor is increased to ensure the scene displayed on the tablet fills the camera field of view.

APIs tested:

Pass: JPEG file is compressed properly, written, and read back from disk.

test_jpeg_quality

Tests the camera JPEG compression quality. Step JPEG qualities through android.jpeg.quality and ensures Quantization Tables change correctly.

APIs tested:

Pass: Quantization matrix decreases with quality increase. (Matrix represents the division factor.)

test_jpeg_quality

Pixel 4 rear camera luma/chroma DQT matrix averages vs JPEG quality

test_jpeg_quality failed

Failed test example

Note that for very low quality images (jpeg.quality < 50), there is no increase in compression in the quantization matrix.

scene_video

The scene_video scene is a video scene. It consists of four different colored circles moving back and forth at different frame rates against a white background.

scene_video

test_preview_frame_drop

Tests that the requested preview frame rate is maintained with a dynamic scene. This test runs on all cameras that are exposed to third party apps.

APIs tested:

Pass: The preview frame rate is at the maximum of the requested frame rate range, and the average variation between consecutive frames is less than the relative tolerance set in the test.

scene_extensions

The scene_extensions tests are for camera extensions and must use Camera ITS-in-a-Box , as they require precise control of the testing environment. Additionally, all light leakage must be controlled. This might require covering the test rig, DUT, and tablet with a drop cloth as well as eliminating light leakage from the front screen of the DUT.

scene_hdr

The scene_hdr scene consists of a portrait on the left and a low-contrast QR code on the right.

scene_hdr

scene_hdr

test_hdr_extension

Tests the HDR extension . Takes captures with and without the extension enabled, and checks if the extension makes the QR code more detectable.

APIs tested:

Pass: The HDR extension reduces the number of contrast changes needed to detect the QR code or reduces the gradient across the QR code.

scene_low_light

The scene_low_light scene consists of a grid of squares of varying shades of gray against a black background and the grid of squares are bound by a red outline. The squares are arranged in a Hilbert curve orientation.

scene_low_light

scene_low_light

test_night_extension

Tests the Night extension . Takes captures with the extension enabled, and performs the following:

  • Detects the presence of 20 squares
  • Computes the luma bounded by each square
  • Computes the average luma value of the first 6 squares according to the Hilbert curve grid orientation
  • Computes the difference in luma value of consecutive squares (for example, square2 - square1) up to squares 5 and 6 (square6 - square5), and finds the average of the five computed differences.

APIs tested:

Pass: The average luma value of the first 6 squares must be at least 85, and the average difference in luma value of consecutive squares up to squares 5 and 6 must be at least 17.

The following luminance plot shows what a passing test result looks like.

scene_low_light_night_pass

test_low_light_boost_extension

Tests the Low Light Boost AE mode . If Camera2 supports low light boost AE mode, then this test is performed for Camera2. If the night mode camera extension is supported and the extension supports low light boost AE mode, then this test is also performed for the night mode camera extension. This test sets the AE mode to low light boost, takes a frame from the preview, and performs the following:

  • Detects the presence of 20 boxes
  • Computes the luma bounded by each box
  • Computes the average luma value of the first 6 squares according to the Hilbert curve grid orientation
  • Computes the difference in luma value of consecutive squares (for example, square2 - square1) up to squares 5 and 6 (square6 - square5), and finds the average of the five computed differences.

APIs tested:

Pass: The average luma value of the first 6 squares must be at least 70, and the average difference in luma value of consecutive squares up to squares 5 and 6 must be at least 17.

scene_flash

The scene_flash tests require a dark scene in the sensor fusion box.

test_auto_flash

Tests that auto-flash is triggered in a dark scene for rear-facing and front-facing cameras. For front-facing cameras, auto-flash uses the screen to illuminate the scene, not a physical flash unit. The test verifies that auto-flash is fired by checking that the center of the tile image is brighter with auto-flash enabled. To trigger auto-flash, the lights in the test rig must be turned off. The lights can be turned off automatically with the Arduino controller. The scene must be completely dark for the test to work correctly. The Jetpack Camera App ( JCA ) must be installed on the device before testing. Auto-flash for rear-facing cameras relies on the AE state to be triggered, but auto-flash for front-facing cameras doesn't rely on AE and is always triggered.

APIs tested:

Pass: The center of the tile image with auto-flash enabled is brighter than the original scene image for all cameras.

test_flash_strength

Tests that flash strength control in SINGLE mode is implemented correctly.

Verifies that if the device supports flash strength control during camera use in SINGLE mode, the flash strength changes with different requested strength levels. Verifies that flash strength control works with different AE_MODES . For example, if the auto-exposure mode is ON or OFF , the flash strength level has an effect on brightness, and if the mode is ON_AUTO_FLASH , the flash strength level has no effect on brightness. To conduct the test, lights in the test rig must be turned off. The lights can be turned off automatically with the Arduino controller. The scene must be completely dark for the test to work correctly.

APIs tested:

پاس:

When the auto-exposure mode is ON or OFF , the brightness of the image patches increases as the flash strength level increases from no flash to FLASH_SINGLE_STRENGTH_MAX_LEVEL . When the auto-exposure mode is ON_AUTO_FLASH , the difference in brightness of the image patches is within tolerance as the flash strength level increases from no flash to FLASH_SINGLE_STRENGTH_MAX_LEVEL .

test_led_snapshot

Tests that the LED snapshots don't saturate or tint the image.

This test adds a lighting controller to the sensor fusion box to control the lights. With the lights set to OFF , the test takes a capture with the AUTO_FLASH mode set to ON . During this capture, the test runs a precapture sequence with the aePrecapture trigger set to START , and sets the capture intent to Preview to take the capture with flash.

Because the capture has a distinctive hotspot due to flash, the test computes the flash image mean of the entire capture and verifies whether the value is within the (68, 102) range. To check if the image is reasonably white-balanced, the test calculates the R/G and B/G ratios and verifies whether the ratios are within 0.95 and 1.05.

APIs tested:

Pass: The R/G and B/G ratios are within 0.95 and 1.05. The flash image mean is within the (68, 102) range.

test_preview_min_frame_rate

Tests that the preview frame rate decreases correctly in a dark scene. For this test to work correctly, the lights in the test rig must be turned off by the controller or manually by the test operator.

APIs tested:

Pass: The preview frame rate is at the minimum of the requested frame rate range, and the variation between frames is less than the absolute tolerance set in the test.

test_torch_strength

Tests that flash strength control in TORCH mode is implemented correctly.

Verifies that if the device supports flash strength control during camera use in TORCH mode, the torch strength changes with different requested strength levels. Verifies that flash strength control works with different AE_MODES . For example, if the auto-exposure mode is ON or OFF , the flash strength level has an effect on brightness, and if the mode is ON_AUTO_FLASH , the flash strength level has no effect on brightness. Verifies that the torch strength stays the same throughout the duration of a burst, simulating a video capture session. To conduct the test, lights in the test rig must be turned off. The lights can be turned off automatically with the Arduino controller. The scene must be completely dark for the test to work correctly.

APIs tested:

پاس:

When the auto-exposure mode is ON or OFF , the brightness of the image burst patches increases as the flash strength level increases from no flash to FLASH_TORCH_STRENGTH_MAX_LEVEL . When the auto-exposure mode is ON_AUTO_FLASH , the difference in brightness of the image burst patches are within tolerance as the flash strength level increases from no flash to FLASH_TORCH_STRENGTH_MAX_LEVEL .

sensor_fusion

Sensor fusion tests require specific phone movement in front of a checkerboard pattern and ArUco markers. For optimum results, ensure the test chart is mounted flat. Charts that aren't flat affect the rotation calculations for many of the tests. The chart must fill the back of the sensor fusion box by printing at 17"x17" (43x43 cm). The sensor_fusion tests can be automated with the Sensor Fusion Box .

Sensor fusion chart

Sensor fusion chart

Sensor fusion chart in Rig

Sensor fusion chart that fills the back of the sensor fusion box

test_lens_intrinsic_calibration

Tests that the optical center of the lens intrinsic changes when the lens moves due to optical image stabilization (OIS). If lens intrinsic samples are supported, tests that the optical center of the lens intrinsic samples changes when the lens moves due to optical image stabilization (OIS).

APIs tested:

Pass: The optical center of the lens intrinsic changes by one pixel or more. If lens intrinsic samples are supported, the optical centers of the lens intrinsic samples change by one pixel or more.

test_lens_intrinsic_calibration_example.png

Example of test_lens_intrinsic_calibration plot showing changes of principal points in pixels for each frame

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:

Pass: Angle between images from each camera doesn't change appreciably as phone is rotated.

test_preview_distortion

Tests that distortion is corrected throughout each preview frame taken at various zoom levels. For each preview frame, the test calculates ideal points based on camera intrinsics and extrinsics. In the example image, ideal points are shown in green; actual points are shown in red. The distortion error is calculated based on the root mean square (RMS) pixel distance between the actual points and ideal points. The green and red highlights on the image are used to visually detect the area of distortion error.

test_preview_distortion_example.jpg

Image of checkerboard with ideal points as green and actual points as red

APIs tested:

Pass: The normalized distortion error of each preview frame is less than the threshold set in the test.

test_preview_stabilization

Tests that stabilized preview video rotates less than gyroscope.

APIs tested:

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.png

    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.png

    test_sensor_fusion_plot_rotations

APIs tested:

Pass: Camera and gyroscope timestamps' offset is less than 1 ms as per CDD section 7.3.9 High Fidelity Sensors [C-2-14] .

Fail mechanisms:

  • Offset error: The camera-gyroscope offset isn't correctly calibrated to within +/-1 ms.
  • Frame drops: The pipeline isn't fast enough to capture 200 frames consecutively.
  • Socket errors: adb can't reliably connect to the DUT long enough to execute the test.
  • The chart isn't mounted flat. The plot test_sensor_fusion_plot_rotations has frames where the gyroscope and camera rotation vary considerably as the camera rotates through the parts of the chart that aren't flat.
  • The camera isn't mounted flat. The plot test_sensor_fusion_gyro_events shows movement in the X and Y planes. This failure is more common in front-facing cameras as the rear camera often has a raised bump to the rest of the phone body, creating a tilt when mounting the rear of the phone to the mounting plate.

test_video_stabilization

Tests that stabilized video rotates less than gyroscope.

APIs tested:

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

feature_combination

The feature_combination tests verify that features work correctly when multiple camera features are enabled at the same time. These tests use the same checkerboard image that is used in the sensor fusion scene .

test_feature_combination

Tests all combinations of different stream combinations, preview stabilization, target FPS range, 10-bit HDR video, and Ultra HDR that are supported by the camera device. This test is very memory intensive, so we recommend using a host with at least 128 GB of RAM.

For Android 15 and higher, the configuration file includes a log_feature_combo_support field, which defaults to False . When the log_feature_combo_support field is set to True , the test runs all combinations of supported features, and logs the results into a proto file without failing the test. For compliance testing, the log_feature_combo_support field must be set to False .

APIs tested:

Pass: For each supported feature combination:

  • The preview stream is stabilized if preview stabilization is on.
  • The preview frame rate falls within the configured AE_TARGET_FPS_RANGE .
  • The recorded preview stream's color space matches what's set.
  • The Ultra HDR capture has a valid gain map.