转载http://blog.sina.com.cn/s/blog_7eb23c070100y6dh.html
同RGB颜色空间相比,Lab是一种不常用的色彩空间。它是在1931年国际照明委员会(CIE)制定的颜色度量国际标准的基础上建立起来的。1976年,经修改后被正式命名为CIELab。它是一种设备无关的颜色系统,也是一种基于生理特征的颜色系统。这也就意味着,它是用数字化的方法来描述人的视觉感应。Lab颜色空间中的L分量用于表示像素的亮度,取值范围是[0,100],表示从纯黑到纯白;a表示从红色到绿色的范围,取值范围是[127,-128];b表示从黄色到蓝色的范围,取值范围是[127,-128]。

色差计算公式:
△E*=[(△L*)2+(△a*)2。+(△b*)2]1/2。
△L=L样品-L标准(明度差异)
△a=a样品-a标准(红/绿差异)
△b=b样品-b标准(黄/蓝差异)
色差是用数值方式表示的两种颜色给人色彩感觉上的差别。两种采用L
a*b *色空间表示的颜色,色差即是两种颜色所在的坐标点在空间上的距离,由下式计算: 色差的单位用NBS表示,△E盎值为1时称为1NBS,1个NBS大约相当于视觉识别阈值的5倍。
值的大小即两种颜色在视觉感受上的相差大小,色差值和视觉感受上大约有这样的对应关系:

 0.0—0.5(微小色差),感觉极微; 0.5—1.5(小色差),感觉轻微; l.5~3(较小色差),感觉明显; 3—6(较大色差)感觉很明显; 6以上(大色差)感觉强烈。

◆色差计工作原理
自动比较样板与被检品之间的颜色差异,输出CIE_Lab–三组数据和比色后的△E、△L、△a、△b四组色差数据。
△E总色差的大小:
⊙ △L+表示偏白,△L–表示偏黑
⊙ △a+表示偏红,△a–表示偏绿
⊙ △b+表示偏黄,△b–表示偏蓝

http://storytelling-system-in-dsp.googlecode.com/svn-history/r37/trunk/HSV_Control_Image/main.c

//Reference: Mr.Mark Ruzon

// Convert between RGB and CIE-Lab color spaces
// Uses ITU-R recommendation BT.709 with D65 as reference white.
// Yossi Rubner
// Last modified 2/24/98
//=================================================================== LAB_GEL Function
void RGB2Lab(unsigned char R, unsigned char G, unsigned char B,
int *L, int *a, int *b)
{
float X, Y, Z, fX, fY, fZ;

X = 0.412453R + 0.357580G + 0.180423B;
Y = 0.212671
R + 0.715160G + 0.072169B;
Z = 0.019334R + 0.119193G + 0.950227*B;

X /= (255 * 0.950456);
Y /= 255;
Z /= (255 * 1.088754);

if (Y > 0.008856)
{
fY = pow(Y, 1.0/3.0);
L = (int)(116.0fY - 16.0 + 0.5);
}
else
{
fY = 7.787*Y + 16.0/116.0;
L = (int)(903.3Y + 0.5);
}

if (X > 0.008856)
fX = pow(X, 1.0/3.0);
else
fX = 7.787*X + 16.0/116.0;

if (Z > 0.008856)
fZ = pow(Z, 1.0/3.0);
else
fZ = 7.787*Z + 16.0/116.0;

a = (int)(500.0(fX - fY) + 0.5);
b = (int)(200.0(fY - fZ) + 0.5);

//printf(“RGB=(%d,%d,%d) ==> Lab(%d,%d,%d)\n”,R,G,B,*L,*a,*b);
}

void Lab2RGB(int L, int a, int b,
unsigned char *R, unsigned char *G, unsigned char *B)
{
float X, Y, Z, fX, fY, fZ;
int RR, GG, BB;

fY = pow((L + 16.0) / 116.0, 3.0);
if (fY < 0.008856)
fY = L / 903.3;
Y = fY;

if (fY > 0.008856)
fY = pow(fY, 1.0/3.0);
else
fY = 7.787 * fY + 16.0/116.0;

fX = a / 500.0 + fY;
if (fX > 0.206893)
X = pow(fX, 3.0);
else
X = (fX - 16.0/116.0) / 7.787;

fZ = fY - b /200.0;
if (fZ > 0.206893)
Z = pow(fZ, 3.0);
else
Z = (fZ - 16.0/116.0) / 7.787;

X *= (0.950456 * 255);
Y *= 255;
Z *= (1.088754 * 255);

RR = (int)(3.240479X - 1.537150Y - 0.498535Z + 0.5);
GG = (int)(-0.969256
X + 1.875992Y + 0.041556Z + 0.5);
BB = (int)(0.055648X - 0.204043Y + 1.057311*Z + 0.5);

*R = (unsigned char)(RR < 0 ? 0 : RR > 255 ? 255 : RR);
*G = (unsigned char)(GG < 0 ? 0 : GG > 255 ? 255 : GG);
*B = (unsigned char)(BB < 0 ? 0 : BB > 255 ? 255 : BB);

//printf(“Lab=(%f,%f,%f) ==> RGB(%f,%f,%f)\n”,L,a,b,*R,*G,*B);
}

//
Cindy备注:此代码由于Lab采用int型,RGB2Lab和Lab2RGB的结果略有偏差,建议Lab采用float型。

L*a*b 颜色空间相关推荐

  1. OpenCV最经典的3种颜色空间(cv2.cvtColor)及互相转换

    OpenCV最经典的3种颜色空间(cv2.cvtColor)及互相转换 1. 效果图 2. 原理 2.1 照明条件的重要性 2.2 OpenCV 中的3种颜色空间/模型 2.3 颜色空间的主要用途 3 ...

  2. OpenCV颜色空间——Luv颜色空间

    Luv颜色空间,三个值的取值范围: ,, 调节L分量: #include<opencv2/core.hpp> #include<opencv2/imgproc.hpp> #in ...

  3. OpenCV颜色空间——Lab颜色空间

    对于Lab颜色空间,OpenCV同样实现了BGR和Lab之间的转换,如果BGR的值在[0,1]之间,那么转换为Lab的取值范围为: ,, 通过以下程序调节L分量,观察其效果: #include< ...

  4. OpenCV—python 颜色空间(RGB,HSV,Lab)与 颜色直方图

    文章目录 一.图像分类的过程 二.开发环境:(安装)OpenCV 计算机视觉库 三.颜色空间(颜色模型:RGB,HSV,Lab) 3.1 opencv--HSV颜色空间 四.OpenCV处理图片 4. ...

  5. CIE颜色空间LCh、Lab、XYZ-sRGB介绍与转换关系(包含源码)

    项目场景: 提示:在颜色科学中,LCh和Lab是比较常用的 LCh是由MATLAB计算出的数据,但是我所需要在Qt的q3dsurface绘制出这个切面,看了Qt官方Examples,墨西哥草帽算法的3 ...

  6. 使用Python,OpenCV实现图像之间超快速的颜色转移

    图像之间超快速的颜色转移 1. 效果图 2. 步骤 3. 改进算法的方法 4. 源码 参考 目标:源图像与目标图像,转移源图像的色彩空间到目标图像,生成一张新的图像: 有关如何在两个图像之间转移颜色, ...

  7. 使用Python,OpenCV确定对象的颜色

    1. 如何利用Python.OpenCV计算轮廓的中心 2. Python,OpenCV应用轮廓逼近算法,检测对象的形状,如三角形,正方形,矩形,五边形,圆. 这一节学习应用 L * a * b * ...

  8. 机器视觉中彩色成像必须考虑的十个问题

    来源:Imagination Tech 在为你的产品开发最适合的机器视觉系统时,需要考虑很多因素,以下列出开发过程中需要考虑的一些问题: 颜色准确性/差异化 首先要考虑的是应用程序所需的颜色精度和差异 ...

  9. 图像颜色迁移《color transfer between images》

    前言 前段时间,在深度学习领域不是有个比较火的方向叫风格迁移的嘛,对于我这种不喜欢深度学习那种不稳定结果的人来说,还是想看看传统图像处理领域有什么类似的技术,发现了一个颜色迁移的算法,很久前的论文了. ...

最新文章

  1. SAP RETAIL 为物料组指派Merchandise Hierarchy Level Code
  2. 树莓派上搭建svn服务器
  3. Windows 环境下载安装Docker
  4. ios 容错处理JKDataHelper和AvoidCrash
  5. 定义和使用含有泛型的方法
  6. 我的领域驱动设计运用实例 - 领域啊领域
  7. html画特殊图形(待修改)
  8. 011235813用java写出来_【JAVA】关于在运行后控制台显示的一些功能问题,请吧友帮我解答...
  9. Apache Tomcat部署多个项目
  10. hadoop eclipse插件
  11. 网页设计制作CSS实现隔行换色两种方法
  12. 千脑——您的在线电脑
  13. AC控制器和无线路由器的区别
  14. 京东在线客服话术汇总!
  15. 用来打发时间的EUserv
  16. linux dd创建大文件模拟磁盘不足监控
  17. MySql定期备份数据到历史表的解决方案
  18. Cadence Orcad Capture元件位号自动编号的2种方法图文教程及视频演示
  19. destoon模板安装方法
  20. vi模式下的几种常用的保存文件并退出命令

热门文章

  1. 模块化UPS:卖点?买点?
  2. 图解TCP/IP——第三四章笔记
  3. 计算机系新年寄语,经典新年寄语(精选50句)
  4. 五一的旅游照如何消除路人,急,在线等
  5. fiddler 抓ios app包
  6. 苹果计算机删除可怎么恢复,苹果电脑怎么恢复垃圾桶已删除文件-万兴恢复专家...
  7. 对w10进行系统软件测试,W10专业版电脑显卡故障检测软件的使用方法
  8. 一些经典但惊人的知识
  9. 文件下载时直接对流进行zip加密压缩
  10. 黑龙江省二计算机考试教程,黑龙江省2019下半年计算机二级考试教程:VB语言程序设计...