HDR trong ảnh chụp màn hình Android

Kể từ khi video có dải động cao (HDR) ra mắt, các dịch vụ phát trực tuyến đã bắt đầu phát trực tuyến video HDR, tập trung vào trải nghiệm toàn màn hình. Gần đây, các ứng dụng mạng xã hội đã ra mắt tính năng hỗ trợ video HDR và Ultra HDR, cho thấy sự quan tâm ngày càng tăng đối với việc áp dụng HDR trên nhiều ứng dụng.

Hỗ trợ HDR trên Android

Sau đây là các cột mốc hỗ trợ công nghệ HDR của Android trong vài năm qua:

Android 7

  • Hỗ trợ ban đầu cho việc giải mã và hiển thị video HDR.
  • Tiếp tục cải tiến các tính năng HDR.

Android 13

  • Hỗ trợ toàn diện cho tính năng quay, mã hoá và hiển thị video HDR.
  • Giới thiệu về Thành phần hỗn hợp SDR và HDR, xác định các dải độ chói có thể hiển thị khác nhau giữa SDR và HDR.

Android 14

  • Hỗ trợ hình ảnh HDR bằng chế độ Ultra HDR.

Tính năng chụp ảnh màn hình có HDR cũng đã phát triển và trải qua một số thay đổi trong những năm qua.

Những tiến bộ trong khả năng chụp ảnh màn hình HDR

Phần này theo dõi tiến trình của tính năng chụp ảnh màn hình HDR trong các bản cập nhật Android gần đây.

Android 9

SurfaceFlinger, trình kết hợp đồ hoạ của Android, hỗ trợ video HDR. Quá trình kết xuất GPU của video và ảnh chụp màn hình HDR được hỗ trợ bằng trình ánh xạ tông màu đa thức phức tạp. Đường cong ánh xạ tông màu này không phải lúc nào cũng tương đương với bộ ánh xạ tông màu hiển thị, vì vậy, ảnh chụp màn hình sẽ khác với nội dung trên màn hình.

Android 13

Một trình bổ trợ ánh xạ tông màu được thêm vào khối kết xuất GPU của SurfaceFlinger, cho phép OEM cung cấp một chương trình đổ bóng GPU để khớp với đường cong ánh xạ tông màu của màn hình. Ảnh chụp màn hình gần như khớp với nội dung trên màn hình, nhưng có những điểm khác biệt sau:

  • Ảnh chụp màn hình vẫn ở định dạng SDR. Do đó, khi xem cùng với một cảnh HDR, các vùng HDR trong ảnh chụp màn hình sẽ xuất hiện mờ hơn.
  • Độ chói SDR không được quản lý, dẫn đến nội dung SDR trong ảnh chụp màn hình xuất hiện sáng như nội dung HDR.

Nói cách khác, mọi video HDR được chụp ảnh màn hình đều được chuyển đổi thành video SDR.

Android 14

Ultra HDR gây ra một thách thức đáng kể cho việc chụp ảnh màn hình. Không giống như video, hình ảnh thường được kết xuất trong bộ đệm khung hình giao diện người dùng, có 2 ý nghĩa chính:

  • Hình ảnh không được có quy trình xử lý hình ảnh (bao gồm cả ánh xạ tông màu) khác với giao diện người dùng xung quanh.
  • Các ứng dụng chịu trách nhiệm ánh xạ tông màu dựa trên nguồn khi kết xuất giao diện người dùng.

Để giảm bớt thách thức này, có 3 cách triển khai tính năng chụp ảnh màn hình tiềm năng:

  • Giữ lại các chi tiết HDR của hình ảnh Ultra HDR, dẫn đến giao diện người dùng ứng dụng bị tối trong ảnh chụp màn hình.
  • Giữ nguyên các chi tiết trên giao diện người dùng của ứng dụng, dẫn đến việc hình ảnh Ultra HDR bị cắt.
  • Thoả hiệp bằng cách tăng độ sáng cho giao diện người dùng của ứng dụng trong khi cắt các điểm nổi bật HDR.

Android 14 triển khai phương pháp thứ ba là làm sáng giao diện người dùng của ứng dụng và cắt các điểm nổi bật HDR.

Android 15-QPR1

SurfaceFlinger có một thuật toán ánh xạ tông màu cục bộ cho ảnh chụp màn hình. Quy trình này bao gồm:

  • Chia hình ảnh đầu vào thành các hình ảnh nhỏ hơn.
  • Tính toán độ chói tối đa trong mỗi hình ảnh và loại bỏ các giá trị độ chói thấp trong mỗi phần.
  • Nội suy độ chói được tính toán thông qua việc làm mờ và lấy lại mẫu.
  • Áp dụng bộ ánh xạ tông màu Reinhard được tham số hoá cho hình ảnh đầu vào, dựa trên các giá trị độ chói được nội suy.

Thuật toán này cho thấy những điểm cải tiến đáng kể về ảnh chụp màn hình giữa Android 14 và Android 15-QPR1, như trong các ví dụ sau:

  • Ví dụ 1 là ảnh chụp màn hình của một video HDR được phủ lên trên một trang Chrome có chứa Ultra HDR. Màu sắc trên giao diện người dùng hầu hết được giữ nguyên trong chế độ triển khai mới và hình ảnh không còn bị cắt nữa.

    Android 14 Android 15-QPR1
    Ví dụ 1 trong Android 14 Ví dụ 1 trong Android 15qpr

    Hình 1. So sánh Android 14 và Android 15-QPR1 cho Ví dụ 1.

  • Ví dụ 2 là ảnh chụp màn hình của một video HDR được đặt lên trên Cài đặt cùng với các ảnh chụp màn hình tiếp theo. Trong Android 14, màu sắc của ảnh chụp màn hình sẽ tối dần. Trong Android 15-QPR1, trình ánh xạ tông màu sao chép và giữ nguyên chính xác các màu trên giao diện người dùng.

    Android 14 Android 15-QPR1
    Ví dụ 2 trong Android 14 Ví dụ 2 trong Android 15qpr

    Hình 2. So sánh Android 14 và Android 15-QPR1 cho Ví dụ 2.

Android 16

Tương tự như Ultra HDR, ảnh chụp màn hình HDR lưu trữ một gainmap trong tệp ảnh chụp màn hình để khôi phục biểu diễn HDR trong quá trình kết xuất. Tuy nhiên, không giống như Ultra HDR, ảnh chụp màn hình vẫn ở định dạng PNG để tương thích ngược với những hệ thống nhận ảnh chụp màn hình ở định dạng PNG.

Sau đây là thông tin chi tiết về việc tạo ảnh chụp màn hình:

  • Khi nội dung HDR xuất hiện trên thiết bị, ảnh chụp màn hình sẽ được tạo bằng pixel FP16.
  • Trình ánh xạ tông màu cục bộ được mô tả trong Android 15-QPR1 tạo ra một bản kết xuất SDR cơ bản 8 bit.
  • Gainmap 8 bit được tạo bằng cách kết hợp bản kết xuất cơ sở SDR với bản kết xuất HDR.
  • Bản kết xuất cơ sở SDR và gainmap được mã hoá thành một tệp PNG duy nhất.

Sau đây là thông tin chi tiết về việc mã hoá PNG:

  • Gainmap được mã hoá dưới dạng hình ảnh PNG, bao gồm một đoạn gmAP, chứa siêu dữ liệu ISO 21496-1 cho gainmap.
  • Bản kết xuất cơ bản SDR được mã hoá dưới dạng hình ảnh PNG, bao gồm một đoạn gmAP, chứa phiên bản siêu dữ liệu ISO 21496-1. Hình ảnh PNG này cũng bao gồm một đoạn gdAT, chứa toàn bộ PNG gainmap được mã hoá.

Hình sau đây cho thấy bố cục của các khối PNG:

Bố cục của các đoạn PNG

Hình 3. Bố cục của các đoạn PNG.

Với Android 16, bộ mã hoá và giải mã PNG hỗ trợ cả việc mã hoá và giải mã các tệp PNG này. Các ứng dụng có thể hiển thị một tệp PNG có gainmap theo cách tương tự như Ultra HDR.