máy ảnh NÓ

Bộ kiểm tra hình ảnh máy ảnh (ITS) là một khuôn khổ để chạy thử nghiệm các hình ảnh do máy ảnh Android tạo ra. Mục tiêu chung của mỗi thử nghiệm trong ITS là định cấu hình máy ảnh theo cách cụ thể, chụp một hoặc nhiều ảnh và kiểm tra các ảnh đó để xem liệu chúng có chứa dữ liệu hình ảnh mong muốn hay không. Nhiều thử nghiệm yêu cầu máy ảnh phải hướng vào biểu đồ mục tiêu cụ thể hoặc được chiếu sáng ở cường độ cụ thể.

ITS nằm trong khai thác kiểm tra Trình xác minh CTS trong cts/apps/CameraITS . Các thiết bị phải vượt qua các bài kiểm tra ITS tương ứng với các tính năng được hỗ trợ được khung máy ảnh quảng cáo dành cho các ứng dụng của bên thứ ba dưới dạng tập hợp con của CTS.

Cài đặt

Để chạy thử nghiệm ITS, phải thiết lập như sau:

  • Một thiết bị đang được thử nghiệm (DUT)
  • Máy chủ (ví dụ: máy tính để bàn hoặc máy tính xách tay Linux)
  • Một cảnh mà máy ảnh chụp được

Thiết lập thiết bị đang được thử nghiệm (DUT)

Để thiết lập DUT, hãy làm theo các bước sau:

  1. Kết nối DUT với máy chủ qua USB.
  2. Cấp quyền cho máy chủ truy cập DUT qua ADB.
  3. Cài đặt ứng dụng CTS Verifier ( CtsVerifier.apk ) vào thiết bị. Để biết thêm thông tin, hãy xem Sử dụng Trình xác minh CTS .

    extract root/out/host/linux-x86/cts-verfier/android-cts-verifier.zip
    cd android-cts-verifier
    adb install -r -g CtsVerifier.apk
    

Thiết lập máy chủ

ITS yêu cầu máy chủ phải được kết nối với DUT thông qua USB, có thể sử dụng ADB để điều khiển và liên lạc thiết bị cũng như cài đặt phần mềm cần thiết.

Để thiết lập máy chủ của bạn, hãy đảm bảo cài đặt phần mềm sau.

Công cụ nền tảng SDK Android

Các công cụ Nền tảng SDK Android phải được cài đặt và ADB phải nằm trong đường dẫn thực thi của shell hoặc terminal đang chạy trên máy chủ. Để biết phiên bản phát hành công khai của các công cụ Nền tảng SDK Android, hãy xem ghi chú phát hành Công cụ nền tảng SDK .

Python

Python phải được cài đặt trên máy chủ. Chúng tôi khuyên bạn nên sử dụng bản phân phối Python đi kèm để đảm bảo hỗ trợ cho các phiên bản tương thích. Để biết chi tiết về phiên bản Python và gói nào cần cài đặt cho một bản phát hành cụ thể, hãy xem ghi chú phát hành Camera ITS cho bản phát hành tương ứng.

di động

Đối với Android 12 trở lên, phải cài đặt khung kiểm tra Mobly. Mobly cho phép bạn thiết lập máy tính bảng DUT và biểu đồ trong lớp its_base_test . Để cài đặt khung kiểm tra Mobly, hãy chạy:

pip install mobly

Thiết lập môi trường

Để thiết lập môi trường thử nghiệm, hãy chạy:

cd CameraITS
source build/envsetup.sh

Lệnh này kiểm tra quá trình cài đặt Python, thiết lập biến môi trường PYTHONPATH và chạy thử nghiệm đơn vị trên mô-đun utils/*.py . Nếu không có lỗi nào được in ra thiết bị đầu cuối thì môi trường đã sẵn sàng để chạy thử nghiệm ITS.

Nếu bạn thấy thông báo lỗi libtinfo.so.6: no version information available (required by /bin/sh) khi chạy, hãy chạy lệnh sau để đổi tên tệp libtinfo.so.6 .

mv $ENV_DIRECTORY/lib/libtinfo.so.6 $ENV_DIRECTORY/lib/libtinfo.so.6.bak

Thiết lập cảnh

Để thiết lập các cảnh, chúng tôi khuyên bạn nên sử dụng thiết lập Camera ITS-in-a-box để dễ dàng tự động hóa, độ tin cậy và hiệu quả trong quá trình thử nghiệm. Thiết bị kiểm tra ITS-in-a-box hỗ trợ tất cả các yêu cầu về chiếu sáng, căn giữa và thay đổi biểu đồ cho ITS. Ngoài ra, cần có ITS-in-a-box để thử nghiệm tiện ích mở rộng máy ảnh .

Để kiểm tra thủ công, hãy đảm bảo những điều sau:

  • DUT được đặt trên giá ba chân
  • DUT được chỉ vào đúng cảnh cho mỗi bài kiểm tra. (Kịch bản kiểm tra ITS cung cấp lời nhắc thay đổi thiết lập cảnh trước khi bắt đầu kiểm tra trong cảnh mới.)
  • DUT được kết nối với máy chủ qua USB.
  • DUT không di chuyển trong quá trình chạy thử.
  • Cảnh được chiếu sáng bằng nguồn sáng ổn định, không dao động. (Không sử dụng đèn huỳnh quang vì điều này gây ra hiện tượng nhấp nháy.)

Tập lệnh kiểm tra ITS hiển thị lời nhắc yêu cầu người dùng thay đổi thiết lập cảnh trước khi bắt đầu kiểm tra trong cảnh mới.

Hướng điện thoại phải được đặt sao cho máy ảnh chụp ảnh không bị xoay. Cách dễ nhất để kiểm tra điều này là với các cảnh có khuôn mặt trong cảnh2. Hầu hết các điện thoại đều có điện thoại ở hướng ngang với điện thoại xoay ngược chiều kim đồng hồ cho camera sau và xoay theo chiều kim đồng hồ cho camera trước.

Tệp cấu hình

Khi sử dụng khung Mobly, bạn phải tạo tệp cấu hình config.yml để xác định nền tảng thử nghiệm Mobly. Sau đây là ví dụ cho các trường hợp sử dụng khác nhau.

Tệp config.yml cảnh dựa trên máy tính bảng

Sau đây là tệp config.yml mẫu cho các cảnh dựa trên máy tính bảng. Đối với thử nghiệm dựa trên máy tính bảng, từ khóa TABLET phải có trong tên thử nghiệm. Trong quá trình khởi tạo, trình chạy thử nghiệm Mobly khởi tạo các tham số trong tệp và chuyển chúng đến các thử nghiệm riêng lẻ.

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"  # "True" or "False"; quotes needed
      lighting_cntl: <controller-type>  # "arduino" or "None"; quotes needed
      lighting_ch: <controller-channel>
      camera: 0
      foldable_device: "False". # set "True" if testing foldable
      scene: <scene-name>  # if <scene-name> runs all scenes

Để gọi giường thử nghiệm, hãy chạy tools/run_all_tests.py . Nếu không có giá trị dòng lệnh nào chỉ định camera hoặc cảnh thì thử nghiệm sẽ được chạy với các giá trị tệp config.yml . Nếu có các giá trị dòng lệnh cho máy ảnh hoặc cảnh, những giá trị này sẽ ghi đè các giá trị trong phần TestParams của tệp config.yml . Ví dụ:

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

tập tin cấu hình cảnh cảm biến_fusion.yml

Sau đây là tệp config_yml mẫu cho các thử nghiệm sensor_fusion . Đối với thử nghiệm sensor_fusion , từ khóa SENSOR_FUSION phải có trong tên thử nghiệm. Android 13 trở lên chỉ hỗ trợ bộ điều khiển Arduino để kết hợp cảm biến do thử nghiệm tính năng xem trước và ổn định video. Android 12 hỗ trợ bộ điều khiển Arduino và Canakit.

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
      rotator_ch: 1
      camera: 0

Để chạy thử nghiệm sensor_fusion với hộp tổng hợp cảm biến , hãy chạy:

python tools/run_all_tests.py scenes=sensor_fusion
python tools/run_all_tests.py scenes=sensor_fusion camera=0

Nhiều tệp config.yml thử nghiệm

Sau đây là tệp config.yml mẫu có nhiều nền tảng thử nghiệm, một nền tảng thử nghiệm máy tính bảng và một nền tảng thử nghiệm sensor_fusion . Nền thử nghiệm chính xác được xác định bởi các cảnh được thử nghiệm.

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

Kiểm tra thủ công tệp config.yml

Sau đây là tệp config.yml mẫu để kiểm tra thủ công. Từ Android 14, tất cả các thử nghiệm đều được hỗ trợ thử nghiệm thủ công ngoại trừ thử nghiệm scene_extensions . Đối với thử nghiệm thủ công, từ khóa MANUAL phải có trong tên thử nghiệm. Ngoài ra, phần AndroidDevice không thể bao gồm phần nhãn hoặc sê-ri cho máy tính bảng.

TestBeds:
  - Name: TEST_BED_MANUAL
    Controllers:
        AndroidDevice:
          - serial: 8A9X0NS5Z
            label: dut

    TestParams:
      debug_mode: "False"
      camera: 0
      scene: 1

Chạy thử nghiệm ITS

Phần này mô tả cách chạy thử nghiệm ITS.

Gọi thử nghiệm

Sau khi thiết lập thiết bị, máy chủ (bao gồm cả môi trường) và bối cảnh vật lý, hãy chạy kiểm tra ITS bằng quy trình sau.

  1. Mở ứng dụng CTS Verifer. Trong menu kiểm tra, chọn Camera ITS Test .

  2. Từ máy chủ, chạy kiểm tra ITS từ thư mục CameraITS/ . Ví dụ: đối với thiết bị có camera trước và sau, hãy chạy lệnh sau:

    python tools/run_all_tests.py
    

    Tập lệnh lặp lại qua các camera và cảnh thử nghiệm dựa trên tệp config.yml . Để thiết lập gỡ lỗi, chúng tôi khuyên bạn nên chạy một trong các cảnh scene2 bằng một thử nghiệm duy nhất để quay vòng nhanh nhất.

    Để kiểm tra thủ công, trước khi bắt đầu chạy bộ kiểm tra ITS trên mỗi cảnh, tập lệnh sẽ chụp ảnh cảnh hiện tại, lưu nó dưới dạng JPEG, in đường dẫn đến JPEG tới bảng điều khiển và yêu cầu người dùng xác nhận xem hình ảnh ổn. Quá trình chụp và xác nhận này lặp lại cho đến khi người dùng xác nhận hình ảnh ổn. Sau đây là các thông báo trong luồng này.

    Preparing to run ITS on camera 0
    Start running ITS on camera:  0
    Press Enter after placing camera 0 to frame the test scene:
    scene1_1
    The scene setup should be: A grey card covering at least the   middle 30% of the scene
    Running vendor 3A on device
    Capture an image to check the test scene
    Capturing 1 frame with 1 format [yuv]
    Please check scene setup in /tmp/tmpwBOA7g/0/scene1_1.jpg
    Is the image okay for ITS scene1_1? (Y/N)
    

    Mỗi lần chạy tập lệnh sẽ in ra một nhật ký hiển thị ĐẠT, THẤT BẠI hoặc BỎ QUA cho mỗi bài kiểm tra ITS, trong đó SKIP cho biết rằng bài kiểm tra đã đạt vì thiết bị không quảng cáo khả năng cơ bản đang được kiểm tra. Ví dụ: nếu một thiết bị không quảng cáo thông qua giao diện máy ảnh rằng thiết bị đó hỗ trợ DNG thì các bài kiểm tra liên quan đến chụp tệp DNG sẽ bị bỏ qua và được tính là đạt.

  3. Để xác nhận rằng các bài kiểm tra đã đáp ứng yêu cầu kiểm tra, hãy nhấn vào nút dấu kiểm màu xanh lá cây. Mục Kiểm tra ITS Camera trong menu kiểm tra Trình xác minh CTS sau đó sẽ chuyển sang màu xanh lục và biểu thị điện thoại đã vượt qua Camera ITS.

Kiểm tra DUT song song

Các thiết bị chạy Android 14 trở lên hỗ trợ thử nghiệm DUT song song. Điều này cho phép bạn kiểm tra DUT song song với nhiều giàn để tăng tốc độ kiểm tra tổng thể. Ví dụ: thử nghiệm song song cho phép bạn kiểm tra camera 0 trên một giàn máy và camera 1 trên một giàn máy khác cùng một lúc. Tất cả thử nghiệm cho các phiên thử nghiệm song song được tổng hợp trên phiên Trình xác minh CTS trên DUT tham chiếu. Bạn phải chạy thử nghiệm song song với điều khiển ánh sáng Arduino, vì thử nghiệm song song không hỗ trợ điều khiển ánh sáng thủ công. Đảm bảo rằng một kênh khác nhau trên cùng một bộ điều khiển Arduino sẽ điều khiển ánh sáng cho từng giàn.

Sau đây là tệp config.yml mẫu xác định ba nền tảng thử nghiệm để chạy song song.

TestBeds:
  - Name: TEST_BED_TABLET_SCENES_INDEX_0
    Controllers:
        AndroidDevice:
          - serial: <device-id-0>
            label: dut
          - serial: <tablet-id-0>
            label: tablet
    TestParams:
      brightness: 192
      chart_distance: 22.0
      debug_mode: "False"
      lighting_cntl: "arduino"
      lighting_ch: <controller-channel-0>
      camera: 0
      scene: <scene-name>  # if <scene-name> left as-is runs all scenes
      foldable_device: "False"

  - Name: TEST_BED_TABLET_SCENES_INDEX_1
    Controllers:
        AndroidDevice:
          - serial: <device-id-1>
            label: dut
          - serial: <tablet-id-1>
            label: tablet
    TestParams:
      brightness: 192
      chart_distance: 22.0
      debug_mode: "False"
      lighting_cntl: "arduino"
      lighting_ch: <controller-channel-1>
      camera: 1
      scene: <scene-name>  # if <scene-name> left as-is runs all scenes
      foldable_device: "False"

  # TEST_BED_SENSOR_FUSION represents testbed index 2
  # Parallel sensor_fusion is currently unsupported due to Arduino requirements
  - Name: TEST_BED_SENSOR_FUSION
    # Test configuration for sensor_fusion
    Controllers:
        AndroidDevice:
          - serial: <device-id>
            label: dut
    TestParams:
      fps: 30
      img_size: 640,480
      test_length: 7
      debug_mode: "False"
      chart_distance: 25
      rotator_cntl: "arduino"
      rotator_ch: <controller-channel-2>
      camera: <camera-id>
      foldable_device: "False"
      tablet_device: "False"
      lighting_cntl: "None"
      lighting_ch: <controller-channel>
      scene: "sensor_fusion"

Để chạy song song các thử nghiệm, hãy sử dụng lệnh sau:

for i in 0 1 2; do python3 tools/run_all_tests.py testbed_index=$i num_testbeds=3 & done; wait

Mô hình tiếng ồn DNG

Các thiết bị quảng cáo khả năng chụp RAW hoặc DNG phải cung cấp mô hình nhiễu trong siêu dữ liệu kết quả chụp của mỗi ảnh thô. Mô hình tiếng ồn này phải được nhúng vào HAL của camera cho mỗi camera (ví dụ: camera trước và sau) trên thiết bị yêu cầu hỗ trợ.

Thực hiện mô hình tiếng ồn

Để triển khai mô hình nhiễu, hãy làm theo các bước sau để tạo mô hình nhiễu và nhúng mô hình đó vào máy ảnh HAL.

  1. Để tạo mô hình tiếng ồn cho mỗi camera, hãy chạy tập lệnh dng_noise_model.py trong thư mục tools . Điều này xuất ra một đoạn mã C. Để biết thêm thông tin về cách thiết lập máy ảnh và môi trường chụp, hãy xem tài liệu DngNoiseModel.pdf trong thư mục tools .

  2. Để triển khai mô hình nhiễu cho thiết bị, hãy cắt và dán đoạn mã C vào HAL của camera.

Xác thực mô hình tiếng ồn

Kiểm tra ITS tự động tests/scene1_1/test_dng_noise_model.py xác thực mô hình nhiễu bằng cách xác minh rằng các giá trị nhiễu cho mức phơi sáng và mức tăng ảnh được cung cấp trong dữ liệu máy ảnh là chính xác.