Digital Media Lecture 4: Bitmapped images: Compression & Convolution Georgia Gwinnett College...

Preview:

Citation preview

Digital Media

Lecture 4: Bitmapped images:Compression & Convolution

Georgia Gwinnett CollegeSchool of Science and Technology

Dr. Jim Rowan

Bitmapped image compression

Consider this image:

With no compression...

RGB encoding => 64 x 3 = 192 bytes

64 pixels

A Side Note

We’ve been talking about RGB encoding for images…

So…How many different colors can you make if using a 24 bit RGB color scheme?

2**24 = 16,777,216 different colors

Bitmapped image compression

64 pixels

Color table representation:

With 2 colors:

#0 - 0 100 100#1 - 255 0 0

0 0 0 0 0 0 0 00 1 1 1 1 1 1 00 1 1 1 1 1 1 00 1 1 1 1 1 1 00 1 1 1 1 1 1 00 1 1 1 1 1 1 00 1 1 1 1 1 1 00 0 0 0 0 0 0 0

-6 bytes for the color table-64 X 1 = 64 / 8 = 8 bytesfor the pointer table

6 + 8 = 14 bytes total

Bitmapped image compressionRun length encoding:

64 pixels

9RGB 6RGB 2RGB 6RGB 2RGB 6RGB 2RGB 6RGB 2RGB 6RGB 2RGB 6RGB 9RGB

9(0,0,255) 6(255,0,0) 2(0,0,255)6(255,0,0) 2(0,0,255) 6(255,0,0)2(0,0,255) 6(255,0,0) 2(0,0,255)6(255,0,0) 2(0,0,255) 6(255,0,0)9(0,0,255)

= 52 bytes

Bitmapped image compressionRun length encoding:

RLE gets its advantage when there are a number of pixels next to one another that are the same color

This advantage is dependent on the CONTENT of the image.

Why?

Could RLE result in a larger image?

How?

Bitmapped image compressionRun length encoding:

Consider this image:

64 pixels

RLE compression...

1RGB 1RGB 1RGB 1RGB1RGB... 1RGB 1RGB 1RGB

-> 256 bytes

Bitmapped image compressionLossless or Lossy?

24 bit RGB encoding is lossless

What about table encoding?Lossless and lossyIt depends on…?

What about RLE encoding?Lossless

Bitmapped image compressionJPEG

JPG is Lossy

Best suited for natural photographsFine details with continuous tone changes

JPEG takes advantage of the fact that humans don’t perceive the effect of high frequencies accurately

High frequency components are associated with abrupt changes in image intensity… like a hard edge

JPEG finds these high frequency components by treating the image as a matrix

Using the Discrete Cosine Transform (DCT) to convert an array of pixels into an array of coefficients

The DCT is expensive computationally so the image is broken into 8x8 pixel squares and applied to each of the squares

Bitmapped image compressionJPEG

The high frequency components do not contribute much to the perceptible quality of the image

So JPEG encodes these frequencies at different quantization levels…

The low frequency components are with greater detail than the high frequency changes.

==>JPEG uses more storage space for the more visible elements of an image

Bitmapped image compressionJPEG

Why use a lossy compression technique?

It is effective for the kinds of images it is intended for ==> 95% reduction in size

But it suffers from artifacts like edges that blur...

WHY?

Can the difference be seen?

HMMMmmmm…

Bitmapped image compressionJPEG

Bitmapped image compressionOriginal file zoomed in

Bitmapped image compressionComparing tiff & jpeg

Bitmapped image compressionJPEG

Again…Why use a lossy compression technique?

For this example:The original .tiff file is 1,300,000 bytesThe jpeg file is only 156,000 bytes

When viewing the two full size images you cannot see the minute differences

Only zooming in to the image shows the artifacts caused by jpeg compression

Side Note!To make matters worse…

Humans are a mess!

The human vision system is very complexUpside downSplit- left side of eye to right side of brainRight side of eye to left side of brainCones and rods not uniformly distributedCones and rods are upside down resulting in blind spots in each eye that we just ignore!

Partially responsible for making lossy techniques work… you don’t see what you think you see ==>

Optical illusions

Humans are a mess!

See Additional Class Information: Illusions

Bitmapped image compressionreturning to

Resizing issues…

Resizing issues

Here the original 4x4 imageis doubled in both dimensions to 8x8 by adding pixels

But this example is pretty simple because the original is all one color…

Resizing issues

If you double both dimensionsyou have to add pixels...But what color?

?

Well, the answer is… it depends!

?? ?

Resizing issues

If you double both dimensionsyou have to add pixels...But what color?

?

The simplest approach would be to copy the color but…You can consider the colors that surround the original pixel

?? ?

Resizing issues

If you cut each of the dimensions in half you remove…(8x8 -> 4x4)=> 64 - 16 = 48 pixels

You have to remove 3/4 of the pixels!

64 pixels 16 pixels

How do you decide which pixels to remove?

Resizing issues

One answer: throw them away!Here it works... but onlybecause it is a solid color

1

2

3

Resizing issues

But what if it is multi-colored?You can use the information in the surrounding pixels to influence the remaining pixel

How do you do this?Remember… it’s just numbers in there!

1

2

3

Convolution

Underlies much of bitmapped image processing including downsizingand filters like blur and sharpen

1

2

3

Blur filter: Convolution under the sheets

Convolution: How it works

Images as piles of numbers: Art and Mathematics Collide! (of Bezier Curves and Convolution)

Images are collections of numbers

Convolution: How it works

Convolution uses a convolution matrix (in this case 3 X 3) toprocess the original image one pixel at a time

Convolution: How it works

Resulting in a completely new image… But how?

Convolution: How it works

0/9 3/9 0/9

0/9 3/9 0/9

0/9 3/9 0/9

255` 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

0 0 0 0 0 0 0

255 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

Convolution: How it works

0/9 3/9 0/9

0/9 3/9 0/9

0/9 3/9 0/9 X

255` 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

0 0 0 0 0 0 0

255 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

Convolution: How it works0/9 3/9 0/9

0/9 3/9 0/9

0/9 3/9 0/9

X

255` 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

0 0 0 0 0 0 0

255 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

Convolution: How it works0/9 3/9 0/9

0/9 3/9 0/9

0/9 3/9 0/9

255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

0 0 0 0 0 0 0

255 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

0/9 x 255 + 3/9 x 255 + 0/9 x 255 +0/9 x 255 + 3/9 x 255 + 0/9 x 255 + 0/9 x 255 + 3/9 x 255 + 0/9 x 255 =

0 + 85 + 0 +0 + 85 + 0 +0 + 85 + 0 = 255

Convolution: How it works

0/9 3/9 0/9

0/9 3/9 0/9

0/9 3/9 0/9

255

X

255 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

0 0 0 0 0 0 0

255 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

Convolution: How it works

0/9 3/9 0/9

0/9 3/9 0/9

0/9 3/9 0/9

255

170

255 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

0 0 0 0 0 0 0

255 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

0/9 x 255 + 3/9 x 255 + 0/9 x 255 +0/9 x 255 + 3/9 x 255 + 0/9 x 255 + 0/9 x 0+ 3/9 x 0 + 0/9 x 0=

0 + 85 + 0 +0 + 85 + 0 +0 + 0 + 0 = 170

Convolution: How it works

0/9 3/9 0/9

0/9 3/9 0/9

0/9 3/9 0/9

255

170

X

255 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

0 0 0 0 0 0 0

255 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

Convolution: How it works

0/9 3/9 0/9

0/9 3/9 0/9

0/9 3/9 0/9

255

170

170

255 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

0 0 0 0 0 0 0

255 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

0/9 x 255 + 3/9 x 255 + 0/9 x 255 +0/9 x 0 + 3/9 x 0+ 0/9 x 0+ 0/9 x 255 + 3/9 x 255 + 0/9 x 255 =

0 + 85 + 0 +0 + 0 + 0 +0 + 85+ 0 = 170

Convolution: How it works

0/9 3/9 0/9

0/9 3/9 0/9

0/9 3/9 0/9

255

170

170

X

255 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

0 0 0 0 0 0 0

255 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

Convolution: How it works

0/9 3/9 0/9

0/9 3/9 0/9

0/9 3/9 0/9

255

170

170

170

255 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

0 0 0 0 0 0 0

255 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

0/9 x 0 + 3/9 x 0 + 0/9 x 0 +0/9 x 255 + 3/9 x 255 + 0/9 x 255 + 0/9 x 255 + 3/9 x 255 + 0/9 x 255 =

0 + 0 + 0 +0 + 85+ 0 +0 + 85+ 0 = 170

Convolution: How it works

0/9 3/9 0/9

0/9 3/9 0/9

0/9 3/9 0/9

255

170

170

170

X

255 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

0 0 0 0 0 0 0

255 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

Convolution: How it works

0/9 3/9 0/9

0/9 3/9 0/9

0/9 3/9 0/9

255

170

170

170

255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

0 0 0 0 0 0 0

255 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

0/9 x 255 + 3/9 x 255+ 0/9 x 255 +0/9 x 255 + 3/9 x 255 + 0/9 x 255 + 0/9 x 255 + 3/9 x 255 + 0/9 x 255 =

0 + 85 + 0 +0 + 85 + 0 +0 + 85+ 0 = 255

Convolution: How it works

255 255 255 255 255

170 170 170 170 170

170 170 170 170 170

170 170 170 170 170

255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

0 0 0 0 0 0 0

255 255 255 255 255 255 255

255 255 255 255 255 255 255

255 255 255 255 255 255 255

Convolution: How it works

In short…– the math is simple– there’s a lot of multiplication– there’s a lot of addition– just keeping track of where you are is

really the only issue here!

Recommended