(完整word版)用VB编写的RGB转LAB源码(附色卡对照表)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

RGB转Lab的VB代码

在网上搜索了很久,也没有看到用VB写的RGB转Lab的代码,现根据网上通用的转换算法改写成VB代码(转换后与CIE-Lab的标准色卡有差异,附色卡Lab与RGB对照表),希望能抛砖引玉。代码如下:

’RGB转Lab

Sub RGB_Lab(R1, G1, B1 As Long, L, A, B As Currency)’ R1,G1,B1为颜色三分量值,先赋值Dim R2, G2, B2, X1, Y1, Z1 As Currency

R2 = R1 / 255

G2 = G1 / 255

B2 = B1 / 255

'If R2 > 0.04045 Then R2 = ((R2 + 0.055) / 1.055) ^ 2.4 Else R2 = R2 / 12.92

'If G2 > 0.04045 Then G2 = ((G2 + 0.055) / 1.055) ^ 2.4 Else G2 = G2 / 12.92

'If B2 > 0.04045 Then B2 = ((B2 + 0.055) / 1.055) ^ 2.4 Else B2 = B2 / 12.92

R2 = R2 / 12.92

G2 = G2 / 12.92

B2 = B2 / 12.92

X1 = R2 * 0.412453 + G2 * 0.35758 + B2 * 0.180423

Y1 = R2 * 0.212671 + G2 * 0.71516 + B2 * 0.072169

Z1 = R2 * 0.019334 + G2 * 0.119193 + B2 * 0.950227

X1 = X1 / 0.95047

Y1 = Y1 / 1

Z1 = Z1 / 1.08883

If Y1 > 0.008856 Then L = 116 * (Y1 ^ (1 / 3)) - 16 Else L = 903.3 * Y1

If X1 > 0.008856 Then X1 = X1 ^ (1 / 3) Else X1 = 7.787 * X1 + 0.137931

If Y1 > 0.008856 Then Y1 = Y1 ^ (1 / 3) Else Y1 = 7.787 * Y1 + 0.137931

If Z1 > 0.008856 Then Z1 = Z1 ^ (1 / 3) Else Z1 = 7.787 * Z1 + 0.137931

A = 500 * (X1 - Y1)

B = 200 * (Y1 - Z1)

End Sub

主程序调用RGB_Lab 后,返回Lab值,

相关文档
最新文档