Posts Tagged ‘bitmap’

Briefly about GIF

Hi folks,

Today we will try to give you a quick overview on the GIF file format.

GIF format was introduced by CompuServe in 1987 and soon became widely adopted because it supported colours (unlike its CompuServe predecessor, RLE) and it was small-sized (thanks to the LZW lossless compression algorithm, we’ve told you a story about that in a previous article), allowing reasonably fast file transfers even for the slow, dial-up modems era.
CompuServe was a company way ahead of its time.
It was founded in Columbus, Ohio, in 1969 (the “prehistory” of the internet) by an insurance company (“Golden United Life Insurance”), initially to provide computing power for in-house optimization of the data-management needs of the mother company but shortly CompuServe became a serious business on its own, some naming it “the Google of the 70’s and 80’s”.
First they rented computing power time to other companies (when computers were idle), then a long series of pioneering achievements followed, here is an incomplete enumeration: one of the first companies to offer online services, world’s first online service offering internet connectivity, issued and hosted thousands of moderated forums, created a file transfer protocol, developed its own (proprietary) email services, hosted the first WYSIWYG email and forum posts content, pioneered the online shopping, created customized portals, pioneered online financial services, created an online chat system, introduced online games and published the first online newspaper and the first online comics.
And invented GIF, of course.

GIF (“Graphics Interchange Format”) is a bitmap graphics file format, its first version being referred to as GIF 87a, to indicate the year of release, 1987.
Two years and many enhancements later, GIF 89a version was introduced and it accounts for the vast majority of GIFs currently existing on the internet.
It provides image designers with 256 colors, allows multiple images storage for animation purposes (not in the sense of multipage, as in TIFF), provides controls for animation (animation speed and single/infinite loop option), allows on-or-off transparency (no intermediary gradients of transparency, as in PNG), provides lossless compression and introduced interlacing as an option.

Interlacing, when it concerns image files, means the image is gradually rendered by a browser but rendering starts immediately after download starts so, at first, the image looks unclear, like being out of focus, then, as its download continues, it becomes sharper and sharper, finally showing in full quality when image download is complete.
Previously described Progressive JPEG and the soon to be described PNG formats provide optional interlacing feature, too, but while in GIF and Progressive JPEG case interlacing changes the rendering order of the horizontal lines, the PNG format allows changing the order both horizontally and vertically.

As for compression, GIF uses the LZW lossless compression algoritm eversince it was created.
LZW was a perfect fit for its 8-bits-per-pixel color encoding (ie, maximum 256 colors displayed at one time in a frame) as well as for the animation feature, because GIF animation works by successively displaying bitmap images slightly different from one another (frames), their most part remaining unchanged so, being repetitive, most data are subject to very efficient compression by LZW.
GIF format isn’t commonly used for photos because compressing only 256 colors, even in a lossless manner, provides much poorer results than lossy compressing some 16 millions colors, like JPEG does.

Although the LZW algorithm was/is a major contributor to GIF’s popularity and widespread, it also gave it almost 10 years of torment (since about 1994 until about 2004) caused by the Unisys patent protection controversy.
But nowadays GIF format enjoys times of peace and recognition which will probably continue to last as long as people will keep their apetite for logos, icons, animated emoticons, low-res short clips, educational animated clips and so forth.
In 2012, this venerable format received public tribute from the Oxford Dictionaries USA subsidiary of Oxford University Press, the word “GIF” being granted the “Word of the Year” title, both as a noun and as a verb.
So now the question is: to GIF or not to GIF ?

We will try to answer this shakespearian question in a future article about which bitmap format fits best for which purpose, as PaperScan supports them all.

See you next week!


Big Browser on May 31

Apple 1 from 1976 signed by Wozniak sells for $650,000 Read article Game of Thrones Pirates Break BitTorrent Swarm Record Read article Google’s new “Moto X” superphone will spy on you 24/7, and you’ll like it Read article The Rise of the Mobile-Only User Read article Wary of Bitcoin? A guide to some other cryptocurrencies Read article

More on interpolation in bitmaps

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:

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!


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 ?"

Bitmaps, PPI and DPI

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 !


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

Bitmaps : some explanations

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!


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

Raster vs vector graphics images

Hi folks,

Today we are going to explain the differences between raster graphics and vector graphics for our general public.

Raster graphics images (or bitmaps) are based on the elementary concept of pixel.
A pixel (picture element) is the smallest controllable “dot” or “point of colour” or “unit” of a picture.
Raster images are made of pixels (ordered in arrays or matrices), each pixel having its own coordinates and color, similar to how a mosaic is made out of small pieces of colored glass.
Hence the name “bitmap” used for files : the image is encoded as a “map of bits” holding the position and colour of each and every pixel.
Therefore, a bitmap image is technically defined by its width and height (in pixels) and by the amount of bits-per-pixel used for storing colour information (“colour depth”).
Hence, the greater the quality (resolution ), the bigger the file size.
For that reason, bitmap files can be uncompressed or compressed (either lossy or lossless) resulting in a large variety (including sub-varieties) of popular file formats such as TIFF, BMP, PNG, JPEG, JBIG2, etc.

Vector graphics, on the other hand, do not store image information as pixels.
Instead, they contain mathematical expressions to generate and represent all details of an image.
In other words, it contains description on “how to draw” the image, instead of “what colour each pixel must have in order to obtain the image”.
This approach has 2 main advantages : the image quality remains highest regardless of zooming actions and the file size is about the same no matter the resolution of the image.
Vector graphics use complicated (and often proprietary) algorithms therefore such file formats are generally restricted for use only with the application that generated them (such as AI format for Adobe Ilustrator, .CDR format for CorelDraw, AutoCAD DXF, etc) but this is not an absolute rule.

Some file formats contain both pixel and vector data and, among them, one is of a particular interest because it is one of the most wide-spread formats in the world : PDF
We will talk about PDF basics in a dedicated series of articles in the near future as PDF format is a quite vast subject and it has a high importance and relevance in our products, too.

But for now let’s just add that raster images can be converted to vector through a process named “vectorisation” and also vector images can be converted to raster (bitmap), this process being known as “rasterisation“.

Our products are highly oriented towards raster graphics image formats and PDF as we are specialized in document imaging.
But powerful and efficient bitmap-to-PDF or rasterise-PDF-to-bitmap conversion features are particularly to be noted among our “convert any supported format to any other supported format” general feature.
You might be surprised what a complex technology lays sometimes behind the trivial “Save as …” option.




Wikipedia - VectorBitmapExample

Big Browser on March 30

.NET vs Windows 8 Read article Unlearn, young programmer! Read article Is Seattle the next Silicon Valley? (Infographic) Read article Linus Torvalds : The King of Geeks (And Dad of 3) Read article The .NET blog : Improving Launch Performance for Your Desktop Applications Read Article