4.Image Processing Using Matlab - Helpful Commands

Embed Size (px)

Citation preview

  • 7/27/2019 4.Image Processing Using Matlab - Helpful Commands

    1/12

    Some useful functions to get started with image processing using MATLAB

    imread

    Read image from graphics file

    Syntax

    A = imread(filename, fmt)

    Description

    A = imread(filename, fmt) reads a grayscale or color image from the file specified by the string filename.

    If the file is not in the current folder, or in a folder on the MATLAB path, specify the full pathname.

    The text string fmt specifies the format of the file by its standard file extension. For example, specify 'gif'

    for Graphics Interchange Format files. To see a list of supported formats, with their file extensions, use

    the imformats function. If imread cannot find a file named filename, it looks for a file named

    filename.fmt.

    The return value A is an array containing the image data. If the file contains a grayscale image, A is an M-

    by-N array. If the file contains a truecolor image, A is an M-by-N-by-3 array. For TIFF files containing

    color images that use the CMYK color space, A is an M-by-N-by-4 array.

    The file must be in the current directory or on the MATLAB path.

    imwrite

    Write image to graphics file

    Syntax

    imwrite(A,filename,fmt)

    Description

    imwrite(A,filename,fmt) writes the image A to the file specified by filename in the format specified by

    fmt.

    A can be an M-by-N (grayscale image) or M-by-N-by-3 (truecolor image) array, but it cannot be an empty

    array. For TIFF files, A can be an M-by-N-by-4 array containing color data that uses the CMYK color

  • 7/27/2019 4.Image Processing Using Matlab - Helpful Commands

    2/12

    space. For GIF files, A can be an M-by-N-by-1-by-P array containing grayscale or indexed images RGB

    images are not supported.

    filename is a string that specifies the name of the output file.

    REMEMBER: The file must be in the current directory or on the MATLAB path.

    imshow

    Display image

    Syntax

    imshow(I)

    Description

    imshow(I) displays the grayscale image I.

    imshow(I,[low high]) displays the grayscale image I, specifying the display range for I in [low high]. The

    value low (and any value less than low) displays as black; the value high (and any value greater than

    high) displays as white. Values in between are displayed as intermediate shades of gray, using the

    default number of gray levels. If you use an empty matrix ([]) for [low high], imshow uses [min(I(:))max(I(:))]; that is, the minimum value in I is displayed as black, and the maximum value is displayed as

    white.

    imshow(RGB) displays the truecolor image RGB.

    imshow(BW) displays the binary image BW. imshow displays pixels with the value 0 (zero) as black and

    pixels with the value 1 as white.

    imresize

    Resize image

    Syntax

    B = imresize(A, scale)

  • 7/27/2019 4.Image Processing Using Matlab - Helpful Commands

    3/12

    B = imresize(A, [mrows ncols])

    Description

    B = imresize(A, scale) returns image B that is scale times the size of A. The input image A can be a

    grayscale, RGB, or binary image. If scale is between 0 and 1.0, B is smaller than A. If scale is greater than

    1.0, B is larger than A.

    B = imresize(A, [mrows ncols]) returns image B that has the number of rows and columns specified by

    [mrows ncols]. Either NUMROWS or NUMCOLS may be NaN, in which case imresize computes the

    number of rows or columns automatically to preserve the image aspect ratio.

    mat2gray

    Convert matrix to grayscale image

    Syntax

    I = mat2gray(A, [amin amax])

    I = mat2gray(A)

    Description

    I = mat2gray(A, [amin amax]) converts the matrix A to the intensity image I. The returned matrix I

    contains values in the range 0.0 (black) to 1.0 (full intensity or white). amin and amax are the values in A

    that correspond to 0.0 and 1.0 in I.

    I = mat2gray(A) sets the values of amin and amax to the minimum and maximum values in A.

    graythresh

    Global image threshold using Otsu's method

    Syntax

    level = graythresh(I)

  • 7/27/2019 4.Image Processing Using Matlab - Helpful Commands

    4/12

    [level EM] = graythresh(I)

    Description

    level = graythresh(I) computes a global threshold (level) that can be used to convert an intensity image

    to a binary image with im2bw. level is a normalized intensity value that lies in the range [0, 1].

    im2bw

    Convert image to binary image, based on threshold

    Syntax

    BW = im2bw(I, level)

    Description

    BW = im2bw(I, level) converts the grayscale image I to a binary image. The output image BW replaces all

    pixels in the input image with luminance greater than level with the value 1 (white) and replaces all

    other pixels with the value 0 (black). Specify level in the range [0,1]. This range is relative to the signal

    levels possible for the image's class. Therefore, a level value of 0.5 is midway between black and white,

    regardless of class. To compute the level argument, you can use the function graythresh. If you do not

    specify level, im2bw uses the value 0.5.

    If the input image is not a grayscale image, im2bw converts the input image to grayscale, and then

    converts this grayscale image to binary by thresholding.

    hist

    Histogram plot

    GUI Alternatives

    To graph selected variables, use the Plot Selector in the Workspace Browser.

    Syntax

    n = hist(Y)

  • 7/27/2019 4.Image Processing Using Matlab - Helpful Commands

    5/12

    n = hist(Y,x)

    Description

    A histogram shows the distribution of data values.

    n = hist(Y) bins the elements in vector Y into 10 equally spaced containers and returns the number of

    elements in each container as a row vector. If Y is an m-by-p matrix, hist treats the columns of Y as

    vectors and returns a 10-by-p matrix n. Each column of n contains the results for the corresponding

    column of Y. No elements of Y can be complex or of type integer.

    n = hist(Y,x) where x is a vector, returns the distribution of Y among length(x) bins with centers specified

    by x. For example, if x is a 5-element vector, hist distributes the elements of Y into five bins centered onthe x-axis at the elements in x, none of which can be complex. Note: use histc if it is more natural to

    specify bin edges instead of centers.

    Removing Noise from Images

    The MATLAB toolbox provides the imnoise function, which you can use to add various types of noise

    to an image. The examples in this section use this function.

    imnoise

    Add noise to image

    Syntax

    J = imnoise(I,type)

    J = imnoise(I,type,parameters)

    J = imnoise(I,'gaussian',m,v)

    J = imnoise(I,'poisson')

    J = imnoise(I,'salt & pepper',d)

    J = imnoise(I,'speckle',v)

  • 7/27/2019 4.Image Processing Using Matlab - Helpful Commands

    6/12

    Description

    J = imnoise(I,type) adds noise of a given type to the intensity image I. type is a string that can have one

    of these values.

    'gaussian' Gaussian white noise with constant mean and variance

    'localvar' Zero-mean Gaussian white noise with an intensity-dependent variance

    'poisson' Poisson noise

    'salt & pepper' On and off pixels

    'speckle' Multiplicative noise

    J = imnoise(I,type,parameters) Depending on type, you can specify additional parameters to imnoise. All

    numerical parameters are normalized; they correspond to operations with images with intensities

    ranging from 0 to 1.

    J = imnoise(I,'gaussian',m,v) adds Gaussian white noise of mean m and variance v to the image I. The

    default is zero mean noise with 0.01 variance.

    J = imnoise(I,'poisson') generates Poisson noise from the data instead of adding artificial noise to the

    data. If I is double precision, then input pixel values are interpreted as means of Poisson distributions

    scaled up by 1e12. For example, if an input pixel has the value 5.5e-12, then the corresponding output

    pixel will be generated from a Poisson distribution with mean of 5.5 and then scaled back down by 1e12.

    If I is single precision, the scale factor used is 1e6. If I is uint8 or uint16, then input pixel values are used

    directly without scaling. For example, if a pixel in a uint8 input has the value 10, then the corresponding

    output pixel will be generated from a Poisson distribution with mean 10.

    J = imnoise(I,'salt & pepper',d) adds salt and pepper noise to the image I, where d is the noise density.

    This affects approximately d*numel(I) pixels. The default for d is 0.05.

    J = imnoise(I,'speckle',v) adds multiplicative noise to the image I, using the equation J = I+n*I, where n is

    uniformly distributed random noise with mean 0 and variance v. The default for v is 0.04.

  • 7/27/2019 4.Image Processing Using Matlab - Helpful Commands

    7/12

    Removing Noise By Linear Filtering

    You can use linear filtering to remove certain types of noise. Certain filters, such as averaging or

    Gaussian filters, are appropriate for this purpose. For example, an averaging filter is useful for removing

    grain noise from a photograph. Because each pixel gets set to the average of the pixels in its

    neighborhood, local variations caused by grain are reduced.

    Removing Noise By Median Filtering

    Median filtering is similar to using an averaging filter, in that each output pixel is set to an average of the

    pixel values in the neighborhood of the corresponding input pixel. However, with median filtering, the

    value of an output pixel is determined by the median of the neighborhood pixels, rather than the mean.

    The median is much less sensitive than the mean to extreme values (called outliers). Median filtering is

    therefore better able to remove these outliers without reducing the sharpness of the image. The

    medfilt2 function implements median filtering.

    The following example compares using an averaging filter and medfilt2 to remove salt and pepper noise.

    This type of noise consists of random pixels' being set to black or white (the extremes of the data range).

    In both cases the size of the neighborhood used for filtering is 3-by-3.

    Read in the image and display it.

    I = imread('filename.extension');

    imshow(I)

    Add noise to it and display it.

    J = imnoise(I,'salt & pepper',0.02);

    imshow(J)

    Filter the noisy image with an averaging filter and display the results.

    K = filter2(fspecial('average',3),J)/255;

    imshow(K)

  • 7/27/2019 4.Image Processing Using Matlab - Helpful Commands

    8/12

    Now use a median filter to filter the noisy image and display the results. Notice that medfilt2 does a

    better job of removing noise, with less blurring of edges.

    L = medfilt2(J,[3 3]);

    imshow(L)

    Deblurring with the Wiener Filter

    Use the deconvwnr function to deblur an image using the Wiener filter. Wiener deconvolution can

    be used effectively when the frequency characteristics of the image and additive noise are known, to atleast some degree. In the absence of noise, the Wiener filter reduces to the ideal inverse filter.

    deconvwnr

    Deblur image using Wiener filter

    Syntax

    J = deconvwnr(I,PSF,NSR)

    Description

    J = deconvwnr(I,PSF,NSR) deconvolves image I using the Wiener filter algorithm, returning deblurred

    image J. Image I can be an N-dimensional array. PSF is the point-spread function with which I was

    convolved. NSR is the noise-to-signal power ratio of the additive noise. NSR can be a scalar or an array of

    the same size as I. Specifying 0 for the NSR is equivalent to creating an ideal inverse filter.

    fft

    Discrete Fourier transform

    Syntax

    Y = fft(X)

    Y = fft(X,n)

  • 7/27/2019 4.Image Processing Using Matlab - Helpful Commands

    9/12

    Y = fft(X,[],dim)

    Y = fft(X,n,dim)

    Definition

    The functions Y=fft(x) and y=ifft(X) implement the transform and inverse transform pair given for vectors

    of length by:

    where

    is an Nth root of unity.

    Description

    Y = fft(X) returns the discrete Fourier transform (DFT) of vector X, computed with a fast Fourier

    transform (FFT) algorithm.

    If X is a matrix, fft returns the Fourier transform of each column of the matrix.

    If X is a multidimensional array, fft operates on the first nonsingleton dimension.

    Y = fft(X,n) returns the n-point DFT. If the length of X is less than n, X is padded with trailing zeros to

    length n. If the length of X is greater than n, the sequence X is truncated. When X is a matrix, the length

    of the columns is adjusted in the same manner.

    Y = fft(X,[],dim) and Y = fft(X,n,dim) applies the FFT operation across the dimension dim

  • 7/27/2019 4.Image Processing Using Matlab - Helpful Commands

    10/12

    dct

    Discrete cosine transform (DCT)

    Syntax

    y = dct(x)

    y = dct(x,n)

    Description

    y = dct(x) returns the unitary discrete cosine transform of x

    where

    N is the length of x, and x and y are the same size. If x is a matrix, dct transforms its columns. The series

    is indexed from n = 1 and k = 1 instead of the usual n = 0 and k = 0 because MATLAB vectors run from 1

    to N instead of from 0 to N- 1.

    y = dct(x,n) pads or truncates x to length n before transforming.

    The DCT is closely related to the discrete Fourier transform. You can often reconstruct a sequence very

    accurately from only a few DCT coefficients, a useful property for applications requiring data reduction.

    dct2 2-D discrete cosine transform

    Syntax B = dct2(A)

    B = dct2(A,m,n)

    Description B = dct2(A) returns the two-dimensional discrete cosine transform of A. The matrix B is

    the same size as A and contains the discrete cosine transform coefficients B(k1,k2).

  • 7/27/2019 4.Image Processing Using Matlab - Helpful Commands

    11/12

    B = dct2(A,m,n) pads the matrix A with 0's to size m-by-n before transforming. If m or n

    is smaller than the corresponding dimension of A, dct2 truncates A.

    Detecting Edges Using the edge Function

    edge returns a binary image containing 1's where edges are found and 0's elsewhere.

    The most powerful edge-detection method that edge provides is the Canny method. The Canny method

    differs from the other edge-detection methods in that it uses two different thresholds (to detect strong

    and weak edges), and includes the weak edges in the output only if they are connected to strong edges.

    This method is therefore less likely than the others to be fooled by noise, and more likely to detect true

    weak edges.

    edge

    Find edges in grayscale image

    Syntax

    BW = edge(I) BW = edge(I,'sobel')

    BW = edge(I,'sobel',thresh)

    BW = edge(I,'prewitt')

    BW = edge(I,'prewitt',thresh) BW = edge(I,'roberts')

    BW = edge(I,'roberts',thresh)

    BW = edge(I,'canny')

    BW = edge(I,'canny',thresh)

    The following example illustrates the power of the Canny edge detector by showing the results of

    applying the Sobel and Canny edge detectors to the same image:

  • 7/27/2019 4.Image Processing Using Matlab - Helpful Commands

    12/12

    Read image and display it.

    I = imread('coins.png'); imshow(I)

    Apply the Sobel and Canny edge detectors to the image and display them.

    BW1 = edge(I,'sobel'); BW2 = edge(I,'canny');

    imshow(BW1) imshow(BW2)