代码之家  ›  专栏  ›  技术社区  ›  Norman Ramsey

将jpeg转换为非抖动位图时如何设置阈值?

  •  1
  • Norman Ramsey  · 技术社区  · 15 年前

    我把我的数码相机当作一个又快又脏的扫描器。分辨率实际上在300dpi左右,这是相当合理的。但我的相机会生成一个彩色图像,我想将其缩小为位图。我愿意 想要抖动图像;我正在寻找如果我将文档通过黑白扫描仪将得到什么。使用 djpeg -grayscale . 最难的部分是决定哪个灰色像素应该是白色的,哪个应该是黑色的。

    PBMPlus工具提供

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

    但凶手就是这个价值观 $v .好的值似乎在0.3到0.6之间,反复的手工尝试和错误让我非常痛苦。(对于那些更熟悉ImageMagick的人, 五元 手头的价值是 -black-threshold 参数)

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

    2 回复  |  直到 11 年前
        1
  •  0
  •   user113476    15 年前

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

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

    前提是您的相机具有ICC或ICM配置文件,并且与您可以使用的假设扫描仪设备的输出接近。 ImageMagick Little CMS 将配置文件应用于数据。

    因为我怀疑你的相机是否有ICC或ICM配置文件,你可以选择 the many free ones available on the Internet .要找到合适的灰度输出配置文件可能有点困难。

    如果您不能应用特定于设备的配置文件,您可能会发现 ImageMagick can do what you need with it's -colorspace 命令。

    这个 ICC (International Color Consortium) 有一些你可能会觉得有用的程序和信息。

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

    如果所有其他方法都失败了,您可能能够从灰度图像的柱状图中得到一个值?

    (你的帖子有点混乱,因为你的相机输出了一个彩色图像,但你希望图像看起来像是通过黑白扫描仪运行的。然后,您需要一个算法将灰度图像转换为“干净”位图。请澄清。)

    编辑 -如果您仍在寻找答案,可以使用ImageMagick应用ICC配置文件。阿尔索 this page of scanner profile info 可能会有所帮助。

    convert RGB.jpg -profile "Scanner.icc" BW.jpg
    
        2
  •  0
  •   Norman Ramsey    11 年前

    这不是我所希望的,而是 mkbitmap 来自的程序 potrace 这个项目很好地将照片转换成位图。边缘往往会有一些伪影,但它能更好地消除不相关的低频空间信号,这是不可能使用简单的阈值。

    推荐文章