如何从十六进制或rgb值计算人类可读的颜色名称

时间:2014-05-29 08:11:55

标签: image-processing color-palette

通过调色板提取找到图像中的主色后,我想找到一个最近的邻居颜色名称字符串。

哪种算法或图像处理技术可能适合从X11/ CSS palette等已知调色板中获取最近的颜色名称?

3 个答案:

答案 0 :(得分:2)

这是一个Perl解决方案,它在CIE Lab空间中找到最接近的颜色,而不是RGB空间:

#!/usr/bin/perl
################################################################################
# RGB2Colorname
# Mark Setchell
#
# Given an RGB colour tuple, calculate name of nearest colour, by converting to
# Lab colourspace and finding colour from a list which has the nearest Euclidean
# distance.
################################################################################
use strict;
use warnings;

my $Debug=0;

sub RGBtoXYZ
{
    my($R,$G,$B)=@_;
    $R = $R/255;
    $G = $G/255;
    $B = $B/255;

    if ($R > 0.04045){$R = (($R + 0.055)/1.055)**2.4}
    else {$R = $R / 12.92}
    if ($G > 0.04045){$G = (($G + 0.055)/1.055)**2.4}
    else {$G = $G / 12.92}
    if ($B > 0.04045){$B = (($B + 0.055)/1.055)**2.4}
    else {$B = $B / 12.92}

    $R *= 100;
    $G *= 100;
    $B *= 100;

    my $X = $R * 0.4124 + $G * 0.3576 + $B * 0.1805;
    my $Y = $R * 0.2126 + $G * 0.7152 + $B * 0.0722;
    my $Z = $R * 0.0193 + $G * 0.1192 + $B * 0.9505;
    return ($X,$Y,$Z);
}

sub XYZtoLAB
{
    my ($X,$Y,$Z)=@_;

    my $ref_X =  95.047;
    my $ref_Y = 100.000;
    my $ref_Z = 108.883;

    $X = $X/$ref_X;
    $Y = $Y/$ref_Y;
    $Z = $Z/$ref_Z;

    if ($X > 0.008856){$X = $X ** ( 1/3.0 )}
    else                    {$X = ( 7.787 * $X ) + ( 16 / 116 )}
    if ($Y > 0.008856){$Y = $Y ** ( 1/3.0 )}
    else                    {$Y = ( 7.787 * $Y ) + ( 16 / 116 )}
    if ($Z > 0.008856){$Z = $Z ** ( 1/3.0 )}
    else                    {$Z = ( 7.787 * $Z ) + ( 16 / 116 )}

    my $CIE_L = (116 * $Y) - 16;
    my $CIE_a = 500 * ($X - $Y);
    my $CIE_b = 200 * ($Y - $Z);

    return ($CIE_L,$CIE_a,$CIE_b);
}


   # Pick up arguments
   my ($R,$G,$B)=@ARGV;
   print "DEBUG: RGB=$R $G $B\n" if $Debug;

   my ($X,$Y,$Z) = RGBtoXYZ($R,$G,$B);
   print "DEBUG: XYZ=$X $Y $Z\n" if $Debug;

   my ($L,$a,$b) = XYZtoLAB($X,$Y,$Z);
   print "$L $a $b\n" if $Debug;

   my $color="none";
   my $mindist=1000000;
   my $thisdist;

   while(<DATA>){
      chomp;
      my ($thisRed,$thisGreen,$thisBlue,$thisName)=split;
      my ($thisX,$thisY,$thisZ) = RGBtoXYZ($thisRed,$thisGreen,$thisBlue);
      my ($thisL,$thisA,$thisB) = XYZtoLAB($thisX,$thisY,$thisZ);
      $thisdist=($L-$thisL)**2 + ($a-$thisA)**2 + ($b-$thisB)**2;
      if($thisdist<$mindist){
         $mindist=$thisdist;
         $color=$thisName;
      }
   }
   print "$color\n";
   exit(0);

__END__
255 250 250     snow
248 248 255     GhostWhite
245 245 245     WhiteSmoke
220 220 220     gainsboro
255 250 240     FloralWhite
253 245 230     OldLace
250 240 230     linen
250 235 215     AntiqueWhite
255 239 213     PapayaWhip
255 235 205     BlanchedAlmond
255 228 196     bisque
255 218 185     PeachPuff
255 222 173     NavajoWhite
255 228 181     moccasin
255 248 220     cornsilk
255 255 240     ivory
255 250 205     LemonChiffon
255 245 238     seashell
240 255 240     honeydew
245 255 250     MintCream
240 255 255     azure
240 248 255     AliceBlue
230 230 250     lavender
255 240 245     LavenderBlush
255 228 225     MistyRose
255 255 255     white
  0   0   0     black
 47  79  79     DarkSlateGray
 47  79  79     DarkSlateGrey
105 105 105     DimGray
105 105 105     DimGrey
112 128 144     SlateGray
112 128 144     SlateGrey
119 136 153     LightSlateGray
119 136 153     LightSlateGrey
190 190 190     gray
190 190 190     grey
211 211 211     LightGrey
211 211 211     LightGray
 25  25 112     MidnightBlue
  0   0 128     navy
  0   0 128     NavyBlue
100 149 237     CornflowerBlue
 72  61 139     DarkSlateBlue
106  90 205     SlateBlue
123 104 238     MediumSlateBlue
132 112 255     LightSlateBlue
  0   0 205     MediumBlue
 65 105 225     RoyalBlue
  0   0 255     blue
 30 144 255     DodgerBlue
  0 191 255     DeepSkyBlue
135 206 235     SkyBlue
135 206 250     LightSkyBlue
 70 130 180     SteelBlue
176 196 222     LightSteelBlue
173 216 230     LightBlue
176 224 230     PowderBlue
175 238 238     PaleTurquoise
  0 206 209     DarkTurquoise
 72 209 204     MediumTurquoise
 64 224 208     turquoise
  0 255 255     cyan
224 255 255     LightCyan
 95 158 160     CadetBlue
102 205 170     MediumAquamarine
127 255 212     aquamarine
  0 100   0     DarkGreen
 85 107  47     DarkOliveGreen
143 188 143     DarkSeaGreen
 46 139  87     SeaGreen
 60 179 113     MediumSeaGreen
 32 178 170     LightSeaGreen
152 251 152     PaleGreen
  0 255 127     SpringGreen
124 252   0     LawnGreen
  0 255   0     green
127 255   0     chartreuse
  0 250 154     MediumSpringGreen
173 255  47     GreenYellow
 50 205  50     LimeGreen
154 205  50     YellowGreen
 34 139  34     ForestGreen
107 142  35     OliveDrab
189 183 107     DarkKhaki
240 230 140     khaki
238 232 170     PaleGoldenrod
250 250 210     LightGoldenrodYellow
255 255 224     LightYellow
255 255   0     yellow
255 215   0         gold
238 221 130     LightGoldenrod
218 165  32     goldenrod
184 134  11     DarkGoldenrod
188 143 143     RosyBrown
205  92  92     IndianRed
139  69  19     SaddleBrown
160  82  45     sienna
205 133  63     peru
222 184 135     burlywood
245 245 220     beige
245 222 179     wheat
244 164  96     SandyBrown
210 180 140     tan
210 105  30     chocolate
178  34  34     firebrick
165  42  42     brown
233 150 122     DarkSalmon
250 128 114     salmon
255 160 122     LightSalmon
255 165   0     orange
255 140   0     DarkOrange
255 127  80     coral
240 128 128     LightCoral
255  99  71     tomato
255  69   0     OrangeRed
255   0   0     red
255 105 180     HotPink
255  20 147     DeepPink
255 192 203     pink
255 182 193     LightPink
219 112 147     PaleVioletRed
176  48  96     maroon
199  21 133     MediumVioletRed
208  32 144     VioletRed
255   0 255     magenta
238 130 238     violet
221 160 221     plum
218 112 214     orchid
186  85 211     MediumOrchid
153  50 204     DarkOrchid
148   0 211     DarkViolet
138  43 226     BlueViolet
160  32 240     purple
147 112 219     MediumPurple
216 191 216     thistle
255 250 250     snow1
238 233 233     snow2
205 201 201     snow3
139 137 137     snow4
255 245 238     seashell1
238 229 222     seashell2
205 197 191     seashell3
139 134 130     seashell4
255 239 219     AntiqueWhite1
238 223 204     AntiqueWhite2
205 192 176     AntiqueWhite3
139 131 120     AntiqueWhite4
255 228 196     bisque1
238 213 183     bisque2
205 183 158     bisque3
139 125 107     bisque4
255 218 185     PeachPuff1
238 203 173     PeachPuff2
205 175 149     PeachPuff3
139 119 101     PeachPuff4
255 222 173     NavajoWhite1
238 207 161     NavajoWhite2
205 179 139     NavajoWhite3
139 121  94     NavajoWhite4
255 250 205     LemonChiffon1
238 233 191     LemonChiffon2
205 201 165     LemonChiffon3
139 137 112     LemonChiffon4
255 248 220     cornsilk1
238 232 205     cornsilk2
205 200 177     cornsilk3
139 136 120     cornsilk4
255 255 240     ivory1
238 238 224     ivory2
205 205 193     ivory3
139 139 131     ivory4
240 255 240     honeydew1
224 238 224     honeydew2
193 205 193     honeydew3
131 139 131     honeydew4
255 240 245     LavenderBlush1
238 224 229     LavenderBlush2
205 193 197     LavenderBlush3
139 131 134     LavenderBlush4
255 228 225     MistyRose1
238 213 210     MistyRose2
205 183 181     MistyRose3
139 125 123     MistyRose4
240 255 255     azure1
224 238 238     azure2
193 205 205     azure3
131 139 139     azure4
131 111 255     SlateBlue1
122 103 238     SlateBlue2
105  89 205     SlateBlue3
 71  60 139     SlateBlue4
 72 118 255     RoyalBlue1
 67 110 238     RoyalBlue2
 58  95 205     RoyalBlue3
 39  64 139     RoyalBlue4
  0   0 255     blue1
  0   0 238     blue2
  0   0 205     blue3
  0   0 139     blue4
 30 144 255     DodgerBlue1
 28 134 238     DodgerBlue2
 24 116 205     DodgerBlue3
 16  78 139     DodgerBlue4
 99 184 255     SteelBlue1
 92 172 238     SteelBlue2
 79 148 205     SteelBlue3
 54 100 139     SteelBlue4
  0 191 255     DeepSkyBlue1
  0 178 238     DeepSkyBlue2
  0 154 205     DeepSkyBlue3
  0 104 139     DeepSkyBlue4
135 206 255     SkyBlue1
126 192 238     SkyBlue2
108 166 205     SkyBlue3
 74 112 139     SkyBlue4
176 226 255     LightSkyBlue1
164 211 238     LightSkyBlue2
141 182 205     LightSkyBlue3
 96 123 139     LightSkyBlue4
198 226 255     SlateGray1
185 211 238     SlateGray2
159 182 205     SlateGray3
108 123 139     SlateGray4
202 225 255     LightSteelBlue1
188 210 238     LightSteelBlue2
162 181 205     LightSteelBlue3
110 123 139     LightSteelBlue4
191 239 255     LightBlue1
178 223 238     LightBlue2
154 192 205     LightBlue3
104 131 139     LightBlue4
224 255 255     LightCyan1
209 238 238     LightCyan2
180 205 205     LightCyan3
122 139 139     LightCyan4
187 255 255     PaleTurquoise1
174 238 238     PaleTurquoise2
150 205 205     PaleTurquoise3
102 139 139     PaleTurquoise4
152 245 255     CadetBlue1
142 229 238     CadetBlue2
122 197 205     CadetBlue3
 83 134 139     CadetBlue4
  0 245 255     turquoise1
  0 229 238     turquoise2
  0 197 205     turquoise3
  0 134 139     turquoise4
  0 255 255     cyan1
  0 238 238     cyan2
  0 205 205     cyan3
  0 139 139     cyan4
151 255 255     DarkSlateGray1
141 238 238     DarkSlateGray2
121 205 205     DarkSlateGray3
 82 139 139     DarkSlateGray4
127 255 212     aquamarine1
118 238 198     aquamarine2
102 205 170     aquamarine3
 69 139 116     aquamarine4
193 255 193     DarkSeaGreen1
180 238 180     DarkSeaGreen2
155 205 155     DarkSeaGreen3
105 139 105     DarkSeaGreen4
 84 255 159     SeaGreen1
 78 238 148     SeaGreen2
 67 205 128     SeaGreen3
 46 139  87     SeaGreen4
154 255 154     PaleGreen1
144 238 144     PaleGreen2
124 205 124     PaleGreen3
 84 139  84     PaleGreen4
  0 255 127     SpringGreen1
  0 238 118     SpringGreen2
  0 205 102     SpringGreen3
  0 139  69     SpringGreen4
  0 255   0     green1
  0 238   0     green2
  0 205   0     green3
  0 139   0     green4
127 255   0     chartreuse1
118 238   0     chartreuse2
102 205   0     chartreuse3
 69 139   0     chartreuse4
192 255  62     OliveDrab1
179 238  58     OliveDrab2
154 205  50     OliveDrab3
105 139  34     OliveDrab4
202 255 112     DarkOliveGreen1
188 238 104     DarkOliveGreen2
162 205  90     DarkOliveGreen3
110 139  61     DarkOliveGreen4
255 246 143     khaki1
238 230 133     khaki2
205 198 115     khaki3
139 134  78     khaki4
255 236 139     LightGoldenrod1
238 220 130     LightGoldenrod2
205 190 112     LightGoldenrod3
139 129  76     LightGoldenrod4
255 255 224     LightYellow1
238 238 209     LightYellow2
205 205 180     LightYellow3
139 139 122     LightYellow4
255 255   0     yellow1
238 238   0     yellow2
205 205   0     yellow3
139 139   0     yellow4
255 215   0     gold1
238 201   0     gold2
205 173   0     gold3
139 117   0     gold4
255 193  37     goldenrod1
238 180  34     goldenrod2
205 155  29     goldenrod3
139 105  20     goldenrod4
255 185  15     DarkGoldenrod1
238 173  14     DarkGoldenrod2
205 149  12     DarkGoldenrod3
139 101   8     DarkGoldenrod4
255 193 193     RosyBrown1
238 180 180     RosyBrown2
205 155 155     RosyBrown3
139 105 105     RosyBrown4
255 106 106     IndianRed1
238  99  99     IndianRed2
205  85  85     IndianRed3
139  58  58     IndianRed4
255 130  71     sienna1
238 121  66     sienna2
205 104  57     sienna3
139  71  38     sienna4
255 211 155     burlywood1
238 197 145     burlywood2
205 170 125     burlywood3
139 115  85     burlywood4
255 231 186     wheat1
238 216 174     wheat2
205 186 150     wheat3
139 126 102     wheat4
255 165  79     tan1
238 154  73     tan2
205 133  63     tan3
139  90  43     tan4
255 127  36     chocolate1
238 118  33     chocolate2
205 102  29     chocolate3
139  69  19     chocolate4
255  48  48     firebrick1
238  44  44     firebrick2
205  38  38     firebrick3
139  26  26     firebrick4
255  64  64     brown1
238  59  59     brown2
205  51  51     brown3
139  35  35     brown4
255 140 105     salmon1
238 130  98     salmon2
205 112  84     salmon3
139  76  57     salmon4
255 160 122     LightSalmon1
238 149 114     LightSalmon2
205 129  98     LightSalmon3
139  87  66     LightSalmon4
255 165   0     orange1
238 154   0     orange2
205 133   0     orange3
139  90   0     orange4
255 127   0     DarkOrange1
238 118   0     DarkOrange2
205 102   0     DarkOrange3
139  69   0     DarkOrange4
255 114  86     coral1
238 106  80     coral2
205  91  69     coral3
139  62  47     coral4
255  99  71     tomato1
238  92  66     tomato2
205  79  57     tomato3
139  54  38     tomato4
255  69   0     OrangeRed1
238  64   0     OrangeRed2
205  55   0     OrangeRed3
139  37   0     OrangeRed4
255   0   0     red1
238   0   0     red2
205   0   0     red3
139   0   0     red4
255  20 147     DeepPink1
238  18 137     DeepPink2
205  16 118     DeepPink3
139  10  80     DeepPink4
255 110 180     HotPink1
238 106 167     HotPink2
205  96 144     HotPink3
139  58  98     HotPink4
255 181 197     pink1
238 169 184     pink2
205 145 158     pink3
139  99 108     pink4
255 174 185     LightPink1
238 162 173     LightPink2
205 140 149     LightPink3
139  95 101     LightPink4
255 130 171     PaleVioletRed1
238 121 159     PaleVioletRed2
205 104 137     PaleVioletRed3
139  71  93     PaleVioletRed4
255  52 179     maroon1
238  48 167     maroon2
205  41 144     maroon3
139  28  98     maroon4
255  62 150     VioletRed1
238  58 140     VioletRed2
205  50 120     VioletRed3
139  34  82     VioletRed4
255   0 255     magenta1
238   0 238     magenta2
205   0 205     magenta3
139   0 139     magenta4
255 131 250     orchid1
238 122 233     orchid2
205 105 201     orchid3
139  71 137     orchid4
255 187 255     plum1
238 174 238     plum2
205 150 205     plum3
139 102 139     plum4
224 102 255     MediumOrchid1
209  95 238     MediumOrchid2
180  82 205     MediumOrchid3
122  55 139     MediumOrchid4
191  62 255     DarkOrchid1
178  58 238     DarkOrchid2
154  50 205     DarkOrchid3
104  34 139     DarkOrchid4
155  48 255     purple1
145  44 238     purple2
125  38 205     purple3
 85  26 139     purple4
171 130 255     MediumPurple1
159 121 238     MediumPurple2
137 104 205     MediumPurple3
 93  71 139     MediumPurple4
255 225 255     thistle1
238 210 238     thistle2
205 181 205     thistle3
139 123 139     thistle4
  0   0   0     gray0
  0   0   0     grey0
  3   3   3     gray1
  3   3   3     grey1
  5   5   5     gray2
  5   5   5     grey2
  8   8   8     gray3
  8   8   8     grey3
 10  10  10         gray4
 10  10  10         grey4
 13  13  13         gray5
 13  13  13         grey5
 15  15  15         gray6
 15  15  15         grey6
 18  18  18         gray7
 18  18  18         grey7
 20  20  20         gray8
 20  20  20         grey8
 23  23  23         gray9
 23  23  23         grey9
 26  26  26         gray10
 26  26  26         grey10
 28  28  28         gray11
 28  28  28         grey11
 31  31  31         gray12
 31  31  31         grey12
 33  33  33         gray13
 33  33  33         grey13
 36  36  36         gray14
 36  36  36         grey14
 38  38  38         gray15
 38  38  38         grey15
 41  41  41         gray16
 41  41  41         grey16
 43  43  43         gray17
 43  43  43         grey17
 46  46  46         gray18
 46  46  46         grey18
 48  48  48         gray19
 48  48  48         grey19
 51  51  51         gray20
 51  51  51         grey20
 54  54  54         gray21
 54  54  54         grey21
 56  56  56         gray22
 56  56  56         grey22
 59  59  59         gray23
 59  59  59         grey23
 61  61  61         gray24
 61  61  61         grey24
 64  64  64         gray25
 64  64  64         grey25
 66  66  66         gray26
 66  66  66         grey26
 69  69  69         gray27
 69  69  69         grey27
 71  71  71         gray28
 71  71  71         grey28
 74  74  74         gray29
 74  74  74         grey29
 77  77  77         gray30
 77  77  77         grey30
 79  79  79         gray31
 79  79  79         grey31
 82  82  82         gray32
 82  82  82         grey32
 84  84  84         gray33
 84  84  84         grey33
 87  87  87         gray34
 87  87  87         grey34
 89  89  89         gray35
 89  89  89         grey35
 92  92  92         gray36
 92  92  92         grey36
 94  94  94         gray37
 94  94  94         grey37
 97  97  97         gray38
 97  97  97         grey38
 99  99  99         gray39
 99  99  99         grey39
102 102 102         gray40
102 102 102         grey40
105 105 105         gray41
105 105 105         grey41
107 107 107         gray42
107 107 107         grey42
110 110 110         gray43
110 110 110         grey43
112 112 112         gray44
112 112 112         grey44
115 115 115         gray45
115 115 115         grey45
117 117 117         gray46
117 117 117         grey46
120 120 120         gray47
120 120 120         grey47
122 122 122         gray48
122 122 122         grey48
125 125 125         gray49
125 125 125         grey49
127 127 127         gray50
127 127 127         grey50
130 130 130         gray51
130 130 130         grey51
133 133 133         gray52
133 133 133         grey52
135 135 135         gray53
135 135 135         grey53
138 138 138         gray54
138 138 138         grey54
140 140 140         gray55
140 140 140         grey55
143 143 143         gray56
143 143 143         grey56
145 145 145         gray57
145 145 145         grey57
148 148 148         gray58
148 148 148         grey58
150 150 150         gray59
150 150 150         grey59
153 153 153         gray60
153 153 153         grey60
156 156 156         gray61
156 156 156         grey61
158 158 158         gray62
158 158 158         grey62
161 161 161         gray63
161 161 161         grey63
163 163 163         gray64
163 163 163         grey64
166 166 166         gray65
166 166 166         grey65
168 168 168         gray66
168 168 168         grey66
171 171 171         gray67
171 171 171         grey67
173 173 173         gray68
173 173 173         grey68
176 176 176         gray69
176 176 176         grey69
179 179 179         gray70
179 179 179         grey70
181 181 181         gray71
181 181 181         grey71
184 184 184         gray72
184 184 184         grey72
186 186 186         gray73
186 186 186         grey73
189 189 189         gray74
189 189 189         grey74
191 191 191         gray75
191 191 191         grey75
194 194 194         gray76
194 194 194         grey76
196 196 196         gray77
196 196 196         grey77
199 199 199         gray78
199 199 199         grey78
201 201 201         gray79
201 201 201         grey79
204 204 204         gray80
204 204 204         grey80
207 207 207         gray81
207 207 207         grey81
209 209 209         gray82
209 209 209         grey82
212 212 212         gray83
212 212 212         grey83
214 214 214         gray84
214 214 214         grey84
217 217 217         gray85
217 217 217         grey85
219 219 219         gray86
219 219 219         grey86
222 222 222         gray87
222 222 222         grey87
224 224 224         gray88
224 224 224         grey88
227 227 227         gray89
227 227 227         grey89
229 229 229         gray90
229 229 229         grey90
232 232 232         gray91
232 232 232         grey91
235 235 235         gray92
235 235 235         grey92
237 237 237         gray93
237 237 237         grey93
240 240 240         gray94
240 240 240         grey94
242 242 242         gray95
242 242 242         grey95
245 245 245         gray96
245 245 245         grey96
247 247 247         gray97
247 247 247         grey97
250 250 250         gray98
250 250 250         grey98
252 252 252         gray99
252 252 252         grey99
255 255 255         gray100
255 255 255         grey100
169 169 169     DarkGrey
169 169 169     DarkGray
0     0 139     DarkBlue
0   139 139     DarkCyan
139   0 139     DarkMagenta
139   0   0     DarkReE
144 238 144     LightGreen

示例:

RGB2Colourname 64 64 64
gray25

RGB2Colourname 250 251 0
yellow

这是一个快速而肮脏的版本,它使用awk:

在RGB colourspace中进行距离计算
awk -v R=255 -v G=0 -v B=0 'BEGIN{dmin=1000000}{d=($1-R)*($1-R)+($2-G)*($2-G)+($3-B)*($3-B);if(d<dmin){dmin=d;colour=$4}} END{print colour}' colors.csv

传入R,G和B作为参数。然后它解析colors文件的每一行,并计算RGB值与文件中值之间的差异总和。最后,它打印最近的。

我使用this文件作为我的colors.csv

示例:

awk -v R=255 -v G=255 -v B=34 'BEGIN{dmin=1000000}{d=($1-R)*($1-R)+($2-G)*($2-G)+($3-B)*($3-B);if(d<dmin){dmin=d;colour=$4}} END{print colour}' colors
yellow

awk -v R=255 -v G=255 -v B=255 'BEGIN{dmin=1000000}{d=($1-R)*($1-R)+($2-G)*($2-G)+($3-B)*($3-B);if(d<dmin){dmin=d;colour=$4}} END{print colour}' colors
white

答案 1 :(得分:0)

  1. 从颜色名称到颜色代码
  2. 找到最全面的地图
  3. 给定颜色代码时,找到最接近的匹配颜色名称
  4. 如果最接近的匹配与代码之间的差异超过阈值,则不返回任何内容。
  5. 您可以通过首先将各个RGB分量转换为十进制(例如0F0B09到(15,11,9))来计算差异,然后只需例如这些成分的差异的总和或一些平均值,或使用更复杂的公式。

答案 2 :(得分:0)

您还可以尝试将每种颜色转换为CIE L*a*b*颜色空间,并找到所需颜色与调色板中每种颜色之间的欧几里德距离。已知L*a*b*空间与人类解释的感知色彩距离一致。遗憾的是,在RGB域中做距离并不能很好地模拟人类的感知。基本上,L*a*b*颜色模型将RGB像素转换为亮度部分(L*),红色/品红色和绿色(a*)之间的颜色比例和黄色之间的颜色比例和蓝色(b*)。

因此,做这样的事情:

  1. 将调色板中的每种颜色转换为L*a*b*
  2. 获取查询颜色,找到此颜色的L*a*b*组件与每种调色板颜色之间的欧几里德距离。 L*a*b*个组件。
  3. 无论哪个给你的距离最小,这个颜色就是&#34;最类似于&#34;
  4. 我不确定您正在查看哪种语言,但此处有C代码执行RGBL*a*b*。如果你想要MATLAB,那么环境就有内置的库可以帮你完成。

    如果你想看看转型背后的数学,请看这里:http://en.wikipedia.org/wiki/Lab_color_space#Forward_transformation

    如果你想立即开始搞乱一些代码,可以在这里找到一些C代码:http://www.csie.ntu.edu.tw/~b92069/HWs/rgb2lab.c