identify 命令输出中的颜色图和直方图有什么区别?
What is the differrence between colormap and historam in the identify command output?
我在下面的表格中使用识别命令:
identify -verbose image.png
部分输出为:
Colors: 8
Histogram:
49602: ( 49, 51, 39) #313327 srgb(49,51,39)
36492: ( 98,121,135) #627987 srgb(98,121,135)
21728: ( 98,182,240) #62B6F0 srgb(98,182,240)
39526: (121,131, 75) #79834B srgb(121,131,75)
34298: (165,171,147) #A5AB93 srgb(165,171,147)
29957: (185,200,226) #B9C8E2 srgb(185,200,226)
18767: (210,185, 67) #D2B943 srgb(210,185,67)
31774: (246, 69, 44) #F6452C srgb(246,69,44)
Colormap entries: 9
Colormap:
0: (121,131, 75) #79834B srgb(121,131,75)
1: ( 49, 51, 39) #313327 srgb(49,51,39)
2: (210,185, 67) #D2B943 srgb(210,185,67)
3: (165,171,147) #A5AB93 srgb(165,171,147)
4: (185,200,226) #B9C8E2 srgb(185,200,226)
5: ( 98,121,135) #627987 srgb(98,121,135)
6: ( 98,182,240) #62B6F0 srgb(98,182,240)
7: (246, 69, 44) #F6452C srgb(246,69,44)
8: (255,255,255) #FFFFFF white
我看到与直方图中相同的颜色加白色,但以不同的顺序出现在颜色图中。
两者有什么区别?
Histogram
下第一行:
49602: ( 49, 51, 39) #313327 srgb(49,51,39)
告诉您图像中有 49,602 个像素,颜色为 sRGB(49,51,39)
。所以它告诉你出现的频率,或者每种颜色出现的频率。
Colormap:
下的9行是图像的调色板。
我们来看第一行:
0: (121,131, 75) #79834B srgb(121,131,75)
这意味着图像中出现颜色 srgb(121,131,75)
的任何位置,我们只在该位置存储调色板索引 0
,而不存储颜色 121,131,75
。也就是说我们只用1个字节来存储一个0
而不是存储3个字节的RGB,也就是说我们节省了space的2/3。它是一个 "LookUp Table" 或 调色板 。
调色板以 space 换取颜色准确性。一般来说,它们是原始图像大小的 1/3,但通常只能存储 256 种独特的颜色,而不是传统 RGB 图像的 16,777,216 种颜色。
为了好玩,让我们创建这个平滑的灰度渐变和一些随机噪声作为传统的 RGB888 图像(输出为 75kB):
magick -size 40x600 gradient: \( xc: +noise random \) +append -rotate 90 PNG24:a.png
现在做同样的事情,但需要 ImageMagick 创建调色板图像(输出为 25kB):
magick -size 40x600 gradient: \( xc: +noise random \) +append -rotate 90 PNG8:a.png
有更长的示例解释 。
我在下面的表格中使用识别命令:
identify -verbose image.png
部分输出为:
Colors: 8
Histogram:
49602: ( 49, 51, 39) #313327 srgb(49,51,39)
36492: ( 98,121,135) #627987 srgb(98,121,135)
21728: ( 98,182,240) #62B6F0 srgb(98,182,240)
39526: (121,131, 75) #79834B srgb(121,131,75)
34298: (165,171,147) #A5AB93 srgb(165,171,147)
29957: (185,200,226) #B9C8E2 srgb(185,200,226)
18767: (210,185, 67) #D2B943 srgb(210,185,67)
31774: (246, 69, 44) #F6452C srgb(246,69,44)
Colormap entries: 9
Colormap:
0: (121,131, 75) #79834B srgb(121,131,75)
1: ( 49, 51, 39) #313327 srgb(49,51,39)
2: (210,185, 67) #D2B943 srgb(210,185,67)
3: (165,171,147) #A5AB93 srgb(165,171,147)
4: (185,200,226) #B9C8E2 srgb(185,200,226)
5: ( 98,121,135) #627987 srgb(98,121,135)
6: ( 98,182,240) #62B6F0 srgb(98,182,240)
7: (246, 69, 44) #F6452C srgb(246,69,44)
8: (255,255,255) #FFFFFF white
我看到与直方图中相同的颜色加白色,但以不同的顺序出现在颜色图中。
两者有什么区别?
Histogram
下第一行:
49602: ( 49, 51, 39) #313327 srgb(49,51,39)
告诉您图像中有 49,602 个像素,颜色为 sRGB(49,51,39)
。所以它告诉你出现的频率,或者每种颜色出现的频率。
Colormap:
下的9行是图像的调色板。
我们来看第一行:
0: (121,131, 75) #79834B srgb(121,131,75)
这意味着图像中出现颜色 srgb(121,131,75)
的任何位置,我们只在该位置存储调色板索引 0
,而不存储颜色 121,131,75
。也就是说我们只用1个字节来存储一个0
而不是存储3个字节的RGB,也就是说我们节省了space的2/3。它是一个 "LookUp Table" 或 调色板 。
调色板以 space 换取颜色准确性。一般来说,它们是原始图像大小的 1/3,但通常只能存储 256 种独特的颜色,而不是传统 RGB 图像的 16,777,216 种颜色。
为了好玩,让我们创建这个平滑的灰度渐变和一些随机噪声作为传统的 RGB888 图像(输出为 75kB):
magick -size 40x600 gradient: \( xc: +noise random \) +append -rotate 90 PNG24:a.png
现在做同样的事情,但需要 ImageMagick 创建调色板图像(输出为 25kB):
magick -size 40x600 gradient: \( xc: +noise random \) +append -rotate 90 PNG8:a.png
有更长的示例解释