2015-04-24 12 views
6

Tôi tự hỏi liệu OpenCV có chức năng xử lý các phi tuyến tính trong không gian màu sRGB hay không.OpenCV có chức năng xử lý phi tuyến tính trong không gian màu sRGB không?

Giả sử tôi muốn chuyển đổi hình ảnh JPEG từ không gian màu sRGB sang không gian màu XYZ. Theo quy định trong điều này Wiki page, một trong những cần phải đầu tiên hoàn tác các phi tuyến để chuyển đổi sang không gian RGB tuyến tính, và sau đó nhân với ma trận biến đổi màu 3x3. Tuy nhiên, tôi không thể tìm thấy bất kỳ cuộc thảo luận nào như vậy trong tài liệu cvtColor. Tôi đã bỏ lỡ một cái gì đó?

Cảm ơn rất nhiều trước!

Trả lời

4

Nó không được nêu rõ trong tài liệu, vì vậy bạn không bỏ sót bất cứ điều gì, nhưng OpenCV làm không thực hiện hiệu chỉnh gamma trong chuyển đổi màu RGB2XYZ/BGR2XYZ. Bạn có thể xác nhận điều này bằng cách nhìn vào mã nguồn cho cvtColor trong

<OpenCV_dir>/modules/imgproc/src/color.cpp

Nếu bạn nhìn vào RGB <-> XYZ phần bạn sẽ thấy rằng các giá trị RGB đầu vào chỉ đơn giản là nhân với ma trận hệ số.

Tôi cũng không tìm thấy bất kỳ phương pháp hiện có nào để thực hiện chỉnh sửa gamma trên hình ảnh RGB.

Điều thú vị là một chuyển đổi tùy chỉnh RGB -> XYZ được thực hiện dưới dạng bước sơ bộ để chuyển đổi thành cả L*a*b*L*u*v* và trong cả hai trường hợp, nó thực hiện hiệu chỉnh gamma.

Rất tiếc, không thể truy cập vào mã này từ mã RGB2XYZ nhưng bạn có thể sử dụng lại mã đó trong mã của riêng mình. Tôi cũng đã xem một số mẫu mã trên web, hầu hết là sử dụng các bảng tra cứu cho hình ảnh độ sâu CV_8U.

+0

Cảm ơn bạn rất nhiều vì đã trả lời, @beaker! Điều ngạc nhiên là OpenCV không đưa chúng vào tài liệu và có sự chuyển đổi không phù hợp với 'RGB -> XYZ' và' RGB -> L * a * b * '. Tôi cũng đã gửi [yêu cầu tính năng] (http://code.opencv.org/issues/4293) trên trang web chính thức và hy vọng nó có thể được khắc phục trong tương lai. –

+0

Bạn đã nhận được câu trả lời cho vấn đề này chưa? Bởi vì tôi đang đối mặt với cùng một vấn đề. – Sanchit

+1

@Sanchit Vẫn không có hiệu chỉnh gamma tích hợp cho RGB2XYZ kể từ 3.1.0 (xem http://docs.opencv.org/trunk/de/d25/imgproc_color_conversions.html#color_convert_rgb_xyz). Bạn sẽ phải tự viết mã, tôi sợ. – beaker

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