Category: General

Hi folks,

Today we are going to provide some more details on interpolation algorithms, not because we intend to annoy you with mathematics but just as an attempt to offer simple explanations to terms you might have encountered and puzzled you in imaging and photo processing documentations.
Or at least to give you a clue on the complexity that lays behind even very basic PaperScan bitmap handling features you are frequently and easily using, such as resizing an image/changing its dpi, rotating it at any angle you want or using the magnifier tool.

As shortly explained in a previous article, interpolation is a mathematically-based “guess” for determining new, unknown values to be placed in between known values (as opposed to extrapolation, when new values are guessed for outside the range of the known values).
Quick example: we know the air temperatures at 6:00 AM and at 10:00 AM and need to figure out a best guess for the temperature at 8:30 AM (interpolation) or at 11:45 AM (extrapolation).
In bitmaps, interpolation is required for example when scaling an image (more obvious when enlarging it) or when rotating an image with an angle, because bitmaps are a given, fixed grid of pixels and therefore resolution-dependent.
Being an approximation process, there will always be some loss of quality when interpolation is performed, the results depending on the interpolation algorithm used.

As mentioned before, among the many existing methods there are 3 commonly used algorithms for bitmap image interpolation: nearest-neighbor, bilinear and bicubic.

1) Nearest neighbor algorithm is the simplest of them all.
An image is worth a thousand words, so take a look here : the original image (left) is 4×4 pixels, the 100% upscaled grid (middle) is 8×8 pixels, showing the to-be-created (with color value to be determined), “empty” pixels as black, for ease of understanding.
Now start from upper-left corner going to the right and assign to each “empty” (black) pixel the same color as its nearest known neighbor and, after finishing a row, go to the next one under it until completing all of them.
The resulting grid is shown on the right and you have just performed (mentally) a nearest-neighbor interpolation!
It is simple, blazing fast but only makes each original pixel bigger so how about seeing its shortcomings? Here you go: http://photoenlargement.imagener.com/images/nn.jpg

2) Bilinear algorithm is “smarter”:
Instead of simply replicating the nearest pixel, it takes into account the closest 2×2 neighborhood of known pixels that surrounds the “empty” (to-be-created) pixel.
It then determines the new (interpolated) value by calculating the average of these 4 known pixels, weighted according to their relative distance to the to-be-created pixel.
Resulting images are much smoother compared to those obtained by nearest-neighbor method.

3) Bicubic algorithm is more complex than bilinear and, because it offers very good quality of output in a short enough processing time, it became a standard for image editing software, as well as for printer drivers.
Bicubic method takes into account 16 (4×4) known pixels located closest to the “empty” one, whose color value is to be determined.
That value will still be a weighted average and the closer a known pixel is, the more weight he will get in the calculation.
This is the most accurate interpolation method of the 3 presented here providing a smooth and sharp output which explains its wide adoption.
If you kept all 3 sample images (links provided above) in separate browser tabs, you can easily compare and see the differences between algorithms.
Note that any algorithm’s efficiency is limited so, when pushed beyond a certain margin, it will start producing lesser and lesser quality output.

As a conclusion to this article, each time you zoom, resize, rotate, crop a zone of a bitmap to another resolution or print, remember the result is “artificial” and, despite the ease of use, it is obtained by non-trivial methods.
Interpolation is a nice thing (and it has a cool name, too), but best idea for your valued images/photos would be to adjust initial resolution settings so you will need it as rarely as possible.

See you next week!

Bogdan

Big Browser on May 17

Samsung Faces Same Problem As Apple : Too Much Cash Read article The Windows Kernel Is Slower Than Other Operating Systems. Here Is Why. Read article Is the Linux desktop becoming extinct? Read article The top 6 worst passwords from the Star Trek universe Read article Microsoft: Office won’t go subscription-only any time soon Read article

Casual Friday on May 17

You talking to me?

You talking to me ?"

Hi folks,

As promised in the previous article, today we will try to untangle the frequent confusions generated among many computer users by this simple word : “resolution”.
To do that, we are going to explain screen resolution, printing resolution, pixel dimensions, physical dimensions and how everything relates with regard to bitmaps.

Bitmaps dimensions are expressed in pixels (image width x height) either separated (usually for image files) or as the effective result of the multiplication (usually to express digital cameras sensitivity).
For example, an “8 Megapixels digital camera” means the photos it produces (actually bitmaps) are made up of cca. 8 million pixels, a photo being, for example, 3456 pixels wide by 2304 pixels high, which gives 7,962,624 pixels (cca. 8MP).
Funny thing is that the pixel dimension of the image has little to do with how the bitmap image appears on screen but is has lots to do with how the image will print!
How comes?

Well, to begin with, a pixel is a logical unit, not a physical one.
In other words, a pixel doesn’t have a fixed measured size, its size depends on the screen it is displayed on.
For example, imagine an LCD monitor having a screen resolution of 1000×1000 pixels, the screen’s physical dimensions being 1000×1000 mm.
In such case, the dimension of a pixel will be 1 square milimeter (1×1 mm).
Now imagine that you change the output resolution setting of the same monitor to 500×500 pixels: as monitor’s physical dimensions don’t change, a pixel will now be 2×2 mm, meaning 4 square milimeters.
To continue this exercise of imagination, think about a bitmap image having pixel-dimensions of 1000×1000 pixels: in the first case (screen resolution of 1000×1000) the image will be rendered full screen.
And for the second, case (chaging the screen-resolution of the same monitor to 500×500 pixels), the image will appear bigger (because each pixel is bigger than before) and will be displayed only partially on screen.
Of course, there are no such monitors/resolutions standards in real life, we only gave these examples to show that image size in pixels is relative, not “absolute”.
So perhaps at this point it will be easier to understand what pixels-per-inch (PPI) is : it is a value expressing how many pixels “fit” inside an inch but its significance depends on the context.
-when used with regard to an image resolution, PPI (often reffered to as DPI in this context) is the number of pixels per inch in the bitmap grid and is meant for printers (to determine how the image is to be printed within a specified size);
-when used with regard to a screen resolution’s appearance, PPI is the number of pixels per inch (or pixels-per-centimeter (PPCM) when metric system is used) depending on screen’s physical size and screen’s resolution as set by user;
Here are a few real life facts to help understanding:

-a monitor in 800×600 mode has a lower PPI than the same monitor has in a 1024×768 or 1280×1024 mode;
-a monitor of 12 inches wide (horizontal) by 9 inches height (vertical) at a resolution of 1024×768 pixels has a PPI value of cca. 85 (1024 pixels / 12 inches = 768 pixels / 9 inches = 85.3);
-a monitor on a Windows Operating System typically displays at 96 PPI;
-a bitmap image of 1,000 × 1,000 pixels, if labeled as 250 PPI (DPI is frequently misused to replace PPI in such context), will instruct the printer to print it at a size of 4 × 4 inches.

With printers there’s a different story.
First of all, there is an important difference between how an image appears to the human eye on screen and how it appears when printed.
Due to visual perception physiology, an image don’t need to have a very high resolution in order to appear at a decent size and with good quality on a computer screen.
Unfortunately, this is not the case when it comes to printing it : what is seen on print simply doesn’t match the quality of what is seen on screen.
Screens displays colors out of red, green and blue (RGB color model), by mixing them together into a vast color palette and light is emitted directly to the eyes.
White is obtained when all 3 colors are displayed at full intensity, black is obtained by their absence (zero intensity), hence the name “additive color model” for RGB.
Printers work differently : they create colors by mixing cyan, magenta, yellow and black inks (CMYK color model but there’s also a CMY model), inks absorbe light and human eyes see light reflected from paper.
White is obtained by using none of the 4 colors (as it’s the paper’s color) while black is obtained by full combination of all 4 (or 3, for CMY) colors inks, hence the name “substractive color model” for CMYK.

Similar to how pixel is the picture element of an image on screen, a dot is the picture element of a printed image.
And similar to how PPI value describes the density of pixels on screen, the DPI (“dots-per-inch”) value expresses how many individually printed dots “acomodate” within an inch.
Of course, the higher the DPI value, the better quality of the printed image will be.
But printers have a limited range of colors for each dot and their color pallette is lesser than in the case of screens.
So in order to obtain similar output quality, a bitmap image has to be printed in much higher DPI value than the PPI value needed for good screen viewing.
It is said that the printing process “could require a region of four to six dots (measured across each side) in order to faithfully reproduce the colour contained in a single pixel” so if a 100×100-pixel image is to be printed inside a one inch square, the printer must be capable of 400 to 600 dots per inch in order to accurately reproduce the image.

Finally, as if the already described confusions wouldn’t be enough, DPI is used to also express the resolutions in scanning processes, whereas the correct term to use appears to be “samples-per-inch” (SPI).

Hope that from now on, when using PaperScan it will be easier for you to deal with resolution-related terminology in bitmaps!

See you next week !

Bogdan

Big Browser on May 10

Why your password can’t have symbols—or be longer than 16 characters Read article Apache Web Server Attacks Continue to Evolve Read article Announcing the release of Windows Azure SDK 2.0 for .NET Read article Spyware used by governments poses as Firefox, and Mozilla is angry Read article "Nothing is safe once your Glass has been hacked," hacker warns. Read article

Hi folks,

As shown in a previous article, all raster (bitmap) files hold information on each and every pixel in the grid that makes an image.
Today we are going to describe some consequences of this storage principle and, hopefully, we will shed some light on some related, “esoteric” terms.

First, all bitmap images are rectangular, as there has to be a grid (vector images, being defined by mathematical equations not by pixels, aren’t “restricted” to rectangular shape)

Secondly, bitmaps are resolution-dependant.
That means the bitmap stores information on a given (fixed) number of pixels only.
If you want to rescale the image to a lower resolution, some pixels from the original grid will have to be discarded while rescaling to higher resolution means new pixels (not existing in the original grid) need to be created.
Down-scaling a bitmap (for example when creating a thumbnail) produces far less damages to the quality of the image as opposed to up-scaling it.
So let’s take a closer look at the up-scaling case: zooming-in a bitmap image (in order to get a better view on details or to enlarge the image) won’t reveal new information at all, because such information simply isn’t there, the bitmap contains information only for the given number of pixels and that’s it.
And beyond a certain threshold, each discretely visible pixel composing the original image will became a bigger and bigger rectangle, altering the image more and more.
To reduce (eliminating is impossible) this upscaling problem, new pixels are created based on original pixels color information and this process of estimating new intermediary values from known existing values is called “interpolation“.
There are several interpolation algorithms, 3 of which are most commonly used: “nearest-neighbour“, bilinear and bicubic interpolations.
Nearest-neighbour is is the most simple but less effective interpolation method, producing jagged edges (looking like stairs) on increased-sized image while bicubic is much more complex and generates smoother straight-lines and curves.
But in the end of the day, no matter their complexity, all algorithms are creating the new pixels by some more or less reasonable aproximation or “educated guess“, so to speak.

Resolution-dependency of bitmaps imposes for another important aspect to be discussed: screen and printer rendering.
This subject contains many confusing terms, some of them commonly misused, so we will dedicate our next blog article entirely to that matter, in an attempt to untangle frequent confusions.

A fourth thing about bitmaps is about converting a bitmap format to another one and is actually good news.
As they are all based on the same encoding principle (storing information on all pixels in the image) conversion between different bitmaps file formats is rather easy.
Most popular bitmap formats are non-proprietary (have open specifications) like PNG, TIFF, JPEG or GIF.
BMP format was invented by Microsoft but being a relatively simple, well documented and free of patents format, it became quite a common raster image format.

See you next week, folks!

Bogdan

Big Browser on April 26

Apple and Volkswagen team up on iBeetle, but it's no iCar Read article No-ads messaging app, WhatsApp, has more users than Twitter Read article Samsung Demos a Tablet Controlled by Your Brain Read article Better Testers Read article Remember when AMD could compete with Intel in both speed and price? Read article

Casual Friday on April 26

How To Scare Your Neighbors

Hi folks,

This week we are going to tell you a short story about LZW compression and how it influenced 3 widespread graphics file formats: TIFF, GIF and PNG.

The story begins in 1977 and 1978 when israeli computer scientists Abraham Lempel and Jacob Ziv published descriptions of lossless data compression algorithms named LZ-77 and LZ-78, respectively.
Terry Welch, an MIT trained computer scientist, further developed the LZ algorithms and, in 1984, he published the Lempel-Ziv-Welch (LZW) algorithm.

LZW compression became the first widely used universal data compression method on computers.
Being so influential, the “LZ-” based various algorithms became, of course, subject to patent protection in many countries.
For LZW, two patents were issued in the USA (but in other countries as well), the one filed by Welch himself being assigned to Sperry Corporation (Welch’s employer) in 1983.
Sperry Corporation became Unisys in 1986.

So.
Just to have a glimpse on the algorithm, consider this string: “The cat chases the mouse in the room”
The word “the” occurs 3 times.
Replace it by “!” and the string becomes: “! cat chases ! mouse in ! room”.
Add this association (“the” to “!”) to an index and you’ve reduced the length of the string from 36 to 30 characters.
Of course, things are way more complicated than this but the main idea is that the algorithm works very well when there are many repetitive data.
And image files usually contain lots of repetitive data.

In 1986, Aldus Corporation released the first official TIFF specification and in 1988 revision 5.0 was released, which included the ability to use LZW compression.
In 1987, CompuServe created the GIF file format, the GIF specification requiring the use of the LZW algorithm to compress the data stored in each GIF file.

The holder of Welch’s LZW patent, Unisys (which maintains a portfolio of about 1500 patents), was motivated to monetize this patent as much as possible and it had to be fast, too, as the patent availability was 20 years.
Overall, the total number of licensees was about 100, among which Adobe was licensed in 1990 for the use of LZW patent for PostScript and Aldus was licensed in 1991 for the use of the Unisys LZW patent in TIFF.
Licensed LZW in TIFF generated a wave of discontent so Aldus quickly introduced JPEG compression in TIFF (as of revision 6.0 in June 1992) but it had serious design errors and limitations, making things even worse (this was later corrected and replaced with a totally new TIFF/JPEG specification).

But it was not before 1993 that Unisys finally became aware that the GIF file format, very popular already, was using their patent-protected LZW algorithm.
And CompuServe had no clue they were infringing on LZW patent.
In 1994 Unisys and CompuServe came to an understanding which, for various reasons, generated a huge protest reaction, the matter being reported by many newspapers including the Time Magazine.
Many upset developers and users removed their GIF files or converted them to JPEG (yes, JPEG again, it’s royalty-free!).
But JPEG uses lossy compression, so one of the protesting groups, formed by leaders of the online graphics community, began working on a lossless and patent-free version of GIF.
Their efforts produced the PNG specification.

As an epilogue, by 2004 all Welch (ie, Unisys) LZW patents expired in all countries where they were issued (IBM patent on LZW expired by 2006).
TIFF specifications are now controled by Adobe and LZW can be freely used with it.
Adobe uses for PDF a LZ-77 based compression algorithm named “DEFLATE”.
GIF format is still popular.
PNG became one of the most important graphics file formats in the world.

In the upcoming articles we will provide some explanations on bitmaps as well as some short overviews on the most common bitmap file formats, including TIFF, GIF and PNG.

Bye for now!

Bogdan

Big Browser on April 19

Netflix says it’s dumping Microsoft Silverlight and embracing HTML5, someday Read article Hijacking airplanes with an Android phone Read article A non-mathematical explanation of one way functions Read article Silicon Valley Goes Hollywood: Top Coders Can Now Get Agents Read article Plan your digital afterlife with Google's Inactive Account Manager Read article

Casual Friday on April 19

A duck family crosses the street

What’s WIA

Hi folks,

After having presented previously the basic idea about scanner drivers as well as the bottom line on TWAIN, today we will try to shed some light on WIA.

Wikipedia definition reads: “Windows Image Acquisition (WIA; sometimes also called Windows Imaging Architecture) is a Microsoft driver model and application programming interface (API) for Microsoft Windows ME and later Windows operating systems that enables graphics software to communicate with imaging hardware such as scanners, digital cameras and digital video-equipment.”

So what does it mean from a user’s point of view ? And how is WIA different from TWAIN?

Well, to begin with, both TWAIN and WIA goal is to connect various imaging devices to various imaging softwares.

But…

-TWAIN is meant to be an industry standard (covering all image acquisition devices, for all Operating Systems) while WIA is a vendor (Microsoft) API provided to image acquisition device manufacturers for Windows Operating Systems only.

-WIA is said to offer better support when it comes to digital cameras while TWAIN has a strong orientation towards scaners.

-both TWAIN and WIA allow scanning operation control via dialog or programatically (with no dialog showed).
WIA uses a common dialog for all devices while TWAIN uses the dialog created by the device manufacturer.

-when scanning in duplex mode, TWAIN supports options for each side of the page while WIA uses the same settings for both sides.

-if the device manufacturer has created custom capabilities, TWAIN allows you to use them even though they don’t exist in the TWAIN specifications.

-WIA provides a transparent compatibility layer which allows TWAIN compatible applications to employ and use WIA-driver-based devices.

Remember that PaperScan supports both TWAIN and WIA so it provides users with universal image acquiring feature and full image and document processing power!

See you next week!

Bogdan

Big Browser on April 12

Blink. Chrome’s new rendering engine Read article WebKit Group Strikes Back: Let's Remove Chrome Read article PC Sales Decline In Q1 2013: The Worse in Last 20 Years, sais IDC Read article From touch displays to the Surface: a brief history of touchscreen technology Read article Apple New Campus Cost Seen Jumping to $5 Billion Read article

Casual Friday on April 12

You can't have them both