Presentation is loading. Please wait.

Presentation is loading. Please wait.

A 24-bit depth.bmp file made in XVI32 This 2-by-2 image was handcrafted in XVI32 Bytes 1C-1D hex in the Info Header say that the image uses 24-bit (18.

Similar presentations


Presentation on theme: "A 24-bit depth.bmp file made in XVI32 This 2-by-2 image was handcrafted in XVI32 Bytes 1C-1D hex in the Info Header say that the image uses 24-bit (18."— Presentation transcript:

1 A 24-bit depth.bmp file made in XVI32 This 2-by-2 image was handcrafted in XVI32 Bytes 1C-1D hex in the Info Header say that the image uses 24-bit (18 hex ) colour depth So the file has no Colour Table So the pixel data start in byte 36 hex (where the colour table, if there had been one, would have started) Each pixel's colour is specified as three bytes - little-endian RGB Since each line has only two pixels (that is, 6 bytes), each line has two padding bytes (to reach a multiple of four bytes)

2 A 24-bit depth.bmp file made in XVI32 This handcrafted image open correctly in PhotoPlus and Opera

3 A 24-bit depth.bmp file made in PhotoShop This 2-by-2 image was exported from PhotoShop (not PhotoPlus) Like the handcrafted.bmp, bytes 1C- 1D hex in the Info Header say that the image uses 24-bit (18 hex ) colour depth So the file has no Colour Table –Instead each pixel has three bytes –The lines are padded (to reach a multiple of four bytes) However, the file contains two extra bytes which don't appear in the.bmp specification –This is why the file size is two bytes larger than the handcrafted file

4 A 24-bit depth.bmp file made in XVI32 Despite the divergence from the standard, the image opens correctly in PhotoPlus and Opera Again, it appears that some image processing software seem to ignore some parts of a.bmp file

5 Another 24-bit depth.bmp file made in PhotoShop This 4-by-4 image was exported from PhotoShop (not PhotoPlus) As before, this image uses 24-bit (18 hex ) colour depth and has no Colour Table –Each pixel has three bytes –The lines don't need padding (they are already a multiple of four bytes) However, the file contains two extra bytes which don't appear in the.bmp specification Again, some software seem to use a variant of the specification

6 Editing the 24-bit depth.bmp file made in PhotoShop Below, the 4-by-4 image exported from PhotoShop has just been edited with XVI32: –The extra two bytes have been removed –In the File Header, the declaration of the file length has been reduced by two The image has been stored in a file called test-4x4modified.bmp The file still opens in PhotoPlus and Opera

7 Absolutely basic 24-bit depth.bmp format We have seen that the common image display programs ignore much of the format for 24-bit-depth.bmp files The minimum we must do when making a 24-bit depth file is –assign the fixed values shown below to the bytes marked green –put the image width and depth in bytes 12-15 hex and 16-19 hex, respectively –specify the pixels from byte 36 hex onwards, 3 bytes per pixel, padding the lines if necessary to make each line a multiple of four bytes –put the overall file size in bytes 02-05 hex

8 Could we store this image in a smaller file? This image is 34x4 pixels in 24- bit.bmp format The RGB for each pixel in the 1 st and 3 rd rows is 89 88 87 hex The RGB for each pixel in the 2 nd and 4 th rows is CC CB CC hex The file contains 01 B6 hex bytes (438 bytes) Can you imagine a format in which the image would occupy a smaller file?

9 First attempt at a smaller format We could design a format in which the header stores just –the file size, –the image width –the image height The file would then occupy only 01 8C hex (396) bytes But, can you imagine an even smaller format?

10 Compress the repeated data We could reduce the pixel data by compressing repeated pixel data Repeated pixels are represented by a counter and an example pixel Since images can be up to FF FF FF FF hex pixels wide, we allow 4 bytes for each counter There are 32 bytes (00 00 00 20 hex ) of RGB = CC CA CB hex Followed by 32 bytes (00 00 00 20 hex ) of RGB = 89 88 87 hex Followed by 32 bytes (00 00 00 20 hex ) of RGB = CC CA CB hex Followed by 32 bytes (00 00 00 20 hex ) of RGB = 89 88 87 hex If we compressed like this, the file would occupy only 28 hex (40) bytes This is called lossless compression - no information is lost

11 How many colours are in the image below? It is available at http://www.cs.ucc.ie/j.bowen/cs1107/widgets/red32x4.bmp Download it, open it in Photoplus and check how many colours it contains

12 Compressing unperceived colour differences The 32x4 pixel image below actually contains four colours But most people can perceive only one We could save space by storing only one colour This is called lossy compression, because some information is lost

13 The raw image in.bmp format The image has 34x4 pixels Here it in 24-bit.bmp format The RGB colours are FF0000, FE0000, FD0000 and FC0000 The file contains 01B6 hex bytes (438 bytes)

14 Using lossy compression with our own format In.bmp format, this 32x4 pixel image occupies 01 B6 hex bytes (438 bytes) But using lossy compression with the file format we designed earlier (header contains just file size, image width and image height), the file would occupy only 13 hex (19) bytes The four original RGB colours are FF0000, FE0000, FD0000 and FC0000 but we store just an average colour, say FC0000 We say there are 32*4=128=80 hex pixels with this colour We store this information as 80 00 00 00 followed by 00 00 FC

15 Some standard formats BMP, as we have seen –allows up to 24 bits per pixel –does not compress pixel data, but does support a 256-colour palette GIF –allows up to 8 bits per pixel so it is not good for storing high quality photographs that have lots of different colours –Uses lossless compression to reduce file size so very good for storing images that contain no more than 256 colours - no edges are blurred JPEG (JPG) –JPEG is actually a form of lossy compression, offering several degrees of compression –Often used for compressing photographs although sharp edges in original images are blurred by lossiness –JPEG is used in several formats JPG/EXIF (Exchangeable image file format) - used by digital cameras JPG/JFIF (Jpeg file interchange format) - often used on web pages

16 Example photo in some standard formats Thumbnail below shows smaller version of a bigger image The full-sized image is 4752x3168 pixels In.bmp format, it occupies 45,163,064 bytes In.gif format, it occupies 8,426,776 bytes In.jpg format, it occupies 10,062,187 bytes In a more aggressively compressed.jpg format, it occupies only 568,954 bytes If you want to view them, the files are available with URLs like this http://www.cs.ucc.ie/j.bowen/cs1107/widgets/trees/treesMoreCompression.jpg Open the files with XVI32 to see some of the header details


Download ppt "A 24-bit depth.bmp file made in XVI32 This 2-by-2 image was handcrafted in XVI32 Bytes 1C-1D hex in the Info Header say that the image uses 24-bit (18."

Similar presentations


Ads by Google