近期想起颜色相似度比较的问题,找到几个公式,发现大家都推荐用 Lab 颜色空间来做,也找到了简化的直接用 RGB 颜色计算出的加权欧式距离公式。

因为原公式是直接用 Lab 颜色计算的:

ΔE=( ΔL^2 + ΔA^2 + ΔB^2 ) ^ (1/2)  ’ΔE 表示色差,ΔL/ΔA/Δb分别表示两个颜色之间在不同分量的差值。

因此想看看原公式与加权欧式距离公式之间的计算结果差距,于是想找个 RGB 转 Lab 的算法看看,结果没找到靠谱的 VB 代码,找到了些 C 的自己改成 VB 的来用,大多也不靠谱,结果都和 photoshop 对不上,最终改出来结果靠谱的是:https://blog.csdn.net/lz0499/article/details/77345166/

话不多说,上代码:

'VB 版 RGB 转 Lab 源代码
Public Function RGB2Lab(R1, G1, B1, LAB)  ' R1,G1,B1为颜色三分量值,LAB 为需要输出的 Lab分量字符Dim R2, G2, B2, X1, Y1, Z1, L, p1_3, p16_116p1_3 = 1 / 3p16_116 = 16 / 116'----------------gammaR2 = R1 / 255G2 = G1 / 255B2 = B1 / 255If R2 > 0.04045 Then R2 = ((R2 + 0.055) / 1.055) ^ 2.4 Else R2 = R2 / 12.92If G2 > 0.04045 Then G2 = ((G2 + 0.055) / 1.055) ^ 2.4 Else G2 = G2 / 12.92If B2 > 0.04045 Then B2 = ((B2 + 0.055) / 1.055) ^ 2.4 Else B2 = B2 / 12.92'----------------RGB2XYZX1 = R2 * 0.4124564 + G2 * 0.3575761 + B2 * 0.1804375Y1 = R2 * 0.2126729 + G2 * 0.7151522 + B2 * 0.072175Z1 = R2 * 0.0193339 + G2 * 0.119192 + B2 * 0.9503041'----------------XYZ2LabX1 = X1 / 0.950456  'XnY1 = Y1 / 1         'YnZ1 = Z1 / 1.088754  'ZnIf X1 > 0.008856 Then X1 = X1 ^ p1_3 Else X1 = 7.787 * X1 + p16_116If Y1 > 0.008856 Then Y1 = Y1 ^ p1_3 Else Y1 = 7.787 * Y1 + p16_116If Z1 > 0.008856 Then Z1 = Z1 ^ p1_3 Else Z1 = 7.787 * Z1 + p16_116Select Case LABCase "L"L = 116 * Y1 - 16If L > 0 Then RGB2Lab = L Else RGB2Lab = 0Case "a"RGB2Lab = 500 * (X1 - Y1)Case "b"RGB2Lab = 200 * (Y1 - Z1)End SelectRGB2Lab = Round(RGB2Lab, 0)
End Function

结果预览:

从计算结果来看,已经很靠谱了。

VB 版 RGB 转 Lab 源代码相关推荐

  1. RGB与Lab颜色空间互相转换

    RGB与Lab颜色空间互相转换 1.Lab颜色空间 同RGB颜色空间相比(见博客<光与色的故事--颜色空间浅析>),Lab是一种不常用的色彩空间.它是在1931年国际照明委员会(CIE)制 ...

  2. RGB、Lab等颜色空间的区别

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

  3. RGB、Lab、YUV、HSI、HSV等颜色空间的区别

    文章主要来源于百度文库:http://wenku.baidu.com/view/f38c04e69b89680203d82513.html RGB颜色空间 RGB(red,green,blue)颜色空 ...

  4. RGB与Lab颜色空间互相转换 持续更新中

    RGB与Lab颜色空间互相转换 1.Lab颜色空间 同RGB颜色空间相比(见博客<光与色的故事–颜色空间浅析>),Lab是一种不常用的色彩空间.它是在1931年国际照明委员会(CIE)制定 ...

  5. Python实现RGB和Lab颜色空间互转

    Python实现RGB和Lab颜色空间互转 https://github.com/rubund/debian-home-assistant/blob/1a3e8f7e4b9ddec60a4380e14 ...

  6. 无声息格式化磁盘的API,VB版

    无声息格式化磁盘的API,VB版,使用方法: doFormat("E:") 曾经用这API做了个小恶软,专格式化U盘,代码在这里就不予公开了~~~ Public Declare F ...

  7. 从RGB到Lab色彩空间的转换

    最近一直在学习绘制RGB,HSV,Lab色彩空间的直方图,其中也涉及到互相转换的知识,这是网上看到的介绍的. ============================================= ...

  8. VB版双语对照制作助手的设计与实现

    VB版双语对照制作助手的设计与实现 摘要: 双语对照文本对于外语学习大有裨益:外语学习软件中词库与句库的导入文件需要规范的格式,即一行源语配一行目标语:影视中需要双语字幕:基于这些需求,本文采用VB开 ...

  9. VB版双语对照制作助手

    VB版双语对照制作助手 一.功能概述 该软件用于规范外语学习软件中词库与句库的导入文件.运行本软件,可利用[打开源语文件]和[打开目标语文件]按钮,也可直接利用复制粘贴操作来填充源语文本框和目标语文本 ...

最新文章

  1. slice_Spring Boot Web Slice测试–示例
  2. OSGI和Spring动态模块–简单的Hello World
  3. mx250显卡天梯图_笔记本电脑显卡分析(天梯图)
  4. linux ls 目录结构,linux 系统目录结构 ls命令 文件类型 alias命令
  5. 魅族m8开发 step by step(1)(让程序跑起来)
  6. JavaWeb—如何判断用户使用的是什么浏览器
  7. Visio绘图记录(1)
  8. 测试开发面试题及面试经验
  9. 神经网络的反向传播算法中矩阵的求导方法(矩阵求导总结)
  10. 《一梦江湖》(原楚留香)游戏拆解分析(一)
  11. selenium 定位一组元素
  12. Farkas'Lemma 和 S-Lemma
  13. 将应用程序设置可信任(在win10操作系统)
  14. 统计字符出现的次数(输出由多到少)
  15. 图解unicode、utf8和utf8mb4
  16. i9 12900hk参数 i9 12900HK功耗
  17. 【蓝桥杯集训100题】scratch绘制蜘蛛网 蓝桥杯scratch比赛专项预测编程题 模拟练习题第05题
  18. 计算机软考落户广州,想要在2020年入户广州,考这个证就够了!
  19. 预约挂号医院管理项目----service_hosp模块—医院管理
  20. OpenGov(一):什么是Polkadot Gov2

热门文章

  1. AIOps——从数字化运维、智能化运维到智慧化运营
  2. 可扩展机器学习——线性回归(linear Regression)
  3. 工程实践:如何给变量取一个好的名字
  4. 电能管理系统功能界面展示—安科瑞 孙斌
  5. 基于adversarial-robustness-toolbox(ART)包进行AI对抗攻击ZOO攻击方法报错
  6. 如何使用Createjs来编写HTML5游戏(六)完成一个简单的打飞机游戏(上)
  7. 神经猫是用什么语言写的,HTML5改变世界
  8. 如何加固奇迹mu服务端SQL安全设置并隐藏相关注册系统sa密码
  9. Flutter自定义控件第一式,炫酷“蛛网”控件
  10. 数据库Mysql自增锁问题原来可以这么解决