比较两个RGB颜色的相似度

  

一、两个三维坐标的距离

  

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
  结束函数
   

比较两个RGB颜色的相似度