Matlab
Upcoming SlideShare
Loading in...5
×
 

Matlab

on

  • 993 views

 

Statistics

Views

Total Views
993
Views on SlideShare
993
Embed Views
0

Actions

Likes
0
Downloads
87
Comments
0

0 Embeds 0

No embeds

Accessibility

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Matlab Matlab Presentation Transcript

  • 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 {= 80} max(labeled(:))
  • Select and Display Pixels in a Region  Interactive selection grain = imcrop(labeled)  Colormap creation function RGB_label = label2rgb(labeled, @spring, ‘c’, ‘shuffle’); imshow(RGB_label); rect = [15 25 10 10]; roi = imcrop(labeled, rect)
  • 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 max(allgrains) { 695 }  Return the component label of a grain size biggrain = find(allgrains == 695) { 68 }  Mean grain size mean(allgrains)  Histogram (#bins) hist(allgrains, 20) { 249 }
  • 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  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)
  • 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 A = cat(4, A1, A2, A3, A4, A5)  Extract frames from a multiframe array FRM3 = MULTI(:, :, :, 3)  Display a frame 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  (brightens >1, darkens <1)  Preserves relative contrast I = imread(‘moon.tif’); J = immultiply(I, 1.2); imshow(I); figure, imshow(J)
  • 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;