Hiệu ứng bokeh của camera

Bokeh của máy ảnh là hiệu ứng độ sâu trường nông được tạo bằng cách làm mờ các phần của cảnh để các phần đó không nằm trong tiêu điểm. Trên máy ảnh trên thiết bị di động, hiệu ứng bokeh được tạo bằng cách sử dụng thông tin chiều sâu thu được từ chế độ xem 3D của hai máy ảnh hoặc từ hai điốt quang (PD) của một máy ảnh.

Kể từ Android 11, nền tảng Android hỗ trợ việc triển khai hiệu ứng bokeh và cung cấp các API để cung cấp tính năng này cho các ứng dụng bên thứ ba.

Triển khai

Để sử dụng tính năng chụp ảnh bokeh trên thiết bị, hãy làm như sau:

  • Quảng cáo ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES:

    Thẻ này có định dạng là mảng gồm 3 bộ dữ liệu số nguyên, trong đó mỗi bộ dữ liệu có định dạng là {mode, maxWidth, maxHeight}. Ngoài {ANDROID_CONTROL_EXTENDED_SCENE_MODE_DISABLED, 0, 0}, HAL máy ảnh cũng phải liệt kê một hoặc cả hai chế độ ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTUREANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUS với kích thước truyền trực tuyến tối đa tương ứng.

  • Quảng cáo ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES:

    Thẻ này ở định dạng mảng {minZoomRatio, maxZoomRatio}, chứa tất cả các phạm vi tỷ lệ thu phóng cho chế độ cảnh mở rộng đã bật, theo thứ tự giống như trong ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES. Phạm vi thu phóng là [1.0, 1.0] có nghĩa là tính năng thu phóng không được hỗ trợ.

  • Điền ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE vào ANDROID_CONTROL_AVAILABLE_MODES.

Để kích hoạt tính năng bokeh, ứng dụng phải đặt ANDROID_CONTROL_MODE thành ANDROID_CONTROL_USE_EXTENDED_SCENE_MODEANDROID_CONTROL_EXTENDED_SCENE_MODE thành một trong các chế độ cảnh mở rộng được hỗ trợ. Xin lưu ý rằng việc triển khai hiệu ứng bokeh có thể làm tăng mức tiêu thụ bộ nhớ do tính toán âm thanh nổi.

Nếu không thể áp dụng chế độ cảnh mở rộng được hỗ trợ cho mỗi khung hình và dẫn đến tình trạng chậm trễ ngoài dự kiến khi bật/tắt, hãy đưa ANDROID_CONTROL_EXTENDED_SCENE_MODE vào ANDROID_REQUEST_AVAILABLE_SESSION_KEYS. Đồng thời, hãy triển khai phương thức ICameraDeviceSession::isReconfigurationRequired() để tránh việc định cấu hình lại cho các chế độ cảnh mở rộng không cần định cấu hình lại.

Xác nhận kết quả

Để xác thực tính năng bokeh trên thiết bị, hãy chạy các kiểm thử CTS, VTS và CTS Verifier sau:

  • CtsCameraTestCases
  • VtsHalCameraProviderV2_4TargetTest
  • CameraBokehTest trong Trình xác minh CTS