我尝试将图片jpg
文件转换为二进制图片,我的意思是,只有B& W颜色。
我运行convert -monochromatic in.jpg out.jpg
,结果在视觉上令人满意。
然后我试着检查图像是否真的只包含B& W颜色。所以我运行identify -verbose out.jpg
,结果太长了。
但我想在此展示的主要内容如下:
Type: Grayscale
Colorspace: Gray
Depth: 8-bit
Channel depth:
gray: 8-bit
Channel statistics:
Pixels: 3978000
Gray:
min: 0 (0)
max: 255 (1)
mean: 188.613 (0.739659)
standard deviation: 111.739 (0.438194)
kurtosis: -0.804836
skewness: -1.0932
Colors: 12
Histogram:
883301: ( 0, 0, 0) #000000 gray(0)
109638: ( 1, 1, 1) #010101 gray(1)
35348: ( 2, 2, 2) #020202 gray(2)
6126: ( 3, 3, 3) #030303 gray(3)
570: ( 4, 4, 4) #040404 gray(4)
30: ( 5, 5, 5) #050505 gray(5)
36: (250,250,250) #FAFAFA gray(250)
980: (251,251,251) #FBFBFB gray(251)
10689: (252,252,252) #FCFCFC gray(252)
64396: (253,253,253) #FDFDFD gray(253)
195093: (254,254,254) #FEFEFE gray(254)
2671793: (255,255,255) #FFFFFF gray(255)
所以对我来说奇怪的是 Colors:12 行。这是否意味着图像不是B& W?它应该只有2吗?
修改:根据以下答案,该命令应为convert -threshold
,identify
信息的重要部分为频道。
但即使使用最后一个选项,我得到的是8位而不是1位。
Depth: 8-bit
Channel depth:
gray: 8-bit
答案 0 :(得分:2)
Monochromatic colors是单一色调的所有颜色(色调,色调和阴影)。所以单色并不意味着二元图像。
使用阈值处理将彩色图像转换为二进制图像,显然您需要给出一个阈值来确定哪些值为1(白色),哪些值为0(黑色)。通过调用值,我的意思是HSV中的值项(色调饱和度值)。我们也可以称它为轻盈。
所以你可以通过以下方式完成这项任务:
convert colored.png -threshold 75% thres_colored.png
<强>计算机158675_1280.png 强>
命令:
identify -verbose computer-158675_1280.png
结果:
Image: computer-158675_1280.png
Format: PNG (Portable Network Graphics)
Mime type: image/png
Class: DirectClass
Geometry: 1280x1046+0+0
Units: Undefined
Type: TrueColorAlpha
Endianess: Undefined
Colorspace: sRGB
Depth: 8-bit
Channel depth:
red: 8-bit
green: 8-bit
blue: 8-bit
alpha: 8-bit
将其转换为二进制图像:
convert computer-158675_1280.png -threshold 75% binary.png
<强> binary.png 强>
命令:
identify -verbose binary.png
结果:
Image: binary.png
Format: PNG (Portable Network Graphics)
Mime type: image/png
Class: DirectClass
Geometry: 1280x1046+0+0
Units: Undefined
Type: Bilevel
Endianess: Undefined
Colorspace: Gray
Depth: 8-bit
Channel depth:
gray: 1-bit
alpha: 8-bit
最终,检查二进制图像的标准不是Colors:
部分,而是Channel depth:
部分。 gray: 1-bit
表示此处的二进制图像。