Chapter 2: Images and MATLAB 2.1 Grayscale Images • MATLAB is a data analysis software package with powerful support for matrices and matrix operations Command window >> help imdemos Reads pixel values from an image >> w=imread(‘caeraman.tif’); >> figure, imshow(w); impixelinfo 1 2.1 Grayscale Images • figure Creates a figure on the screen A figure is a window in which a graphics object can be placed • imshow(w) displays the matrix w as an image • impixelinfo 2 turns on the pixel values in our figure They appear at the bottom of the figure in the form Pixel Info: (X, Y) intensity 2.1 Grayscale Images cameraman.tif 3 2.2 RGB Images >> a=imread(‘autumn.tif’); >> figure, imshow(a), impixelinfo 4 FIGURE 2.2 5 2.2 RGB Images • Multidimensional array >> size(a) 206 (rows) 345 (columns) 3 (pages) >> a(100,200,2) 25 >> a(100,200,1:3) or >> a(100,200,:) or function impixel >> impexel(a,200,100) 75 25 30 6 2.3 Indexed Color Images >> figure, imshow(‘forest.tif’), impixelinfo >> c=imread(‘forest.tif’); >> figure, imshow(c), impixelinfo 7 2.3 Indexed Color Images >> [c, cmap]=imread(‘forest.tif’); >> figure, imshow(c, cmap), impixelinfo • Information about Your Image • A great deal of information can be obtained with the imfinfo function >> imfinfo(‘forest.tif’) 8 2.4 Data Types and Conversions 9 2.4 Data Types and Conversions 10 2.5 Images Files and Formats • You can use MATLAB for image processing very happily without ever really knowing the difference between GIF, TIFF, PNG, etc. • However, some knowledge of the different graphics formats can be extremely useful in order to make a reasoned decision • Header information 11 This will, at the very least, include the size of the image in pixels (height and width) It may also include the color map, compression used, and a description of the image 2.5 Images Files and Formats • The imread and imwrite functions of MATLAB currently support the following formats JPEG These images are created using the Joint Photographics Experts Group compression method (ch14) TIFF A very general format that supports different compression methods, multiple images per file, and binary, grayscale, truecolor, and indexed images 12 2.5 Images Files and Formats GIF A venerable format designed for data transfer. It is still popular and well supported, but is somewhat restricted in the image types it can handle BMP Microsoft Bitmap format has become very popular and is used by Microsoft operating systems PNG, HDF, PCX, XWD, ICO, CUR 13 FIGURE 2.3 • A HEXADECIMAL DUMP FUNCTION 14 2.5.1 Vector versus Raster Images • We may store image information in two different ways Vector images: a collection of lines or vectors Raster images: a collection of dots • The great bulk of image file formats store images as raster information • As well as containing all pixel information, an image file must contain some header information 15 this must include the size of the image, but may also include some documentation, a color map, and the compression used e.g. PGM format was designed to be a generic format used for conversion between other formats 2.5.3 Microsoft BMP 16 2.5.3 Microsoft BMP 17 2.5.3 Microsoft BMP The image width is given by bytes 18–21; they are in the second row 42 00 00 00 To find the actual width, we reorder these bytes back-to-front: 00 00 00 42 Now we can convert to decimal (4×161)+(2×160) = 66 which is the image width in pixels The image height 1F 00 00 00 (1×161)+(F×160) = 31 18 2.5.4 GIF and PNG • GIF Colors are stored using a color map. The GIF specification allows a maximum of 256 colors per image GIF doesn’t allow binary or grayscale images, except as can be produced with RGB values The pixel data is compressed using LZW (Lempel-Ziv-Welch) compression The GIF format allows multiple images per file. This aspect can be used to create animated GIFs 19 2.5.4 GIF and PNG • PNG The PNG format has been more recently designed to replace GIF and to overcome some of GIF’s disadvantages Does not rely on any patented algorithms, and it supports more image types than GIF Supports grayscale, true color, and indexed images Moreover, its compression utility, zlib, always results in genuine compression 20 2.5.5 JPEG • The JPEG algorithm uses lossy compression, in which not all the original data can be recovered >> dumphex('football.jpg',4) ans = FF 00 03 07 21 D8 01 03 06 FF 00 03 08 E0 00 10 4A 46 49 46 00 01 01 00 00 01 ......JFIF...... 00 FF DB 00 43 00 03 02 02 03 02 02 03 .......C........ 04 03 03 04 05 08 05 05 04 04 05 0A 07 ................ 0C 0A 0C 0C 0B 0A 0B 0B 0D 0E 12 10 0D ................ 2.5.5 JPEG 22 2.5.6 TIFF • One of the most comprehensive image formats • Can store multiple images per file • Allows different compression routines and different byte orderings • Allows binary, grayscale, truecolor or indexed images, and opacity or transparency • An excellent format for data exchange 23 2.5.6 TIFF 24 2.5.6 TIFF • This particular image uses the little-endian byte ordering • The first image in this file (which is in fact the only image), begins at byte E0 01 01 00 • Because this is a little-endian file, we reverse the order of the bytes: 00 01 01 E0. This works out to 66016. 25 2.5.7 DICOM • DICOM (Digital Imaging and Communications in Medicine) • Like GIF, may hold multiple image files • May be considered as slices or frames of a three dimensional object • The DICOM specification is huge and complex. Drafts have been published on the World Wide Web 26 2.5.8 Files in MATLAB • Which writes the image stored in matrix X with color map map (if appropriate) to file filename with format fmt • Without the map argument, the image data is supposed to be grayscale or RGB e.g. >>imwrite(c,cmap,’forest.png’,’png’); >>imwrite(c,’forest1.png’,’png’); 27 Exercise • The following shows the hexadecimal dump of a BMP file: 42 4D 7E 05 02 00 00 00 00 00 36 04 00 00 28 00 00 00 23 01 00 00 C2 01 00 00 01 00 08 00 00 00 00 00 48 01 02 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 01 01 01 00 02 02 Determine the height and width of this image (in pixels) and state whether it is a grayscale or color image. 28