অ্যান্ড্রয়েড ১২ সংস্করণে ক্যামেরা ITS-এ বেশ কিছু পরিবর্তন অন্তর্ভুক্ত করা হয়েছে। এই পৃষ্ঠায় সেই পরিবর্তনগুলোর সারসংক্ষেপ দেওয়া হয়েছে, যেগুলোকে চারটি প্রধান শ্রেণীতে ভাগ করা যায়:
পাইথন ৩-এ রিফ্যাক্টর করুন
২০২০ সালের জানুয়ারিতে পাইথন ২.৭ অপ্রচলিত হয়ে যাওয়ার কারণে, সম্পূর্ণ ক্যামেরা আইটিএস কোডবেসটি পাইথন ৩-এ রিফ্যাক্টর করা হয়েছে। অ্যান্ড্রয়েড ১২-এর জন্য নিম্নলিখিত পাইথন সংস্করণ এবং লাইব্রেরিগুলো প্রয়োজন:
- পাইথন ৩.৭.৯ অথবা পাইথন ৩.৭.১০
- ওপেনসিভি ৩.৪.২
- নামপাই ১.১৯.২
- ম্যাটপ্লটলিব ৩.৩.২
- Scipy 1.5.2
- পাইসিরিয়াল ৩.৫
- বালিশ ৮.১.০
- পাইওয়াইএএমএল ৫.৩.১
প্রধান টেস্ট লঞ্চার, tools/run_all_tests.py , অ্যান্ড্রয়েড ১১ বা তার নিচের সংস্করণগুলোতে একই রয়েছে এবং এটিকে পাইথন ৩-এ রিফ্যাক্টর করা হয়েছে।
সমস্ত স্বতন্ত্র টেস্ট রিফ্যাক্টর করা হয়েছে এবং tests/its_base_test.py তে সংজ্ঞায়িত নতুন টেস্ট সেটআপ ক্লাস ব্যবহার করে। বেশিরভাগ টেস্টের নাম এবং কার্যকারিতা একই রয়েছে। অ্যান্ড্রয়েড ১২-এ এখন সমস্ত স্বতন্ত্র টেস্ট তাদের সিন লোড করে। যদিও প্রতিটি টেস্টের জন্য সিন লোড করার কারণে সামগ্রিক টেস্টের সময় বেড়ে যায়, এটি স্বতন্ত্র টেস্ট ডিবাগ করার সুযোগ করে দেয়।
পৃথক পরীক্ষার পরিবর্তন সম্পর্কে আরও তথ্যের জন্য, পরীক্ষার পরিবর্তনসমূহ দেখুন।
নিম্নলিখিত পাইথন মডিউলগুলো নাম পরিবর্তনসহ রিফ্যাক্টর করা হয়েছে:
-
pymodules/its/caps.py→utils/camera_properties_utils.py -
pymodules/its/cv2image.py→utils/opencv_processing_utils.py -
pymodules/its/device.py→utils/its_session_utils.py -
pymodules/its/error.py→utils/error_util.py -
pymodules/its/image.py→utils/image_processing_utils.py -
pymodules/its/objects.py→utils/capture_request_utils.py -
pymodules/its/target.py→utils/target_exposure_utils.py -
tools/hw.py→utils/sensor_fusion_utils.py
মোবাইল টেস্ট ফ্রেমওয়ার্ক গ্রহণ
মব্লি হলো একটি পাইথন-ভিত্তিক টেস্ট ফ্রেমওয়ার্ক যা কাস্টম হার্ডওয়্যার সেটআপসহ একাধিক ডিভাইসের প্রয়োজন হয় এমন টেস্ট কেসগুলোকে সমর্থন করে। ক্যামেরা আইটিএস টেস্টগুলোর ওপর আরও ভালো নিয়ন্ত্রণ এবং লগিং সক্ষম করতে মব্লি টেস্ট পরিকাঠামো ব্যবহার করে।
ক্যামেরা আইটিএস, টেস্টগুলোর ওপর আরও ভালো নিয়ন্ত্রণ ও লগিং সক্ষম করতে মব্লি টেস্ট ইনফ্রাস্ট্রাকচার ব্যবহার করে। মব্লি হলো একটি পাইথন-ভিত্তিক টেস্ট ফ্রেমওয়ার্ক, যা কাস্টম হার্ডওয়্যার সেটআপসহ একাধিক ডিভাইসের প্রয়োজন হয় এমন টেস্ট কেসগুলোকে সমর্থন করে। মব্লি সম্পর্কে আরও তথ্যের জন্য, google/mobly দেখুন।
config.yml ফাইল
Mobly ফ্রেমওয়ার্কের সাহায্যে, আপনি its_base_test ক্লাসে একটি ডিভাইস আন্ডার টেস্ট (DUT) এবং একটি চার্ট ট্যাবলেট সেট আপ করতে পারেন। একটি Mobly টেস্টবেড তৈরি করতে config.yml (YAML) ফাইল ব্যবহার করা হয়। এই কনফিগারেশন ফাইলের মধ্যে একাধিক টেস্টবেড কনফিগার করা যেতে পারে, যেমন, একটি ট্যাবলেট এবং একটি সেন্সর ফিউশন টেস্টবেড। প্রতিটি টেস্টবেডের কন্ট্রোলার সেকশনের মধ্যে, টেস্ট রানারের কাছে উপযুক্ত অ্যান্ড্রয়েড ডিভাইসগুলো শনাক্ত করার জন্য আপনি device_ids নির্দিষ্ট করতে পারেন। ডিভাইস আইডি ছাড়াও, ট্যাবলেট brightness , chart_distance , debug_mode , camera_id এবং scene_id মতো অন্যান্য প্যারামিটারগুলো টেস্ট ক্লাসে পাস করা হয়। সাধারণ টেস্ট প্যারামিটারের মানগুলো হলো:
brightness: 192 (all tablets except Pixel C)
chart_distance: 31.0 (rev1/rev1a box for FoV < 90° cameras)
chart_distance: 22.0 (rev2 test rig for FoV > 90° cameras)
ট্যাবলেট-ভিত্তিক পরীক্ষা
ট্যাবলেট-ভিত্তিক পরীক্ষার জন্য, টেস্টবেডের নামে TABLET কীওয়ার্ডটি অবশ্যই থাকতে হবে। ইনিশিয়ালাইজেশনের সময়, Mobly টেস্ট রানার TestParams ইনিশিয়ালাইজ করে এবং সেগুলোকে স্বতন্ত্র টেস্টগুলোতে প্রেরণ করে।
নিচে ট্যাবলেট-ভিত্তিক রানের জন্য একটি নমুনা config.yml ফাইল দেওয়া হলো।
TestBeds:
- Name: TEST_BED_TABLET_SCENES
# Test configuration for scenes[0:4, 6, _change]
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
- serial: 5B16001229
label: tablet
TestParams:
brightness: 192
chart_distance: 22.0
debug_mode: "False"
chart_loc_arg: ""
camera: 0
scene: <scene-name> # if <scene-name> runs all scenes
tools/run_all_tests.py ব্যবহার করে টেস্টবেডটি চালু করা যায়। যদি কোনো কমান্ড লাইন ভ্যালু না থাকে, তাহলে টেস্টগুলো config.yml ফাইলের ভ্যালু দিয়ে রান হয়। এছাড়াও, আপনি অ্যান্ড্রয়েড ১১ বা তার নিচের ভার্সনের মতো কমান্ড ব্যবহার করে কমান্ড লাইন থেকে camera এবং scene কনফিগারেশন ফাইলের ভ্যালু ওভাররাইড করতে পারেন।
উদাহরণস্বরূপ:
python tools/run_all_tests.py
python tools/run_all_tests.py camera=1
python tools/run_all_tests.py scenes=2,1,0
python tools/run_all_tests.py camera=1 scenes=2,1,0
সেন্সর ফিউশন টেস্টিং
সেন্সর ফিউশন পরীক্ষার জন্য, টেস্টবেডের নামে অবশ্যই SENSOR_FUSION কীওয়ার্ডটি অন্তর্ভুক্ত থাকতে হবে। পরীক্ষিত সিনগুলোর মাধ্যমে সঠিক টেস্টবেডটি নির্ধারণ করা হয়। অ্যান্ড্রয়েড ১২ সেন্সর ফিউশনের জন্য আরডুইনো এবং ক্যানাকিট উভয় কন্ট্রোলারকেই সমর্থন করে।
নিচে সেন্সর ফিউশন রানের জন্য একটি নমুনা config.yml ফাইল দেওয়া হলো।
Testbeds
- Name: TEST_BED_SENSOR_FUSION
# Test configuration for sensor_fusion/test_sensor_fusion.py
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
TestParams:
fps: 30
img_size: 640,480
test_length: 7
debug_mode: "False"
chart_distance: 25
rotator_cntl: arduino # cntl can be arduino or canakit
rotator_ch: 1
camera: 0
সেন্সর ফিউশন টেস্ট রিগ ব্যবহার করে সেন্সর ফিউশন টেস্ট চালানোর জন্য, ব্যবহার করুন:
python tools/run_all_tests.py scenes=sensor_fusion
python tools/run_all_tests.py scenes=sensor_fusion camera=0
একাধিক পরীক্ষামূলক ক্ষেত্র
কনফিগারেশন ফাইলে একাধিক টেস্টবেড অন্তর্ভুক্ত করা যেতে পারে। সবচেয়ে প্রচলিত সংমিশ্রণ হলো একটি ট্যাবলেট টেস্টবেড এবং একটি সেন্সর ফিউশন টেস্টবেড উভয়ই রাখা।
নিচে ট্যাবলেট এবং সেন্সর ফিউশন টেস্টবেড উভয়ের সমন্বয়ে একটি নমুনা config.yml ফাইল দেওয়া হলো।
Testbeds
- Name: TEST_BED_TABLET_SCENES
# Test configuration for scenes[0:4, 6, _change]
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
- serial: 5B16001229
label: tablet
TestParams:
brightness: 192
chart_distance: 22.0
debug_mode: "False"
chart_loc_arg: ""
camera: 0
scene: <scene-name> # if <scene-name> runs all scenes
- Name: TEST_BED_SENSOR_FUSION
# Test configuration for sensor_fusion/test_sensor_fusion.py
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
TestParams:
fps: 30
img_size: 640,480
test_length: 7
debug_mode: "False"
chart_distance: 25
rotator_cntl: arduino # cntl can be arduino or canakit
rotator_ch: 1
camera: 0
ম্যানুয়াল টেস্টিং
অ্যান্ড্রয়েড ১২-এ ম্যানুয়াল টেস্টিং সমর্থিত রয়েছে। তবে, টেস্টবেডের নামে MANUAL কীওয়ার্ডটি ব্যবহার করে এটিকে টেস্টিং হিসেবে চিহ্নিত করতে হবে। এছাড়াও, টেস্টবেডে কোনো ট্যাবলেট আইডি অন্তর্ভুক্ত করা যাবে না।
ম্যানুয়াল পরীক্ষার জন্য নিম্নলিখিতটি একটি নমুনা config.yml ফাইল।
TestBeds:
- Name: TEST_BED_MANUAL
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
TestParams:
debug_mode: "False"
chart_distance: 31.0
camera: 0
scene: scene1
ট্যাবলেট ছাড়া টেস্ট সিন
সিন ০ এবং সিন ৫-এর টেস্টিং TEST_BED_TABLET_SCENES অথবা TEST_BED_MANUAL দিয়ে করা যেতে পারে। তবে, যদি TEST_BED_TABLET_SCENES দিয়ে টেস্টিং করা হয়, তাহলে ট্যাবলেটটি অবশ্যই সংযুক্ত থাকতে হবে এবং ট্যাবলেটের সিরিয়াল আইডি বৈধ হতে হবে, এমনকি ট্যাবলেটটি ব্যবহৃত না হলেও; কারণ টেস্ট ক্লাস সেটআপ ট্যাবলেটের জন্য সিরিয়াল আইডির মান নির্ধারণ করে দেয়।
পৃথক পরীক্ষা চালান
স্বতন্ত্র টেস্টগুলো শুধুমাত্র ডিবাগ করার উদ্দেশ্যে চালানো যায়, কারণ এগুলোর ফলাফল CTS Verifier- এ রিপোর্ট করা হয় না। যেহেতু camera এবং scene জন্য config.yml ফাইলগুলো কমান্ড লাইন থেকে ওভাররাইট করা যায় না, তাই নির্দিষ্ট টেস্টটির জন্য config.yml ফাইলে এই প্যারামিটারগুলো অবশ্যই সঠিক হতে হবে। এছাড়াও, যদি কনফিগ ফাইলে একাধিক টেস্টবেড থাকে, তবে আপনাকে অবশ্যই --test_bed ফ্ল্যাগ ব্যবহার করে টেস্টবেডটি নির্দিষ্ট করে দিতে হবে। উদাহরণস্বরূপ:
python tests/scene1_1/test_black_white.py --config config.yml --test_bed TEST_BED_TABLET_SCENES
পরীক্ষার নিদর্শন
অ্যান্ড্রয়েড ১২-এ, ক্যামেরা আইটিএস (Camera ITS)-এর টেস্ট আর্টিফ্যাক্টগুলো অ্যান্ড্রয়েড ১১ বা তার পূর্ববর্তী সংস্করণগুলোর মতোই সংরক্ষিত হয়, তবে নিম্নলিখিত পরিবর্তনগুলোসহ:
- পরীক্ষার আর্টিফ্যাক্ট
/tmpডিরেক্টরিতে স্পষ্টতার জন্য ৮-অক্ষরের র্যান্ডম স্ট্রিংটির শুরুতেCameraITS_যোগ করা হয়েছে। - প্রতিটি টেস্টের আউটপুট এবং ত্রুটি
test_name_stdout.txtওtest_name_stderr.txtপরিবর্তেtest_log.DEBUGফাইলে সংরক্ষণ করা হয়। - প্রতিটি স্বতন্ত্র পরীক্ষার DUT এবং ট্যাবলেট লগক্যাটগুলি
/tmp/CameraITS_########ডিরেক্টরিতে সংরক্ষিত থাকে, যা ডিবাগিংকে সহজ করে তোলে কারণ 3A সমস্যাগুলি ডিবাগ করার জন্য প্রয়োজনীয় সমস্ত তথ্য লগ করা থাকে।
পরীক্ষার পরিবর্তন
অ্যান্ড্রয়েড ১২-এ ট্যাবলেট সিনগুলো পিডিএফ ফাইলের পরিবর্তে পিএনজি ফাইল। পিএনজি ফাইল ব্যবহারের ফলে আরও বেশি ট্যাবলেট মডেলে সিনগুলো সঠিকভাবে প্রদর্শন করা যায়।
scene0/test_jitter.py
test_jitter টেস্টটি অ্যান্ড্রয়েড ১২-এর ফিজিক্যাল হিডেন ক্যামেরাগুলোতে চলে।
scene1_1/test_black_white.py
অ্যান্ড্রয়েড ১২-এর ক্ষেত্রে, test_black_white মধ্যে test_black_white এবং test_channel_saturation উভয়েরই কার্যকারিতা রয়েছে।
নিচের সারণিতে অ্যান্ড্রয়েড ১১-এর দুটি স্বতন্ত্র পরীক্ষার বর্ণনা দেওয়া হয়েছে।
| পরীক্ষার নাম | প্রথম এপিআই স্তর | দাবি |
|---|---|---|
| scene1_1/test_black_white.py | সকল | স্বল্প এক্সপোজার, কম গেইন RGB মান ~[0, 0, 0] দীর্ঘ এক্সপোজার, উচ্চ গেইন RGB মান ~[255, 255, 255] |
| scene1_1/test_channel_saturation.py | ২৯ | সাদা ছবিতে রঙের আভা দূর করার জন্য [255, 255, 255] পার্থক্যের উপর সহনশীলতা কমানো হয়েছে। |
নিম্নলিখিত সারণীতে অ্যান্ড্রয়েড ১২-এর মার্জ করা টেস্ট, scene1_1/test_black_white.py, সম্পর্কে বর্ণনা করা হয়েছে।
| পরীক্ষার নাম | প্রথম এপিআই স্তর | দাবি |
|---|---|---|
| scene1_1/test_black_white.py | সকল | স্বল্প এক্সপোজার, কম গেইন RGB মান ~[0, 0, 0] সাদা ছবিতে রঙের আভা দূর করার জন্য দীর্ঘ এক্সপোজার, উচ্চ গেইন RGB মান ~[255, 255, 255] এবং মানগুলির মধ্যে সহনশীলতা হ্রাস করা হয়েছে। |
scene1_1/test_burst_sameness_manual.py
test_burst_sameness_manual টেস্টটি অ্যান্ড্রয়েড ১২-এর ফিজিক্যাল হিডেন ক্যামেরাগুলোতে চলে।
scene1_2/test_tonemap_sequence.py
অ্যান্ড্রয়েড ১২-এ test_tonemap_sequence টেস্টটি সীমিত সংখ্যক ক্যামেরায় চলে।
scene1_2/test_yuv_plus_raw.py
test_yuv_plus_raw টেস্টটি অ্যান্ড্রয়েড ১২-এর ফিজিক্যাল হিডেন ক্যামেরাগুলোতে চলে।
scene2_a/test_format_combos.py
test_format_combos টেস্টটি অ্যান্ড্রয়েড ১২-এ সীমিত সংখ্যক ক্যামেরায় চলে।
scene3/test_flip_mirror.py
অ্যান্ড্রয়েড ১২-এ test_flip_mirror টেস্টটি সীমিত সংখ্যক ক্যামেরায় চলে।
scene4/test_aspect_ratio_and_crop.py
Android 12-এ scene4/test_aspect_ratio_and_crop.py তে বৃত্ত খোঁজার প্রক্রিয়াটি রিফ্যাক্টর করা হয়েছে।
অ্যান্ড্রয়েডের আগের সংস্করণগুলোতে এমন একটি পদ্ধতি ব্যবহার করা হতো, যেখানে আকার ও রঙের ফিল্টার ব্যবহার করে প্যারেন্ট কনট্যুরের (বর্গক্ষেত্র) ভেতরে চাইল্ড কনট্যুর (বৃত্ত) খোঁজা হতো। অ্যান্ড্রয়েড ১২ এমন একটি পদ্ধতি ব্যবহার করে, যেখানে প্রথমে সমস্ত কনট্যুর খুঁজে বের করা হয় এবং তারপর সবচেয়ে বৃত্তাকার বৈশিষ্ট্যগুলো খুঁজে বের করে ফিল্টার করা হয়। ডিসপ্লে থেকে অপ্রয়োজনীয় বৃত্ত বাদ দেওয়ার জন্য একটি ন্যূনতম কনট্যুর ক্ষেত্রফল প্রয়োজন, এবং বৃত্তটির কনট্যুর অবশ্যই কালো হতে হবে।
রূপরেখাগুলো এবং সেগুলো নির্বাচনের মানদণ্ড নিম্নলিখিত চিত্রে দেখানো হয়েছে।

চিত্র ১. সীমারেখা এবং নির্বাচন মানদণ্ডের ধারণাগত অঙ্কন
অ্যান্ড্রয়েড ১২ পদ্ধতিটি আরও সরল এবং এটি কিছু ডিসপ্লে ট্যাবলেটে বাউন্ডিং বক্স ক্লিপিং-এর সমস্যা সমাধানে কার্যকর। ডিবাগিং-এর উদ্দেশ্যে সমস্ত সম্ভাব্য বৃত্তের তথ্য লগ করা হয়।
অ্যান্ড্রয়েড ১২-এ FULL এবং LEVEL3 ডিভাইসগুলোর জন্য ক্রপ টেস্ট চালানো হয়। অ্যান্ড্রয়েড ১১ বা তার নিচের সংস্করণগুলো FULL ডিভাইসগুলোর জন্য ক্রপ টেস্ট অ্যাসারশন এড়িয়ে যায়।
নিম্নলিখিত সারণিতে test_aspect_ratio_and_crop.py জন্য নির্দিষ্ট ডিভাইস লেভেল এবং প্রথম এপিআই লেভেলের সাথে সম্পর্কিত অ্যাসারশনগুলো তালিকাভুক্ত করা হয়েছে।
| ডিভাইস স্তর | প্রথম এপিআই স্তর | দাবি |
|---|---|---|
| লিমিটেড | সকল | আকৃতির অনুপাত ৪:৩, ১৬:৯, ২:১ ফরম্যাটের জন্য FoV |
| সম্পূর্ণ | < ৩১ | আকৃতির অনুপাত ৪:৩, ১৬:৯, ২:১ ফরম্যাটের জন্য FoV |
| সম্পূর্ণ | ≥ ৩১ | ফসল আকৃতির অনুপাত ৪:৩, ১৬:৯, ২:১ ফরম্যাটের জন্য FoV |
| লেভেল ৩ | সকল | ফসল আকৃতির অনুপাত ৪:৩, ১৬:৯, ২:১ ফরম্যাটের জন্য FoV |
scene4/test_multi_camera_alignment.py
scene4/test_multi_camera_alignment.py ফাইলে YUV ক্যাপচারের জন্য ব্যবহৃত undo_zoom() মেথডটিকে রিফ্যাক্টর করা হয়েছে, যাতে এটি ক্যাপচারের অ্যাস্পেক্ট রেশিওর সাথে মেলে না এমন সেন্সরগুলিতেও ক্রপিংকে আরও নির্ভুলভাবে বিবেচনা করে।
অ্যান্ড্রয়েড ১১ পাইথন ২ কোড
zoom_ratio = min(1.0 * yuv_w / cr_w, 1.0 * yuv_h / cr_h)
circle[i]['x'] = cr['left'] + circle[i]['x'] / zoom_ratio
circle[i]['y'] = cr['top'] + circle[i]['y'] / zoom_ratio
circle[i]['r'] = circle[i]['r'] / zoom_ratio
অ্যান্ড্রয়েড ১২ পাইথন ৩ কোড
yuv_aspect = yuv_w / yuv_h
relative_aspect = yuv_aspect / (cr_w/cr_h)
if relative_aspect > 1:
zoom_ratio = yuv_w / cr_w
yuv_x = 0
yuv_y = (cr_h - cr_w / yuv_aspect) / 2
else:
zoom_ratio = yuv_h / cr_h
yuv_x = (cr_w - cr_h * yuv_aspect) / 2
yuv_y = 0
circle['x'] = cr['left'] + yuv_x + circle['x'] / zoom_ratio
circle['y'] = cr['top'] + yuv_y + circle['y'] / zoom_ratio
circle['r'] = circle['r'] / zoom_ratio
sensor_fusion/test_sensor_fusion.py
অ্যান্ড্রয়েড ১২-এ সেন্সর ফিউশন টেস্টের জন্য ছবিতে বৈশিষ্ট্য শনাক্ত করার একটি পদ্ধতি যোগ করা হয়েছে।
অ্যান্ড্রয়েড ১২-এর পূর্ববর্তী সংস্করণগুলিতে, সম্পূর্ণ ছবি থেকে সেরা ২৪০টি বৈশিষ্ট্য খুঁজে বের করা হয়, যেগুলোকে পরে রোলিং শাটার প্রভাব এড়ানোর জন্য ছবির মাঝের ২০% অংশে মাস্ক করা হয় এবং এর জন্য ন্যূনতম ৩০টি বৈশিষ্ট্যের প্রয়োজন হয়।
এই পদ্ধতিতে প্রাপ্ত ফিচারগুলো অপর্যাপ্ত হলে, অ্যান্ড্রয়েড ১২ প্রথমে ফিচার শনাক্তকরণ এলাকাটিকে কেন্দ্রের ২০% পর্যন্ত মাস্ক করে এবং সর্বোচ্চ ফিচারের সংখ্যাকে ন্যূনতম প্রয়োজনীয় ফিচারের দ্বিগুণে সীমাবদ্ধ করে।
নিচের ছবিটি অ্যান্ড্রয়েড ১১ এবং অ্যান্ড্রয়েড ১২-এর ফিচার ডিটেকশনের মধ্যে পার্থক্য দেখায়। ন্যূনতম ফিচার রিকোয়ারমেন্ট থ্রেশহোল্ড বাড়ানোর ফলে নিম্নমানের ফিচার ডিটেক্ট হয় এবং এটি পরিমাপকে নেতিবাচকভাবে প্রভাবিত করে।

চিত্র ২. অ্যান্ড্রয়েড ১১ এবং অ্যান্ড্রয়েড ১২ এর মধ্যে বৈশিষ্ট্য সনাক্তকরণের পার্থক্য
নতুন পরীক্ষা
scene0/test_solid_color_test_pattern.py
অ্যান্ড্রয়েড ১২-এর জন্য test_solid_color_test_pattern নামে একটি নতুন টেস্ট চালু করা হয়েছে। এই টেস্টটি সব ক্যামেরার জন্য চালু করা হয়েছে এবং নিচের টেবিলে এর বর্ণনা দেওয়া হয়েছে।
| দৃশ্য | পরীক্ষার নাম | প্রথম এপিআই স্তর | বর্ণনা |
|---|---|---|---|
| ০ | test_solid_color_test_pattern | ৩১ | একক রঙের চিত্র আউটপুট এবং চিত্রের রঙ প্রোগ্রাম করার ক্ষমতা নিশ্চিত করে। |
ক্যামেরা প্রাইভেসি মোড সমর্থন করার জন্য সলিড কালার টেস্ট প্যাটার্ন অবশ্যই সক্রিয় করতে হবে। test_solid_color_test_pattern পরীক্ষাটি নির্বাচিত প্যাটার্ন দ্বারা সংজ্ঞায়িত রঙের সলিড কালার YUV ইমেজ আউটপুট নিশ্চিত করে এবং ছবির রঙ স্পেসিফিকেশন অনুযায়ী পরিবর্তিত হয়।
প্যারামিটার
-
cameraPrivacyModeSupport: ক্যামেরাটি প্রাইভেসি মোড সমর্থন করে কিনা তা নির্ধারণ করে। -
android.sensor.testPatternMode: পরীক্ষার প্যাটার্ন মোড নির্ধারণ করে। এই পরীক্ষাটিSOLID_COLORব্যবহার করে। -
android.sensor.testPatternData: টেস্ট প্যাটার্ন মোডের জন্য R, Gr, Gb, G টেস্ট প্যাটার্নের মান নির্ধারণ করে।
একক রঙের টেস্ট প্যাটার্নের বিবরণের জন্য, SENSOR_TEST_PATTERN_MODE_SOLID_COLOR দেখুন।
পদ্ধতি
নির্ধারিত প্যারামিটারগুলোর জন্য YUV ফ্রেম ক্যাপচার করা হয় এবং ছবির বিষয়বস্তু যাচাই করা হয়। টেস্ট প্যাটার্নটি সরাসরি ইমেজ সেন্সর থেকে আউটপুট করা হয়, তাই কোনো নির্দিষ্ট দৃশ্যের প্রয়োজন হয় না। যদি PER_FRAME_CONTROL সমর্থিত থাকে, তবে পরীক্ষিত প্রতিটি সেটিংয়ের জন্য একটি করে YUV ফ্রেম ক্যাপচার করা হয়। যদি PER_FRAME_CONTROL সমর্থিত না থাকে, তবে চারটি ফ্রেম ক্যাপচার করা হয় এবং LIMITED ক্যামেরাগুলোতে টেস্ট কভারেজ সর্বাধিক করার জন্য শুধুমাত্র শেষ ফ্রেমটি বিশ্লেষণ করা হয়।
YUV ক্যাপচারগুলো সম্পূর্ণ স্যাচুরেটেড BLACK , WHITE , RED , GREEN এবং BLUE টেস্ট প্যাটার্নে সেট করা হয়। যেহেতু টেস্ট প্যাটার্নের সংজ্ঞা সেন্সরের বেয়ার প্যাটার্ন অনুযায়ী হয়, তাই প্রতিটি রঙের জন্য কালার চ্যানেলগুলো অবশ্যই নিম্নলিখিত সারণিতে দেখানো অনুসারে সেট করতে হবে।
| রঙ | টেস্টপ্যাটার্নডেটা (আরজিজিবি) |
|---|---|
| কালো | (0, 0, 0, 0) |
| সাদা | (1, 1, 1, 1) |
| লাল | (1, 0, 0, 0) |
| সবুজ | (0, 1, 1, 0) |
| নীল | (0, 0, 0, 1) |
অ্যাসারশন টেবিল
নিম্নলিখিত সারণিতে test_solid_color_test_pattern.py ফাইলের টেস্ট অ্যাসারশনগুলো বর্ণনা করা হয়েছে।
| ক্যামেরা প্রথম এপিআই স্তর | ক্যামেরার ধরন | রঙ দাবি করা হয়েছে |
|---|---|---|
| ৩১ | বেয়ার | কালো, সাদা, লাল, সবুজ, নীল |
| ৩১ | মনো | কালো, সাদা |
| < ৩১ | বেয়ার/মনো | কালো |
পারফরম্যান্স ক্লাস পরীক্ষা
scene2_c/test_camera_launch_perf_class.py
scene2_c ফেস সিন ব্যবহার করে সামনের ও পেছনের উভয় প্রাইমারি ক্যামেরার স্টার্টআপ টাইম ৫০০ মিলিসেকেন্ডের কম কিনা তা যাচাই করা হয়েছে।
scene2_c/test_jpeg_capture_perf_class.py
scene2_c ফেস সিন ব্যবহার করে সামনের ও পেছনের উভয় প্রাইমারি ক্যামেরার জন্য 1080p JPEG ক্যাপচার ল্যাটেন্সি ১ সেকেন্ডের কম কিনা তা যাচাই করা হয়েছে।