(完整word版)用VB编写的RGB转LAB源码(附色卡对照表)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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值,