RGB颜色空间转LAB

第一:LAB颜色空间简介
Lab是由一个亮度通道(channel)和两个颜色通道组成的。在Lab颜色空间中,每个颜色用L、a、b三个数字表示,各个分量的含义是这样的:

  • L分量用于表示像素的亮度,取值范围是[0,100],表示从纯黑到纯白
  • a表示从红色到绿色的范围,取值范围是[127,-128]
  • b表示从黄色到蓝色的范围,取值范围是[127,-128]

第二:为什么使用LAB颜色空间
因为它是一种设备无关的颜色系统,也是一种基于生理特征的颜色系统。它所描述的颜色空间就是人眼的视觉感应。

第三:从RGB到LAB

  1. 使用opencv自带的函数,在opencv里可以使用cvtColor函数来实现。
cvtColor(img1, img1, CV_BGR2Lab)

2.自定义函数进行转换,因为cvtColor函数的效率太慢,所以自己写一个函数来将RGB颜色空间转换为LAB空间。

void  rgbToLab(cv::Mat &img) {double Lab_sum = 0;double Lab_L, Lab_a, Lab_b;double X, Y, Z;double ref_X = 96.4221;double ref_Y = 100.000;double ref_Z = 82.5211;int rowNumber = img.rows;                           //获取图像矩阵行数int colNumber = img.cols*img.channels();    //for (int row = 0; row < rowNumber; row++) {uchar* pixelPtr = img.ptr<uchar>(row);for (int col = 0; col < colNumber; col++) {double b = pixelPtr[col] / 255.000;double g = pixelPtr[col +1] / 255.000;double r = pixelPtr[col +2] / 255.000;if (r > 0.04045)r = pow((r + 0.055) / 1.055, 2.4);elser = r / 12.92;if (g > 0.04045)g = pow((g + 0.055) / 1.055, 2.4);elseg = g / 12.92;if (b > 0.04045)b = pow((b + 0.055) / 1.055, 2.4);elseb = b / 12.92;X = r * 0.436052025 + g * 0.385081593 + b * 0.143087414;Y = r * 0.222491598 + g * 0.716886060 + b * 0.060621486;Z = r * 0.013929122 + g * 0.097097002 + b * 0.714185470;X = X * 100.000;Y = Y * 100.000;Z = Z * 100.000;X = X / ref_X;Y = Y / ref_Y;Z = Z / ref_Z;if (X > 0.008856)X = pow(X, 1 / 3.000);elseX = (7.787 * X) + (16 / 116.000);if (Y > 0.008856)Y = pow(Y, 1 / 3.000);elseY = (7.787 * Y) + (16 / 116.000);if (Z > 0.008856)Z = pow(Z, 1 / 3.000);elseZ = (7.787 * Z) + (16 / 116.000);Lab_L = (116.000 * Y) - 16.000;Lab_a = 500.000 * (X - Y);Lab_b = 200.000 * (Y - Z);Lab_L = Lab_L * 255 / 100;Lab_a = Lab_a + 128;Lab_b = Lab_b + 128;pixelPtr[col] = Lab_L;pixelPtr[++col] = Lab_a;pixelPtr[++col] = Lab_b;}}
}

因为rgb颜色空间不能直接转化为lab空间,所以需要通过公式先将其转化为xyz颜色空间,再转化为lab。通过指针去遍历图像中的每个像素点的值,再通过公式转换。可以达到同样的效果,并且指针遍历的方式效率很高。值得注意的是,opencv的一个像素的三通道值不是[0],[1],[2]对应r,g,b而是对应为b,g,r的值。

RGB颜色空间转LAB相关推荐

  1. RGB颜色空间与Lab颜色空间区别与联系(附转换代码)

    RGB颜色空间 RGB颜色是红色(Red).绿色(Green)和蓝色(Blue)三基色的字母缩写.RGB色彩模式是通过三种基本颜色的不同程度的迭加来产生各种各样的不同颜色.这个标准能够涵盖人类视力所能 ...

  2. 颜色空间直方图matlab,使用Matlab绘制图像的rgb颜色空间和Lab颜色空间分量图和分量直方图 | 学步园...

    %author sagittariusboy All right reserved 2013年7月28日 14:58:11 org = imread('laaa.jpg'); %org = imrea ...

  3. matlab中lab颜色空间,使用Matlab绘制图像的rgb颜色空间和Lab颜色空间分量图和分量直方图...

    %author sagittariusboy All right reserved 2013年7月28日 14:58:11 org = imread('laaa.jpg'); %org = imrea ...

  4. MATLAB 将RGB颜色空间转为HSI颜色空间、LAB颜色空间 原理及程序

    一张彩色图像是由R.G.B三个通道组成,所以首先需要将彩色图像分为三个通道的图像. 以下是对猫图进行单通道提取得到的图像. HSI颜色空间 HSI[Hue-Saturation-Intensity(L ...

  5. RGB CMYK HSV LAB

    颜色空间(彩色模型.色彩空间. 彩色系统etc)是对色彩的一种描述方式,定义有很多种,区别在于面向不同的应用背景. RGB.CMY.HSV.LAB几种颜色空间编码都是三位的 RGB RGB色彩模式是工 ...

  6. 精通人脸识别10:RGB颜色空间

    精通人脸识别10:RGB颜色空间 让我们加载同一个立方体的2个图像. 它将默认以BGR格式加载. 我们可以使用OpenCV函数cvtColor()在不同的颜色空间之间进行转换,如后面所示. brigh ...

  7. 色彩空间转换(RGB空间与Lab空间)

    颜色迁移是计算机视觉领域的一个很有趣的问题,它实际上要我们解决这么一个问题:基于图像A和图像B,合成一幅新的图像C,使其同时具有A的颜色和B的形状等遗传信息,即图像B在不改变它自身所表达的形状信息的情 ...

  8. 使用Opencv将RGB颜色空间转换到HSV颜色空间/灰度图

    一. 使用cvCvtColor函数将RGB颜色空间转换到HSV颜色空间 所需函数: 1.cvCvtColor 函数功能:颜色空间转换 函数原型: void cvCvtColor( const CvAr ...

  9. matlab hsi颜色,RGB 颜色空间转 HSI 颜色空间的matlab程序实现

    RGB 颜色空间转 HSI 颜色空间的matlab程序实现 程序实现的时候注意把RGB像素值归一化就是了,然后千千万万要根据公式来,不能大意,我之前就有theta为复数的情况,是sqrt对负数进行运算 ...

最新文章

  1. docker的网络架构配置
  2. 机械制图手册_42条机械制图基础常识,带徒师傅必备!
  3. 有关线程的相关知识(下)
  4. optee中关于异常向量表、中断等的深入思考
  5. LUA upvalue使用陷阱一例
  6. 如何高效维持网络长连接
  7. mybatis 直接执行sql 【我】
  8. 浙江省二级计算机vfp,浙江省计算机2级vfp程序调试真题集.doc
  9. 玩转SpringCloud Security OAuth2资源授权动态权限扩展
  10. console连接h3c s5500_h3c console连接方法
  11. envi反演水质参数_基于大气校正法的Landsat 8 TIRS地表温度反演
  12. 大智慧服务器修改,任意版本大智慧,帮您免费实现全推行情
  13. (一) MySQL学习笔记:MySQL安装图解
  14. Markdown 模板
  15. Flash助手推荐广告删除方法
  16. Android短信拦截代码
  17. 关于条形码的属性与一些自定义操作
  18. 1.13 新概念 否定疑问句 半否定 全否定
  19. [Windows] 获取设备唯一标识
  20. Ubuntu(WSL)安装3b1b的manim

热门文章

  1. linux文件中插入多行技巧
  2. 手把手教你对接阿里云短信服务
  3. [日常笔记] 2: 本地视频播放器 MPV
  4. 221. k8s_v1.15addons插件部署
  5. r语言boxcox异方差_基于R语言进行Box-Cox变换
  6. 【HaaS Python硬件积木】土壤湿度传感器
  7. 2022年天梯赛题目记录
  8. iPhone12与mate40,你pick哪一款?
  9. 【必拿下系列】106. 从中序与后序遍历序列构造二叉树105从前序与中序遍历序列构造二叉树
  10. 恒源云(GPUSHARE)_CV训练时容易忽视的数据标签问题