OpencvSharp LbgrtoLab
Кто-нибудь знает, что означает "L" в коде преобразования LbgrtoLab? Я искал в Интернете и не могу найти описание этого кода преобразования, в настоящее время я пытался использовать оба BgrtoLab / LbgrtoLab, я обнаружил, что значения в каналах A и B различаются при использовании одного и того же источника изображения. Кажется, что LBgr может получить лучший результат.
В настоящее время я использую OpenCvSharp 2.4.10.
1 ответ
Несмотря на то, что значение этого кода преобразования цвета не задокументировано, не нужно отчаиваться - OpenCV - это библиотека с открытым исходным кодом, поэтому давайте посмотрим на исходный код.
case COLOR_BGR2Lab: case COLOR_RGB2Lab: case COLOR_LBGR2Lab: case COLOR_LRGB2Lab:
case COLOR_BGR2Luv: case COLOR_RGB2Luv: case COLOR_LBGR2Luv: case COLOR_LRGB2Luv:
// ....
bool srgb = code == COLOR_BGR2Lab || code == COLOR_RGB2Lab
|| code == COLOR_RGB2Luv || code == COLOR_BGR2Luv;
// ....
if (srgb && usRGBGammaTab.empty())
Mat(1, 256, CV_16UC1, sRGBGammaTab_b).copyTo(usRGBGammaTab);
else if (ulinearGammaTab.empty())
Mat(1, 256, CV_16UC1, linearGammaTab_b).copyTo(ulinearGammaTab);
// ....
Это говорит о том, что префикс L
предназначен для различения нелинейных (sRGB) и линейных цветовых пространств RGB. Более подробную информацию о том, что это значит, можно найти в этом ответе.