1

我正在使用我的数码相机作为快速而肮脏的扫描仪。分辨率其实在300dpi左右,还是比较合理的。但是我的相机会产生彩色图像,我想将其简化为位图。我不想抖动图像;我正在寻找如果我将文档通过黑白扫描仪会得到什么。将 JPEG 转换为灰度图像既简单又标准,使用djpeg -grayscale. 困难的部分是决定哪些灰色像素应该是白色的,哪些应该是黑色的。

pbmplus 工具提供

djpeg -grayscale -pnm img.jpg | pgmtopbm -threshold -value $v > img.pbm

但杀手锏就是那个值$v。好的值似乎在 0.3 到 0.6 的任何范围内,手动反复试验和错误正在杀死我。(对于那些更熟悉 ImageMagick 的人来说$v,手头是-black-threshold参数的值。)

我想我可以构建一个 GUI 来帮助我更快地手动找到阈值,但我真正想要的是设置阈值以将灰度图像转换为干净的位图的算法。理想情况下,这只需检查灰度图像的结构即可!

4

2 回答 2

0

颜色空间转换通常使用与设备相关的配置文件来完成。

您的相机正在根据其颜色配置文件生成图像,如果您有扫描仪,它将根据其颜色配置文件生成图像。

如果您的相机有一个 ICC 或 ICM 配置文件,并且与您假设的扫描仪设备的输出相匹配,您可以使用ImageMagickLittle CMS将配置文件应用于您的数据。

由于我怀疑您的相机是否有 ICC 或 ICM 配置文件,您可以选择Internet 上提供的众多免费配置文件之一。合适的灰度输出配置文件可能更难找到。

如果您无法应用特定于设备的配置文件,您可能会发现ImageMagick 可以使用 -colorspace命令完成您需要的工作。

ICC(国际色彩联盟)有一些您可能会发现有用的程序和信息。

设置阈值以将灰度图像转换为干净位图的算法

如果一切都失败了,您也许可以从灰度图像的直方图中得出一个值?

(您的帖子有点令人困惑,因为您声明您的相机输出彩色图像,但您希望该图像看起来好像是通过黑白扫描仪运行的。然后您声明您想要一种算法将灰度图像转换为一个“干净的”位图。”请澄清。)

编辑- 如果您仍在寻找答案,ImageMagick 可用于应用 ICC 配置文件。此外,此扫描仪配置文件信息页面可能会有所帮助。

convert RGB.jpg -profile "Scanner.icc" BW.jpg
于 2009-08-15T20:06:00.100 回答
0

这并不完全是我所希望的,但potracemkbitmap项目中的程序在将照片转换为位图方面做得很好。边缘处往往会有一些伪影,但它在消除不相关的低空间频率信号方面做得更好,而使用简单的阈值处理是不可能的。

于 2013-04-17T01:09:03.743 回答