Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I enlarge a picture so that it is 300 DPI?

The accepted answer to the question C++ Library for image recognition: images containing words to string recommended that you:

  1. Upsize/Downsize your input image to 300 DPI.

How would I do this... I was under the impression that DPI was for monitors, not image formats.

like image 969
Zombies Avatar asked Feb 07 '09 23:02

Zombies


2 Answers

I think the more accurate term here is resampling. You want a pixel resolution high enough to support accurate OCR. Font size (e.g. in points) is typically measured in units of length, not pixels. Since 72 points = 1 inch, we need 300/72 pixels-per-point for a resolution of 300 dpi ("pixels-per-inch"). That means a typical 12-point font has a height (or more accurately, base-line to base-line distance in single-spaced text) of 50 pixels.

Ideally, your source documents should be scanned at an appropriate resolution for the given font size, so that the font in the image is about 50 pixels high. If the resolution is too high/low, you can easily resample the image using a graphics program (e.g. GIMP). You can also do this programmatically through a graphics library, such as ImageMagick which has interfaces for many programming languages.

like image 66
Zach Scrivena Avatar answered Nov 07 '22 14:11

Zach Scrivena


DPI makes sense whenever you're relating an image in pixels to a physical device with a picture size. In the case of OCR, it usually means the resolution of the scan, i.e. how many pixels will you get for each inch of your scan. A 12-point font is meant to be printed at 12/72 inches per line, and an upper-case character might fill about 80% of that; thus it would be approximately 40 pixels tall when scanned at 300 DPI.

Many image formats have a DPI recorded in them. If the image was scanned, this should be the exact setting from the scanner. If it came from a digital camera, it always says 72 DPI, which is a default value mandated by the EXIF specification; this is because a camera can't know the original size of the image. When you create an image with an imaging program, you might have the opportunity to set the DPI to any arbitrary value. This is a convenience for you to specify how you want the final image to be used, and has no bearing on the detail contained in the image.

Here's a previous question that asks the details of resizing an image: How do I do high quality scaling of a image?

like image 30
Mark Ransom Avatar answered Nov 07 '22 14:11

Mark Ransom