Matlab: Image Processing Toolbox

You might also like

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 42

MATLAB

Image Processing Toolbox

Introduction
Collection of functions (MATLAB files) that supports a wide range of image processing operations Documentation

www.mathworks.com

Read 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);

Display an Image

imshow(I)

Check the Image in Memory


< Name, Size, Bytes, Class >
whos
Name Size Bytes Class ans 291x240 69840 uint8 array Grand total is 69840 elements using 69840 bytes

uint8 uint16 double

[0, 255] [0, 65535] [0, 1]

Histogram Equalization
Histogram: distribution of intensities
figure, imhist(I)

Equalize Image (contrast)


I2 = histeq(I);
figure, imshow(I2) figure, imhist(I2)

Histogram Equalization (cont.)

Histogram Equalization (cont.)

Write the Image


Validates the extension Writes the image to disk
imwrite(I2, pout2.png); imwrite(I2, pout2.png, BitDepth, 4);

Morphological 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)

Morphological Opening (cont.)

Subtract Images
Create a more uniform background
I2 = imsubtract(I, background); figure, imshow(I2)

Adjust the Image Contrast


stretchlim computes [low hight] to be mapped into [bottom top]
I3 = imadjust(I2, stretchlim(I2), [0 1]); figure, imshow(I3)

Apply Thresholding to the Image


Create a binary thresholded image
1. 2.

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)

Apply Thresholding to the Image (cont.)

Labeling 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 max(labeled(:))
{= 80}

Select and Display Pixels in a Region


Interactive selection Colormap creation function
RGB_label = label2rgb(labeled, @spring, c, shuffle); imshow(RGB_label); rect = [15 25 10 10]; roi = imcrop(labeled, rect) grain = imcrop(labeled)

Object 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

Statistical Properties of Objects


Return the component label of a grain size
Mean grain size
mean(allgrains)
biggrain = find(allgrains == 695) { 68 }
{ 249 }

max(allgrains)

{ 695 }

Histogram (#bins)
hist(allgrains, 20)

Statistical Properties of Objects (cont.)

Storage 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)

Image Types
Index

Intensity (black = 0, white = ) Binary (0, 1)

Data matrix (uint8, uint16, double) Colormap matrix (m x 3 array of double [0 1])

RGB (m x n x 3 of truecolor)

B = logical(uint8(round(A))); B = +A; (logical flag off)

(logical flag on)

Converting Image Types


dither gray2ind grayslice im2bw ind2gray ind2rgb mat2gray rgb2gray rgb2ind

Multiframe Image Arrays


Same size, #planes, colormap Store separate images into one multiframe array

Extract frames from a multiframe array


Display a frame
FRM3 = MULTI(:, :, :, 3)

A = cat(4, A1, A2, A3, A4, A5)

imshow(MULTI(:, :, :, 7))

Image Arithmetic
imabsdiff imadd imcomplement imdivide imlincomb immultiply imsubtract

Adding 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);

Adding Images (cont.)

Adding Images (cont.)

Subtracting 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

Subtracting Images (cont.)

Multiplying Images
Scaling: multiply by a constant

Preserves relative contrast


I = imread(moon.tif); J = immultiply(I, 1.2); imshow(I); figure, imshow(J)

(brightens >1, darkens <1)

Multiplying Images (cont.)

Dividing 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);

Dividing Images (cont.)

Coordinate Systems
Pixel Coordinates

Discrete unit (integer) (r, c) = (1, 1) 123

Spatial Coordinates

Continuous unit (x, y) = (0.5, 0.5)

Non-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))

Spatial Transformations
Map pixel locations in an input image to new locations in an output image

Resizing Rotation Cropping

Resizing 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)

Resizing Images (cont.)

Rotating Images
Rotate an image by an angle in degrees
I = imread(ic.tif); J = imrotate(I, 35, bilinear); imshow(I) figure, imshow(J)

Rotating Images (cont.)

Cropping Images
Extract a rectangular portion of an image
imshow ic.tif I = imcrop;

You might also like