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. Более подробную информацию о том, что это значит, можно найти в этом ответе.

Другие вопросы по тегам