Title: MATLAB
1MATLAB
2Introduction
- Collection of functions (MATLAB files) that
supports a wide range of image processing
operations - Documentation
- www.mathworks.com
3Read an Image
- Read in an image
- Validates the graphic format
- (bmp, hdf, jpeg, pcx, png, tiff, xwd)
- Store it in an array
- clear, close all
- I imread(pout.tif)
- X, map imread(pout.tif)
4Display an Image
5Check the Image in Memory
- lt Name, Size, Bytes, Class gt
- whos
- Name Size Bytes Class
- ans 291x240 69840 uint8 array
- Grand total is 69840 elements using 69840 bytes
6Histogram Equalization
- Histogram distribution of intensities
- figure, imhist(I)
- Equalize Image (contrast)
- I2 histeq(I)
- figure, imshow(I2)
- figure, imhist(I2)
7Histogram Equalization (cont.)
8Histogram Equalization (cont.)
9Write the Image
- Validates the extension
- Writes the image to disk
- imwrite(I2, pout2.png)
- imwrite(I2, pout2.png, BitDepth, 4)
10Morphological Opening
- Remove objects that cannot completely contain a
structuring element - Estimate background illumination
- clear, close all
- I imread(rice.tif)
- imshow(I)
- background imopen(I, strel(disk, 15))
- imshow(background)
11Morphological Opening (cont.)
12Subtract Images
- Create a more uniform background
- I2 imsubtract(I, background)
- figure, imshow(I2)
13Adjust the Image Contrast
- stretchlim computes low hight to be mapped into
bottom top - I3 imadjust(I2, stretchlim(I2), 0 1)
- figure, imshow(I3)
14Apply Thresholdingto the Image
- Create a binary thresholded image
- Compute a threshold to convert the intensity
image to binary - Perform thresholding creating a logical matrix
(binary image) - level graythresh(I3)
- bw im2bw(I3, level)
- figure, imshow(bw)
15Apply Thresholdingto the Image (cont.)
16Labeling Connected Components
- Determine the number of objects in the image
- Accuracy
- (size of objects, approximated background,
connectivity parameter, touching objects) - labeled, numObjects bwlabel(bw, 4)
- numObjects 80
- max(labeled())
17Select and DisplayPixels in a Region
- Interactive selection
- grain imcrop(labeled)
- Colormap creation function
- RGB_label label2rgb(labeled,
- _at_spring, c, shuffle)
- imshow(RGB_label)
- rect 15 25 10 10
- roi imcrop(labeled, rect)
18Object Properties
- Measure object or region properties
- graindata regionprops(labeled, basic)
- graindata(51).Area 296
- graindata(51).BoundingBox 142.5 89.5 24.0
26.0 - graindata(51).Centroid 155.3953 102.1791
- Create a vector which holds just one property for
each object - allgrains graindata.Area
- whos
19Statistical Propertiesof Objects
- max(allgrains) 695
- Return the component label of a grain size
- biggrain find(allgrains 695) 68
- Mean grain size
- mean(allgrains) 249
- Histogram (bins)
- hist(allgrains, 20)
20Statistical Propertiesof Objects (cont.)
21Storage Classes
- double (64-bit), uint8 (8-bit), and uint16
(16-bit) - Converting (rescale or offset)
- double
- im2double (automatic rescale and offsetting)
- RGB2 im2uint8(RGB1)
- im2uint16
- imapprox (reduce number of colors indexed
images)
22Image Types
- Index
- Data matrix (uint8, uint16, double)
- Colormap matrix (m x 3 array of double 0 1)
- Intensity (black 0, white ?)
- Binary (0, 1)
- B logical(uint8(round(A))) (logical flag on)
- B A (logical flag off)
- RGB (m x n x 3 of truecolor)
23Converting Image Types
- dither
- gray2ind
- grayslice
- im2bw
- ind2gray
- ind2rgb
- mat2gray
- rgb2gray
- rgb2ind
24Multiframe Image Arrays
- Same size, planes, colormap
- Store separate images into one multiframe array
- A cat(4, A1, A2, A3, A4, A5)
- Extract frames from a multiframe array
- FRM3 MULTI(, , , 3)
- Display a frame
- imshow(MULTI(, , , 7))
25Image Arithmetic
- imabsdiff
- imadd
- imcomplement
- imdivide
- imlincomb
- immultiply
- imsubtract
26Adding Images
- I imread(rice.tif)
- J imread(cameraman.tif)
- K imadd(I, J)
- imshow(K)
- Brighten an image results saturation
- RGB imread(flowers.tif)
- RGB2 imadd(RGB, 50)
- subplot(1, 2, 1) imshow(RGB)
- subplot(1, 2, 2) imshow(RGB2)
27Adding Images (cont.)
28Adding Images (cont.)
29Subtracting Images
- Background of a scene
- rice imread(rice.tif)
- background imopen(rice, strel(disk, 15))
- rice2 imsubtract(rice, background)
- imshow(rice), figure, imshow(rice2)
- Negative values
- imabsdiff
30Subtracting Images (cont.)
31Multiplying Images
- Scaling multiply by a constant
- (brightens gt1, darkens lt1)
- Preserves relative contrast
- I imread(moon.tif)
- J immultiply(I, 1.2)
- imshow(I)
- figure, imshow(J)
32Multiplying Images (cont.)
33Dividing Images (Ratioing)
- I imread(rice.tif)
- background imopen(I, strel(disk, 15))
- Ip imdivide(I, background)
- imshow(Ip, )
- Linear combination only truncates the final
result - K imlincomb(.5, I, .5, I2)
34Dividing Images (cont.)
35Coordinate Systems
- Pixel Coordinates
- Discrete unit (integer)
- (r, c)
- ? (1, 1)
- Spatial Coordinates
- Continuous unit
- (x, y)
- ? (0.5, 0.5)
123
36Non-default Spatial Coordinate System
- A magic(5)
- x 19.5 23.5
- y 8.0 12.0
- image(A, xData, x, yData, y), axis image,
colormap(jet(25))
37Spatial Transformations
- Map pixel locations in an input image to new
locations in an output image - Resizing
- Rotation
- Cropping
38Resizing Images
- Change the size of an image
- I imread(ic.tif)
- J imresize(I, 1.25)
- K imresize(I, 100 150)
- figure, imshow(J)
- figure, imshow(K)
39Resizing Images (cont.)
40Rotating Images
- Rotate an image by an angle in degrees
- I imread(ic.tif)
- J imrotate(I, 35, bilinear)
- imshow(I)
- figure, imshow(J)
41Rotating Images (cont.)
42Cropping Images
- Extract a rectangular portion of an image
- imshow ic.tif
- I imcrop