2015-04-24 13 views
6

OpenCV'nin sRGB renk alanındaki doğrusal olmayanları işlemek için işlevleri olup olmadığını merak ediyorum. OpenCV, sRGB renk alanında doğrusal olmayanları işlemek için işlevlere sahip mi?

XYZ renk uzaya sRGB renk uzaydan bir JPEG resmi dönüştürmek istediğini farz edelim. Bu Wiki page'da belirtildiği gibi, önce doğrusal RGB boşluğuna dönüştürmek için doğrusal olmayanları geri almalı ve daha sonra 3x3 renk dönüştürme matrisi ile çarpılmalıdır. Ancak, cvtColor belgelerinde bu tür tartışmalar bulamadım. Bir şey mi kaçırdım?

Çok önceden teşekkürler!

cevap

4

Açıkça belgelerinde belirtildiği değil, bu yüzden çok şey kaçırmıyorsun ama OpenCV değil onun RGB2XYZ/BGR2XYZ renk dönüşümleri gama düzeltmesi performans gösteriyor. Eğer giriş RGB değerleri basitçe katsayı matrisinin ile çarpılır ve göreceğiniz RGB <-> XYZ kısmına bakarsanız Sen

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

yılında cvtColor için kaynak koduna bakarak bunu onaylayabilir.

Ben de bir RGB görüntü üzerinde gama düzeltmesi gerçekleştirmek için varolan herhangi bir yöntem bulamadım.

İlginç bir şekilde, özel bir RGB -> XYZ dönüşüm L*a*b* ve L*u*v* hem dönüştürmek için bir ön adım olarak yapılır, ve her iki durumda da gama düzeltmesi uygular.

Maalesef bu RGB2XYZ kodundan erişilebilir değil, ancak kendi kodunda yeniden mümkün olabilir. Web'de, çoğunlukla CV_8U derinlik görüntüleri için arama tabloları kullanarak birkaç kod örneği gördüm.

+0

Cevabınız için çok teşekkürler, Beaker! OpenCV'nin bunları belgelere koymaması ve “RGB -> XYZ” ve “RGB -> L * a * b *' için tutarsız bir dönüşümü olması şaşırtıcıdır. Resmi web sitesinde bir [özellik talebi] (http://code.opencv.org/issues/4293) sundum ve gelecekte düzeltilebileceğini umuyoruz. –

+0

Bu sorun için zaten bir yanıt aldınız mı? Çünkü aynı problemle karşı karşıyayım. – Sanchit

+1

hala var @Sanchit hiçbir yerleşik 3.1.0 olarak RGB2XYZ için gama düzeltmesi (http://docs.opencv.org/trunk/de/d25/imgproc_color_conversions.html#color_convert_rgb_xyz bakınız). Korkarım ki kendi kodunu yazman gerekecek. – beaker