一、两个三维坐标的距离
r3=(r1, r2)/256
g3=(g1, g2)/256
b3=(b1, b2)/256
diff=蘲3 r3 + g3 g3 + b3 * b3)
值越大,相似度越小,值越小,相似度越大!也可以把上面用1减去,保持值和相似度一致
百分比就是上面得到的值除以那个值的极限最大值.sqrt (r3 r3 + g3 g3 + b3 b3)/?255 255 + 255 255 + 255 255)
二,VB参考代码
<代码>私有函数最小(ParamArray Vals ()) 昏暗的整数n, MinVal 在错误的简历 MinVal=Vals (0) n=1 UBound (val) 如果Vals (n) & lt;MinVal然后MinVal=Vals (n) 下一个n 最?MinVal 结束函数 私有函数最大值(ParamArray Vals ()) 昏暗的整数n, MaxVal 在错误的简历 MaxVal=Vals (0) n=1 UBound (val) 如果Vals (n)比;MaxVal然后MaxVal=Vals (n) 下一个n 最大=MaxVal 结束函数 私人潜艇c2hsb(按值传递clr长) 暗淡的最高产量研究作为单个MyG单一,MyB单 昏暗的最大单一,最小是单身 昏暗的岬单身 昏暗的三角洲作为单一,MyVal单身 昏暗的cc作为字符串* 6 昏暗的r1, g1, b1字节 在错误的简历 cc=正确(“000000”+十六进制(clr)美元,6) b1=瓦尔(“,H +左(cc, 2)) g1=瓦尔(“和H”+ (cc、3、2)中期) r1=瓦尔(“,H +右(cc, 2)) 最高产量研究=r1/255: MyG=g1/255: MyB=b1/255 Max=最大(最高产量研究,MyG MyB) Min=最低(最高产量研究,MyG MyB) hsbB=Int (Max * 100) 如果马克思& lt;比;0然后 MyS=(最大值-最小值)/Max * 100 其他的 MyS=0 如果 的hsb=MyS 如果hsb=0 hsbH=0 其他的 δ=Max - Min 选择案例马克斯 例最高产量研究 MyVal=(MyG - MyB)/δ 案例MyG MyVal=2 + (MyB -最高产量研究)/δ 案例MyB MyVal=4 +(最高产量研究- MyG)/δ 最终选择 MyVal=MyVal * 60 如果MyVal & lt;0然后MyVal=MyVal + 360 hsbH=MyVal 如果 的调试。打印“hsb=";hsbH;“”;的hsb;“”;hsbB 终止子 私有函数ColorDistance(按值传递c1时,按值传递c2只要)那么长 昏暗的cd一样长 昏暗的h2, s1, b1, h3, s2, b2单身 在错误的简历 如果c1=1或c2=1 ColorDistance=1000000 退出函数 如果 c2hsb (c1) h2=hsbH/360 s1=hsb b1=hsbB c2hsb (c2) h3=hsbH/360 s2=hsb b2=hsbB cd=Abs (h2 - h3) cd=cd + Abs (s1 - s2) cd=cd + Abs (b1, b2) ColorDistance=cd 结束函数 代码>