MATLAB Answers


How to calculate appropriate compression factor?

Asked by Moon Shadow on 21 Mar 2014
Latest activity Commented on by Image Analyst
on 25 Mar 2014

If I have an image size 3 inches x 4 inches stored in my computer with the resolution of 1200 dpi.

What is the appropriate compression factor, if this image has to be displayed on a screen of size 6 inches by 8 inches having a resolution of 200 lines per inch and 200 dots per line.


Log in to comment.


2 Answers

Answer by Image Analyst
on 22 Mar 2014
Edited by Image Analyst
on 22 Mar 2014

Try this:

Calculate how many dots are in the original image, and how many can be displayed on the screen. You don't need more than you can display. Compression factor uses the ratio of those numbers of dots. You should be able to figure it out!


In the context you have, when it is written as "1200 dpi" then that is the same thing as "1200 pixels per inch".

It would technically be different if you were talking about an inkjet print with microdots as microdots are often not physically printed in a square matrix: there is instead often a a bit of offset in some rows in order to prevent moire patterns on the output.

I think to calculate the compression factor it should be both the same unit.

So, I want to convert all the units to Dpi.

The lines per inch and dots per line to Dpi.

What does DPI have to do with compression? Magnification yet, but compression? What if I have a 3600 x 4800 pixel image and I display it at 1 dpi on the jumbotron at a stadium? If my image compressed by 1200 to 1? No.

A line pair requires one line to be bright and one line to be dark. Two rows (lines) - that's a line pair . So you need two rows to get a single line pair. That's where your factor of 2 comes from. But it has nothing to do with what we're talking about.

Log in to comment.

Answer by Walter Roberson
on 23 Mar 2014

You should be treating the display as one vertical pixel per line.

You should be able to calculate the resizing easily enough. You are doubling the horizontal and vertical sizes, which would stretch the 1200 dpi out to 600 dpi. The display is only capable of 200 dpi so you need to subsample by a factor of 3.


That mean the answer will be:

(DPI)2 = pixels

1200 x 1200 = 1,440,000 pixels

LPI x 2 = DPI.

400 x 400 = 160,000 pixels

compression ratio = size of original image / size of compressed image

= 1,440,000 / 160,000= 9:1

No, subsampling and compression are not the same thing. To do the required display you need to subsample, not to compress.

If you were to take the image and put it through lossy JPEG you could likely get 9:1 compression without much difficulty, but the result would still be a 3600 x 4800 image, which you would not be able to display on a 1200 x 1600 display.

"Compression" is a reduced-memory representation of the same data. What you need is less data, not the same data stored in less computer memory.

I agree. Like I said above, you're talking more about magnification (replicating/interpolating pixels, or in your particular case subsampling), rather than compression. Why do you keep wanting to use the term compression? Is there someone who is telling you that compression is the proper term, even though Walter and I are telling you it's not?

Log in to comment.

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today