检查图像是否为二进制

时间:2016-09-23 02:00:52

标签: imagemagick

我尝试将图片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 -thresholdidentify信息的重要部分为频道

但即使使用最后一个选项,我得到的是8位而不是1位。

  Depth: 8-bit
  Channel depth:
    gray: 8-bit

1 个答案:

答案 0 :(得分:2)

Monochromatic colors是单一色调的所有颜色(色调,色调和阴影)。所以单色并不意味着二元图像。

使用阈值处理将彩色图像转换为二进制图像,显然您需要给出一个阈值来确定哪些值为1(白色),哪些值为0(黑色)。通过调用值,我的意思是HSV中的值项(色调饱和度值)。我们也可以称它为轻盈。

所以你可以通过以下方式完成这项任务:

convert colored.png -threshold 75% thres_colored.png

<强>计算机158675_1280.png

enter image description here

命令:

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

enter image description here

命令:

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表示此处的二进制图像。