【问题标题】:How do I enlarge a picture so that it is 300 DPI?如何将图片放大到 300 DPI?
【发布时间】:2009-02-07 23:22:55
【问题描述】:

问题C++ Library for image recognition: images containing words to string的接受答案建议您:

  1. 将输入图像放大/缩小到 300 DPI。

我该怎么做...我的印象是 DPI 是针对显示器的,而不是图像格式。

【问题讨论】:

    标签: c++ image-processing computer-vision tesseract


    【解决方案1】:

    我认为这里更准确的术语是 resampling。您需要足够高的像素分辨率来支持准确的 OCR。字体大小(例如points)通常以长度为单位,而不是像素。由于 72 点 = 1 英寸,我们需要每点 300/72 像素来获得 300 dpi(“每英寸像素”)的分辨率。这意味着典型的 12 磅字体的高度(或者更准确地说,单行距文本中的基线到基线的距离)为 50 像素。

    理想情况下,您的源文档应该以适合给定字体大小的分辨率进行扫描,以使图像中的字体大约为 50 像素高。如果分辨率太高/太低,您可以使用图形程序轻松重新采样图像(例如GIMP)。您也可以通过图形库以编程方式执行此操作,例如 ImageMagick,它具有许多编程语言的接口。

    【讨论】:

    • 将低分辨率图像重新采样到更高分辨率有什么意义?
    【解决方案2】:

    只要您将像素中的图像与具有图片大小的物理设备相关联,DPI 就很有意义。在 OCR 的情况下,它通常意味着扫描的分辨率,即每英寸扫描将获得多少像素。 12 磅字体意味着以每行 12/72 英寸打印,大写字符可能占其中的 80%;因此以 300 DPI 扫描时,它的高度约为 40 像素。

    许多图像格式都记录了 DPI。如果图像被扫描,这应该是扫描仪的准确设置。如果它来自数码相机,它总是说 72 DPI,这是 EXIF 规范强制要求的默认值;这是因为相机无法知道图像的原始大小。当您使用成像程序创建图像时,您可能有机会将 DPI 设置为任意值。这是为了方便您指定最终图像的使用方式,并且与图像中包含的细节无关。

    这是一个先前的问题,询问调整图像大小的详细信息: How do I do high quality scaling of a image?

    【讨论】:

      【解决方案3】:

      OCR 软件通常设计为使用“正常”字体大小。从图像的角度来看,这意味着它将寻找可能在 30 到 100 像素高度范围内的字母。分辨率更高的图像会产生看起来太大的字母,OCR 软件无法有效处理。同样,分辨率较低的图像无法为软件提供足够的像素来识别字母。

      【讨论】:

      • 奇怪的是,我在字体大小为 12 的情况下抓取了 verdana,并且要么命中要么错过。其他图像处理完成,例如使其成为二值图像。
      • 更新:哇,将图像大小增加了 2,从而将其置于目标范围内。似乎工作得很好atm!还在玩。
      【解决方案4】:

      “我该怎么做...我的印象是 dpi 是用于显示器,而不是图像格式。”

      DPI 代表每英寸点数。跟显示器有什么关系?好吧,我们有一个由三个 RGB 子像素组成的像素。 DPI 越高,您塞入该空间的细节就越多。

      DPI 对显示和打印来说是一种有用的测量方法,但没有什么用处……事实上,对于图像格式本身没有任何用处。

      在某些格式中标记 DPI 的原因是指示设备以该分辨率显示,但据我了解,几乎所有设备都忽略了该指示,并尽最大努力优化特定输出的图像。

      您可以将图像格式的 72 dpi 更改为 1 dpi 或 6000 dpi,这在显示器上不会产生任何影响。 “放大/缩小到 300 dpi”没有意义。重采样也不会改变 DPI。在 Photoshop 中尝试,在更改 DPI 时取消选中“重新采样”,你会发现没有任何区别。它不会变大或变小。

      DPI 对于图像格式完全没有意义,IMO。

      【讨论】:

        【解决方案5】:

        如果您的目标是 OCR,则 DPI 可以作为原始扫描文档中每英寸图像中的点数。如果你的 dpi 太低,信息就永远消失了,即使是双三次插值也不能很好地恢复它。如果你的dpi太高,很容易丢位。

        完成工作;我是 netpbm/pbmplus 工具集的忠实粉丝;开始的工具是pnmscale,不过如果你有位图,你可以考虑使用相关工具,例如pbmreduce

        【讨论】:

          猜你喜欢
          • 2019-05-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-21
          • 1970-01-01
          • 1970-01-01
          • 2014-10-06
          相关资源
          最近更新 更多