有人知道转换代码LbgrtoLab中的“L”是什么意思吗?我在网络上搜索,找不到关于此转换代码的任何描述,当前我尝试同时使用BgrtoLab / LbgrtoLab,发现使用相同图像源的A和B通道中的值不同。似乎LBgr可以获得更好的结果。

目前,我正在使用OpenCvSharp 2.4.10。

最佳答案

即使该颜色转换代码的含义似乎没有被记录下来,也无需失望-OpenCV是一个开放源代码库,因此让我们咨询source code

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颜色空间。关于这意味着什么的更多细节可以在this answer中找到。

10-02 01:41
查看更多