Hiệu ứng bokeh của máy ảnh là hiệu ứng làm mờ một phần của cảnh để các phần đó không được lấy nét, tạo ra độ sâu trường ảnh nông. Trên máy ảnh của thiết bị di động, hiệu ứng bokeh được tạo ra bằng cách sử dụng thông tin về chiều sâu thu được từ tầm nhìn lập thể 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
Để cung cấp tính năng hiệu ứng bokeh của máy ảnh 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ột mảng bộ ba số nguyên, với mỗi bộ ba có định dạng
{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_CAPTUREvàANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUSvới kích thước luồng tối đa tương ứng.Quảng cáo
ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES:Thẻ này có định dạng là một mảng
{minZoomRatio, maxZoomRatio}, chứa tất cả các dải tỷ lệ thu phóng cho một chế độ cảnh mở rộng đã bật, theo cùng thứ tự như trongANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES. Dải thu phóng[1.0, 1.0]có nghĩa là không hỗ trợ thu phóng.Điền
ANDROID_CONTROL_USE_EXTENDED_SCENE_MODEvàoANDROID_CONTROL_AVAILABLE_MODES.
Để một ứng dụng kích hoạt tính năng hiệu ứng bokeh, ứng dụng đó phải đặt ANDROID_CONTROL_MODE thành ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE và ANDROID_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ể dẫn đến việc tiêu thụ thêm bộ nhớ do quá trình tính toán lập thể.
Nếu một chế độ cảnh mở rộng được hỗ trợ không thể áp dụng cho mỗi khung hình và dẫn đến sự chậm trễ không mong muố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 yêu cầu định cấu hình lại.
Xác nhận kết quả
Để xác thực tính năng hiệu ứng bokeh trên thiết bị, hãy chạy các bài kiểm thử CTS, VTS và Trình xác minh CTS sau đây:
CtsCameraTestCasesVtsHalCameraProviderV2_4TargetTestCameraBokehTesttrong Trình xác minh CTS