6

Tôi đang làm việc trên công cụ trực quan hóa dữ liệu sử dụng OpenGL và không gian màu LAB là không gian màu dễ hiểu nhất để hiển thị dữ liệu tôi đang xử lý (3 trục dữ liệu được ánh xạ tới 3 trục của không gian màu) . Có một thuật toán nhanh (ví dụ: không có số nguyên lũy thừa, phù hợp để thực thi trong trình đổ bóng) để chuyển đổi gần đúng giá trị LAB sang và từ giá trị RGB không?Thuật toán gần đúng nhanh cho chuyển đổi RGB/LAB?

+0

Tôi hy vọng có, nhưng tôi nghi ngờ nó tồn tại. Phần gốc khối lập phương sẽ khó mô phỏng. Có thể sử dụng nội suy tuyến tính giữa một số lượng nhỏ các điểm tương đương? –

+0

Vâng, đây là câu hỏi con: là các giá trị được chỉ định trong ví dụ: OpenGL sao cho các giá trị RGB là tuyến tính (gamma được áp dụng tự động), hay không (bù trừ gamma rõ ràng)? Nếu chúng là tuyến tính, điều đó có nghĩa là bước XYZ-> RGB chỉ yêu cầu phép nhân ma trận, đúng không? –

Trả lời

0

Nếu tính toán chuyển đổi thực tế trong trình đổ bóng quá phức tạp/tốn kém, bạn luôn có thể sử dụng bảng tra cứu. Vì cả hai không gian màu đều có 3 thành phần, bạn có thể sử dụng kết cấu 3D RGB để biểu diễn bảng tra cứu.

Sử dụng kết cấu 3D có thể nghe có vẻ như rất nhiều chi phí. Vì 8 bit/thành phần thường được sử dụng để đại diện cho các màu trong OpenGL, bạn sẽ cần một kết cấu 3D 256x256x256. Tại 4 byte/texel, đó là một kết cấu 64 MByte, mà không phải là thái quá, nhưng rất đáng kể.

Tuy nhiên, tùy thuộc vào mức độ hiệu quả của các giá trị trong bảng dịch, bạn có thể thoát ra với độ phân giải thấp hơn. Hãy nhớ rằng lấy mẫu kết cấu sử dụng nội suy tuyến tính. Nếu nội suy tuyến tính piecewise đủ tốt với độ phân giải cơ bản nhất định của bảng tra cứu, bạn có thể giảm đáng kể kích thước.

Nếu bạn đi theo hướng này, và không đủ khả năng để sử dụng 64 MBytes cho LUT, bạn sẽ phải chơi với kích thước của LUT, và làm cho một kích thước/hiệu suất có thể so với chất lượng cân bằng.

+1

Tôi không chắc chắn tôi theo dõi toán học của bạn. Nếu bạn có 8 * bit * cho mỗi thành phần, bảng của bạn có cần phải là 256x256x256 không? –

+0

@MarkRansom Argh, vâng, tôi có. Nghe có vẻ hơi quá tốt là đúng. –

+0

@MarkRansom Ok, đã cập nhật. Có thể trông hơi kém hấp dẫn bây giờ, nhưng ít nhất tôi hy vọng nó là chính xác. Cảm ơn bạn đã chỉ ra điều này. –

Các vấn đề liên quan