我需要生成图像中前5种主色的调色板。我想要复制Embedly's extract tool或Color Thief的结果。
以下命令给出了稍微不同的结果:
convert testimage.jpg -format %c -colorspace LAB -colors 5 histogram:info:- | sort -n -r
157154: ( 19, 28, 35) #131C23 srgb(19,28,35)
16164: ( 27, 51, 77) #1B334D srgb(27,51,77)
15725: ( 79, 88, 84) #4F5854 srgb(79,88,84)
8608: ( 44, 77,103) #2C4D67 srgb(44,77,103)
5149: ( 84,126,150) #547E96 srgb(84,126,150)
我有点不确定我是否应该量化为5种颜色,因为我发现这样做并不能很好地处理简单的图形(例如Google徽标)。使用更大的调色板然后选择顶部的 n 颜色会更好吗?
这引出了我关于所使用的量化算法的下一个问题。查看Embedly Extract的结果,输出颜色不一定是频繁的,但似乎是彼此之间不同的聚类。
例如,假设我有一个非常暗的图像(黑色/棕色),细节为鲜红色。我如何确保ImageMagick包含红色? (道歉,如果这听起来很愚蠢,色彩理论对我来说都是新的!)。
以下是我用于测试的图片:
答案 0 :(得分:18)
你能定义"前5种主色",拜托?我觉得这听起来并不容易......
访问您为 Embed.ly 提供的链接以及 Color Thief &#时可以看到的不同结果清楚地显示了这一点。 39;对你的测试图像的解释。
<强> Embed.ly 强>
以下是Embed.ly列出的5种提取颜色(我查看了该页面的HTML源代码):
rgb(13, 28, 37)
rgb(44, 74, 94)
rgb(71, 112, 131)
rgb(105, 147, 163
rgb(198, 209, 216)
使用ImageMagick创建具有以下5种颜色的调色板:
convert \
-size 60x60 \
label:" Embed.ly" \
xc:"rgb(13, 28, 37)" \
xc:"rgb(105, 147, 163" \
xc:"rgb(71, 112, 131)" \
xc:"rgb(44, 74, 94)" \
xc:"rgb(198, 209, 216)" \
+append \
embedly-palette-from-testimage.jpg
查看结果:
彩色小偷
Color Thief将一种颜色命名为&#34;显性&#34; 颜色:
rgb(21, 30, 38)
Color Thief还列出了另外9种颜色的调色板(同样,从HTML源代码中检索的值):
rgb(18, 27, 35)
rgb(100, 142, 164)
rgb(51, 84, 110)
rgb(32, 53, 74)
rgb(47, 46, 43)
rgb(83, 85, 76)
rgb(145, 143, 128)
rgb(106, 141, 140)
rgb(62, 84, 81)
使用ImageMagick使用Color Thief的9种托盘颜色创建调色板:
convert \
-size 60x60 \
label:" Color Thief" \
xc:"rgb(18, 27, 35)" \
xc:"rgb(100, 142, 164)" \
xc:"rgb(51, 84, 110)" \
xc:"rgb(32, 53, 74)" \
xc:"rgb(47, 46, 43)" \
xc:"rgb(83, 85, 76)" \
xc:"rgb(145, 143, 128)" \
xc:"rgb(106, 141, 140)" \
xc:"rgb(62, 84, 81)" \
+append \
ct-palette-from-testimage.jpg
查看结果:
Color Thief基于quantize.js
。它使用quantize.js
提供的中值切割算法来聚类相似的颜色,然后从最大的聚类返回基色作为&#34;显性&#34;颜色。
如何确定要返回的颜色为&#34;调色板颜色&#34;可以从其源代码确定,即hosted on Github。
ImageMagick的5种量化颜色
在将图像量化为5种颜色后,您的问题列出了ImageMagick直方图的输出。
使用这5种颜色创建另一个调色板:
convert \
-size 60x60 \
label:" ImageMagick" \
xc:"srgb(19,28,35)" \
xc:"srgb(79,88,84)" \
xc:"srgb(44,77,103)" \
xc:"srgb(27,51,77)" \
xc:"srgb(84,126,150)" \
+append \
im-palette-from-testimage.jpg
查看结果:
比较3个调色板
使用此命令创建3个调色板的视觉比较:
convert \
ct-palette-from-testimage.jpg \
embedly-palette-from-testimage.jpg \
im-palette-from-testimage.jpg \
-append \
color-palettes.jpg
结果:
可以清楚地看到,Color Thief和ImageMagick直方图中的5种量化颜色都没有包含Embed.ly返回的相当明亮的第5种颜色。
再次与您的测试图像进行比较:
&#34;使用更大的调色板然后选择前n种颜色会更好吗?&#34;
为什么不测试它并发现自己?
答案 1 :(得分:0)