如何将彩色图像二值化?

Tim*_*Tim 16 images

我的朋友有一张中文手写的彩色图像(基本上是通过拍照或扫描他在一张白纸上写的内容),他希望我将其转换为黑白二值图像。Ubuntu 下有没有可以做到这一点的应用程序?

这是一个示例图像:

在此处输入图片说明

use*_*ser 30

您想要的在图像处理中被称为“阈值”。基本上,它将图像作为输入并输出一个图像,其中所有像素值低于给定阈值的像素设置为黑色,所有像素值高于阈值的像素设置为白色。这导致来自任意输入图像的黑白图像。

通常,您希望先转换为灰度以获得更可预测的结果,但也可以对全彩色图像进行阈值处理。

您可以使用诸如 GIMP 之类的图形工具以交互方式执行此操作(您可以通过主菜单 -> 颜色 -> 阈值找到该工具),或者您可以使用 ImageMagick 像这样:

convert colored.png -threshold 75% thres_colored.png
Run Code Online (Sandbox Code Playgroud)

在示例图像上运行上述命令会产生如下所示的结果。

OP 图像的黑白版本

由于阈值通常是一个反复试验的过程,以获得您满意的结果,特别是如果源图像不是非常接近黑白,我建议尽可能使用 GUI 方法,但如果无论出于何种原因,这都不是一个选项,您也可以通过命令行执行此操作。为了更好地控制输出,您可以先使用颜色曲线、色阶和对比度等工具在阈值化之前更好地隔离图像的明暗部分。(实际上,可以将阈值视为使用颜色曲线工具的极端情况。)

  • 谢谢!由于彩色图像具有 RBG 三个通道,因此阈值通常适用于什么/可以适用于什么? (2认同)
  • 作为旁注,还有其他阈值方法不必依赖于硬编码的阈值级别。例如,ImageMagick 包括 [`-lat`](http://www.imagemagick.org/script/command-line-options.php#lat),它执行局部自适应阈值,同时考虑到周围的像素。 (2认同)

mkc*_*mkc 7

您可以使用 Imagemagick:

convert test.png -colorspace Gray gray_colorspace.png
Run Code Online (Sandbox Code Playgroud)

这里开始

这是我应用到你的形象后得到的:

在此处输入图片说明

  • “二进制”来自“bi”,意思是“二”,所以我假设 OP 想要将图像转换为纯黑白。转换为灰度会产生不止两个级别。 (11认同)

Cir*_*郝海东 5

图像魔术师 convert -monochrome

-monochrome选项使用一些聪明的抖动,使输出要比更明显-threshold,如果你想让它供人食用:

convert -monochrome signature.png out.png
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

对于这样一个简单的图像并没有太大的区别,但对于较大的图像,它是惊人的: