Tại sao L * = 0 không tương ứng với màu đen trong không gian màu L * a * b *?


8

Theo hai nguồn tôi tìm thấy, trong không gian màu CIELAB LAB, giá trị L * = 0 tương ứng với màu đen. Trích dẫn Wikipedia :

Ba tọa độ của CIELAB đại diện cho độ sáng của màu (L * = 0 mang lại màu đen và L * = 100 biểu thị màu trắng khuếch tán ...)

và trích dẫn Phil Cruse :

Trục L * đại diện cho Độ sáng. Đây là chiều dọc; từ 0, không có độ sáng (tức là màu đen tuyệt đối) ...

Tuy nhiên, điều này dường như không phải là trường hợp. Ví dụ: sử dụng L * = 0, a * = 127, b * = 0 người ta thu được trong Mathicala:

FullForm[ColorConvert[LABColor[0, 1.27, 0], "RGB"]]

(*RGBColor[0.46364605275068677, 0., 0.052627307663056185]*)

... không phải màu đen.

Đây dường như không phải là một lỗi Mathicala, vì nó cũng được sao chép (ít nhất là một vài hình ghép sig, ít nhất) trong Julia bằng cách sử dụng Color.jlgói:

convert(RGB, LAB(0,127,0))

# RGB{Float64}(0.46778684693714695,0.0,0.04112312700274846)

Tương tự như vậy, trực quan hóa khối màu của Không gian màu LAB nằm trong Neat Examplesphần của trang tài liệu Mathicala cho LABColor. Đây là, với mặt L * = 0 của bề mặt hướng về phía máy ảnh:

nhập mô tả hình ảnh ở đây

Ngoại trừ khối lập phương ở góc, phần lớn các khối được quyết định không có màu đen. Vì vậy, câu hỏi của tôi là:

  • Tại sao cài đặt L * = 0 không nhất thiết phải tương ứng với màu đen trong không gian màu CIELAB? Không phải L * được cho là tương ứng với độ sáng nhận thức? Nếu vậy, tại sao một số phần của không gian con L * = 0 xuất hiện sáng hơn đáng kể so với màu đen?

Để biết giá trị của nó, tôi đã kiểm tra và có ba câu hỏi CIELAB trên Mathematica.SE và 45 trên StackOverflow.
hardmath

2
Khi bạn sẽ nhận được các giá trị RGB tuyến tính âm, thì công thức sẽ không hoạt động chính xác trừ khi khả năng đó đã được tính đến một cách rõ ràng. Nếu bạn kiểm tra chuyển đổi thành XYZ, bạn sẽ thấy Y trở thành 0 đối với L bằng 0 và bạn cũng có thể thấy rằng khi RG và B không bằng 0, bạn chỉ có thể nhận được Y bằng 0 nếu một số giá trị RGB là tiêu cực.
Đếm Iblis

@CountIblis: Cảm ơn, nhưng tôi vẫn hơi bối rối; Có phải bạn đang nói rằng lý do không xuất hiện màu đen là do màu LAB(0,127,0)không tồn tại trong không gian RGB và do đó chuyển đổi dẫn đến các lỗi số khiến nó xuất hiện không phải màu đen?
DumpsterDoustus

Vâng, đó là những gì nó sôi lên. Tốt nhất nên đọc về việc chuyển đổi từ Lab sang XYZ, sau đó từ XYZ sang RGB tuyến tính, việc chuyển đổi từ RGB tuyến tính sang sRGB chỉ là một biến đổi gamma được sửa đổi. Bạn sẽ thấy rằng từ Lab đến XYZ không có vấn đề gì, Y sẽ bằng 0 khi L bằng 0. Nhưng từ XYZ khi bạn đặt Y = 0 trong khi X và hoặc Z khác không sẽ mang lại các giá trị âm cho một hoặc nhiều thành phần RGB, rõ ràng nếu tổng số được coi là 0 khi không phải tất cả các thành phần RGB đều bằng 0, một số phải âm. Hầu hết điều này được giải thích ở đây vi.wikipedia.org/wiki/Lab_color_space
Bá tước Iblis

Có thể dễ nhìn hơn:Manipulate[ ArrayPlot@ Table[LABColor[l, a, b], {a, -1, 1, .05}, {b, -1, 1, .05}], {{l, 0}, -1, 2} ]
Szabolcs

Câu trả lời:


5

Không gian màu "RGB" là gì (sRGB?) Mà bạn đã nhập làm đích trong Mathicala, nó có dải màu giới hạn được mô tả bởi các giá trị R, G và B, thường tương tự như màn hình có thể tạo ra, máy in có thể in vv và cách nhỏ hơn Lab. Vì chỉ có số lượng giá trị giới hạn (256 trên mỗi kênh màu trong 8 bit), nên các không gian màu RGB cố gắng không lãng phí bất kỳ giá trị nào trên các màu không thể sao chép để tránh các tác dụng phụ khó chịu.

Việc chuyển đổi từ Lab sang RGB kết thúc bằng các màu gamut và chương trình sau đó đang cố gắng ánh xạ màu Lab thành màu gần nhất tồn tại trong không gian màu RGB đích, thường bằng cách cắt bất kỳ giá trị nào <0 hoặc> 1 thành 0 và 1.

Nếu bạn có xu hướng chơi với nó, đây là một công cụ tuyệt vời trên web, Máy tính màu CIE của Bruce Lindbloom, có thể được sử dụng để chuyển đổi tương tác nhanh


2

Câu trả lời khá đơn giản: Màu sắc bạn chỉ định không hợp lệ (nó không tồn tại). Xin lưu ý rằng trong nhiều mô hình màu có thể chỉ định "màu" không tồn tại.

Cụ thể bạn chỉ định L * = 0 (không có ánh sáng), nhưng bạn cũng chỉ định a * = 1.27. Làm thế nào có thể có bất kỳ thành phần màu nào nếu không có ánh sáng?

Nếu bạn kiểm tra bảng sau (từ một số tác phẩm chưa được công bố của tôi), bạn sẽ thấy rằng đối với các giá trị dưới L * = 3.14, độ bão hòa tối đa là 0 (như đối với L * = 100). Giá trị Chroma tối đa cho LCh (ab)

Bảng hiển thị độ bão hòa tối đa có thể nhận thấy cho các màu h(dọc) ở cường độ khác nhau L(ngang). Tối đa được in đậm.

Nguồn của bảng là: [Int10] Hiệp hội màu quốc tế. Đặc điểm kỹ thuật ICC.1: 2010 (Phiên bản hồ sơ 4.3.0.0), 12 năm 2010 [Trực tuyến: http://www.color.org/ đặc điểm kỹ thuật / ICC1v43_2010-12.pdf; Đứng 15. Tháng 11 năm 2011].

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.