颜色空间RGB与TSL的转换

        TSL是一种更加接近于描述颜色的色调和饱和度意义的空间。其是规格化RGB空间的一种变形,也是一种规格化的色度一亮度空间。其中T(Tint)维包含色彩信息,而 S(saturatinn)代表了饱和度,L(Lighthess)维即是亮度信息维。TSL色彩空间相比于RGB空间,是一种更加直观、更符合人类视觉原理的色彩空间。

       色度T、饱和度S、亮度L三个值来描述物体。转换关系如下:


          RGB->TSL转换,其中T,S取值范围为[0,1],L取值范围0-255。

opencv环境下由RGB转换到TSL空间:

代码;

IplImage* outputImage = cvLoadImage("lena.jpg", 1);
    CvScalar s;

    for (int i = 0; i < outputImage->height; i++)
    {
        for (int j = 0; j < outputImage->width; j++)

             {

            s = cvGet2D(outputImage, i, j);
            double B = s.val[0];
            double G = s.val[1];
            double R = s.val[2];

            double  r = R / (B + G + R) - 1.0 / 3;
            double  g = G / (B + G + R) - 1.0 / 3;

            s.val[1] = sqrt((9.0 / 5)*(r*r + g*g));                            //S channel
            s.val[2] = 0.229*R + 0.587*G + 0.114* B;                        //L channel

                                                                            //T channel
            if (g > 0)
                s.val[0] = (double)(atan(r / g) / (2 * PI) + 1.0 / 4);
            else if (g < 0)
                s.val[0] = (double)(atan(r / g) / (2 * PI) + 3.0 / 4);
            else
                s.val[0] = (double)0.0;

           cvSet2D(outputImage, i, j, s);

           }
    }


实例图像:

输入测试lena图像,输出:1.T、S分量取值范围[0,1];2.T、S分量取值范围为[0,255]



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值