Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
114 views

Digital Image Processing Matlab Basics

This document provides an overview of Matlab basics for digital image processing. It discusses how Matlab allows for numerical calculations and visualization without complicated programming. Key aspects covered include Matlab variables being multidimensional matrices, different image types (intensity, binary, indexed, RGB), reading and writing images, displaying images, and basic matrix indexing and operations for digital image representation and processing. Examples are provided to demonstrate various matrix indexing techniques.

Uploaded by

Alamgir khan
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
114 views

Digital Image Processing Matlab Basics

This document provides an overview of Matlab basics for digital image processing. It discusses how Matlab allows for numerical calculations and visualization without complicated programming. Key aspects covered include Matlab variables being multidimensional matrices, different image types (intensity, binary, indexed, RGB), reading and writing images, displaying images, and basic matrix indexing and operations for digital image representation and processing. Examples are provided to demonstrate various matrix indexing techniques.

Uploaded by

Alamgir khan
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 46

Digital Image Processing

Matlab Basics
Matlab
  It allows one to perform numerical calculations, and visualize the results
without the need for complicated and time consuming programming.

 Every variable in Matlab is a multidimensional matrix.

 Highly modular.

 No memory allocation is necessary.

 Matlab enables its own garbage collection.

 Simple interface for complex mathematical concepts.

 Enables OO Programming.
Getting Help
>> help help (explain how to get help)
>> helpbrowser / doc (open the online Matlab documentation)
>> help images (list of all commands in the Image Processing Toolbox)
>> demo (supply various guide videos)
>> lookfor read (display list of functions with ‘read’ in the name or help
text)
>> type imread (display contents of file)
>> help imread (function name + % block)
>> doc imread (function documentation in help browser)
 Using [tab] is useful to auto-complete function
names and variables
Matlab Basics
 Digital image representation :
2D function f(x,y) -> finite discrete quantities

 Coordinate Conventions:
img(r,c)
r–rows (height)
c–cols (width)
 >> size(img)

 The first pixel:

img(1,1)
Image Types
• Intensity images
scaled to represent intensities (uint8 – [0,255], double [0,1])

• Binary images
logical array of 0s and 1s

• Indexed images
Look up table [x, map]

• RGB images
truecolor, array of (m*n*3)

 Checking the image type : isind, isbw, isgray, isrgb


Converting image types: rgb2ind, rgb2gray, gray2ind, ind2gray,….
Reading Images
>> f = imread(‘filename’);
filename is a string including the file type (jpg, tiff,…)
; is used for suppressing output

>> [height, width] = size(f);

>> whos f display additional information about an array


Name Size Bytes Class
f 512x512x3 786432 uint8 array
Grand total is 786432 elements using 786432 byte
Displaying Images
 >> imshow(f)
display the image f according to its type

 >> imshow(f, [low high])


display as black all values less than ‘low’ and as white all values greater or
equal to ‘high’ (in grayscale images)

 >> imshow(f, [])


set low and high as the minimal and maximal values of array f (in grayscale images)

 >> impixelinfo
display intensity value of individual pixel interactively

 >> figure(2), imshow(g)


Open a new figure before displaying the image (the default – using the same figure)
Writing Images
 >> imwrite(f, ‘filename’)
f is an image array
‘filename’ must include the file format (tif, jpg, bmp,..)
 >> k = imfinfo(‘test1.jpg’)
Filename: 'test1.jpg'
FileModDate: '22-Oct-2005 13:07:36'
FileSize: 3464
Format: 'jpg'
FormatVersion: ''
Width: 256
Height: 256
BitDepth: 24
ColorType: 'truecolor'
FormatSignature: ''
Comment: {}

The answer is a structure variable with different fields: k.Width


Data Classes

Converting between types : B = data_class_name(A)


for example: B = double(A)
Conversions
 When converting between data classes and types it is
important to keep the value range for each data class
>> img = double(img)/255;
>> img = im2double(img);
Variable Decleration and Memory
issues
 Matlab variables do not need to be declared
in advance.
 ‘ans’ is a defined variable containing the last
result
 Memory is allocated and freed automatically.

>> A = [1 2 3; 2 3 4; 3 4 5];
>> A = 0.0005
Vector indexing
 row vector (1xN)
>> v = [1 3 5 7]; (elements separated by space or comma (,))
>> v(2) = 3;
 column vector (MX1)
>> w = [1;3;5;7]; (elements separated semi-comma (;))
>> w = v’ (transpose operation)
w=
1
3
5
7
 To Access blocks of elements we use colon notation
>> v(2:4)
ans =
357
>> v(1:end) end is the last element in the vector
>> v(:) produce a column vector
>> v(1:2:end) enables steps (jumps)
>> v(end:-2:1) steps can be negative as well
 Vector can be used as an index into another vector
>> v([1 3 4])
ans =
1 5 7
Matrix Indexing
 Image – 2D array, matrix
 Matrix can be represented as a sequence of row vectors
>>A = [1 2 3; 4 5 6; 7 8 9]
A=
1 2 3
4 5 6
7 8 9
 To access an element, 2 indexes are used – row index and column index
>> A(2,3)  6
>> A(:,3)
3
6
9
>> A(2,:)
456
>> a(1:2,1:3)
123
456

>> B = A;
>> B(:,3) = 0
B=
1 2 0
4 5 0
7 8 0
 Using vectors to index into a matrix provide a powerful tool for element selection
A([1 3], [2 3])
2 3
8 9
.Matrix Indexing Cont
 Image – 2D array, matrix
 A matrix is also represented as a long vector
>> A = [1 2 3; 4 5 6; 7 8 9]
A=
1 2 3
4 5 6
7 8 9
 To access sequential elements in a matrix a single index can also be used:
>> A(1:9)
A=
1 4 7 2 5 8 3 6 9

 Sometimes changing the shape of the matrix is of use:


>> reshapse(A(1:2,1:3), 3, 2)
A=
1 5
4 3
2 6

 The size of the output matrix is the size of the index matrix!

14
Matrix Addressing
 A very useful approach is to use logical matrix as an index
to the matrix
>> D = logical([1 0 0; 0 0 1; 0 0 0])
=D
0 0 1
1 0 0
0 0 0
A(D) >>
= ans
1
6
 The use of column operation on a matrix produce a single
column vector from the matrix (on a column by column
basis). It is very useful for image operations like sum or max
>> s = sum(f(:)) (equivalent to: sum(sum(f)))

15
Operators
 Arithmetical operators have their algebraic meaning:
>> A = [1 2 3; 4 5 6; 7 8 9];
>> A + A
ans =
2 4 6
8 10 12
14 16 18

>> A * [1 1 1]
??? Error using ==> times
Matrix dimensions must agree

>> A * [1 1 1]’
ans =
6
15
24

16
.Operators cont
 Vector multiplication depends on the order of the two
vectors
>> [1 2 3] * [2 3 4]
??? Error using ==> times
Matrix dimensions must agree

>> [1 2 3] * [2 3 4]’
ans =
20

>>[1 2 3]’ * [2 3 4]
ans =
2 3 4
4 6 8
6 9 12

17
.Operators cont
 Element by element operators - .* .^ ./
>> [1 2 3] .* [2 3 4]
ans =
2 6 12

>> [1 2 3] .^ 2
ans =
1 4 9

>> [1 2 3] ./ (2:2:6)
ans =
0.5000 0.5000 0.5000

18
Array dimensions
 Matlab arrays can be of any dimensions
 It is useful to operate on specific dimension of the
array, for example:
>> height = size(i,1);

 Usually we deal with 2D arrays but there are cases


we need to address higher dimensions (such as
color images)
>> i(200:300, 200:400, 3)

 To get the number of dimensions of an array


>> d = ndims(f)

19
Standard Arrays
Generating simple array enables trying out simple
ideas and test the syntax of a function during
development
>> zeros(m,n)
>> ones(m,n)
>> true(m,n)
>> false(m,n)
>> magic(m)
>> rand(n)
>> randn(n)
>> pascal(n)

20
Additional Operators
 Arithmetic operators (numeric computations)
◦ matrix arithmetic (linear algebra A*B)
◦ array arithmetic (element by element A.*B)
+, -, ./, .^,:..
 Relational operators (compare)
◦ Compare corresponding elements of arrays of equal
dimensions (<, >,<=, >=, ==, ~=) or an array to scalar
 Logical operators can operate both on logical
and numeric data (and: &, or: |, not: ~)
true: logical 1 or non-zero numeric quantity
false: logical or numerical 0
 logical functions : any, all

21
Examples - Matrix indexing
>> i = imread('sowrds0040.bmp');
>> i = rgb2gray(double(i)/255);
>> imshow(i)

22
Examples - Matrix indexing
>> i = imread('sowrds0040.bmp');
>> i = rgb2gray(double(i)/255);
>> imshow(i)

23
Examples - Matrix indexing
>> i = imread('sowrds0040.bmp');
>> i = rgb2gray(double(i)/255);
>> imshow(i)
>> s = i(end:-1:1, :);
>> imshow(s);

24
Examples - Matrix indexing
>> i = imread('sowrds0040.bmp');
>> i = rgb2gray(double(i)/255);
>> imshow(i)
>> s = i(end:-1:1,:);
>> imshow(s);

25
Examples - Matrix indexing
>> i = imread('sowrds0040.bmp');
>> i = rgb2gray(double(i)/255);
>> imshow(i)
>> s = i(end:-1:1,:);
>> imshow(s);
>> a = i(200:300,200:400);
>> imshow(a);

26
Examples - Matrix indexing
>> i = imread('sowrds0040.bmp');
>> i = rgb2gray(double(i)/255);
>> imshow(i)
>> s = i(end:-1:1,:);
>> imshow(s);
>> a = i(200:300,200:400);
>> imshow(a);

27
Examples - Matrix indexing
>> i = imread('sowrds0040.bmp');
>> i = rgb2gray(double(i)/255);
>> imshow(i)
>> s = i(end:-1:1,:);
>> imshow(s);
>> a = i(200:300,200:400);
>> imshow(a);
>> t = i(1:2:end, 1:2:end);
>> imshow(t);

28
Examples - Matrix indexing
>> i = imread('sowrds0040.bmp');
>> i = rgb2gray(double(i)/255);
>> imshow(i)
>> s = i(end:-1:1,:);
>> imshow(s);
>> a = i(200:300,200:400);
>> imshow(a);
>> t = i(1:2:end, 1:2:end);
>> imshow(t);

29
Examples - Matrix indexing
>> i = imread('sowrds0040.bmp');
>> i = rgb2gray(double(i)/255);
>> imshow(i)
>> s = i(end:-1:1,:);
>> imshow(s);
>> a = i(200:300,200:400);
>> imshow(a);
>> t = i(1:2:end, 1:2:end);
>> imshow(t);
>> i(200:300, 200:400) = 0;
>> imshow(i);

30
Examples - Matrix indexing
>> i = imread('sowrds0040.bmp');
>> i = rgb2gray(double(i)/255);
>> imshow(i)
>> s = i(end:-1:1,:);
>> imshow(s);
>> a = i(200:300,200:400);
>> imshow(a);
>> t = i(1:2:end, 1:2:end);
>> imshow(t);
>> i(200:300, 200:400) = 0;
>> imshow(i);

31
Examples - Matrix indexing
>> i = imread('sowrds0040.bmp');
>> i = rgb2gray(double(i)/255);
>> imshow(i)
>> s = i(end:-1:1,:);
>> imshow(s);
>> a = i(200:300,200:400);
>> imshow(a);
>> t = i(1:2:end, 1:2:end);
>> imshow(t);
>> i(200:300, 200:400) = 0;
>> imshow(i);
>> imshow(i/2);

32
Examples - Matrix indexing
>> i = imread('sowrds0040.bmp');
>> i = rgb2gray(double(i)/255);
>> imshow(i)
>> s = i(end:-1:1,:);
>> imshow(s);
>> a = i(200:300,200:400);
>> imshow(a);
>> t = i(1:2:end, 1:2:end);
>> imshow(t);
>> i(200:300, 200:400) = 0;
>> imshow(i);
>> imshow(i/2);

33
Examples - Matrix indexing
>> i = imread('sowrds0040.bmp');
>> i = rgb2gray(double(i)/255);
>> imshow(i)
>> s = i(end:-1:1,:);
>> imshow(s);
>> a = i(200:300,200:400);
>> imshow(a);
>> t = i(1:2:end, 1:2:end);
>> imshow(t);
>> i(200:300, 200:400) = 0;
>> imshow(i);
>> imshow(i/2);
>> imshow((i>0.8).*i);

34
Examples - Matrix indexing
>> i = imread('sowrds0040.bmp');
>> i = rgb2gray(double(i)/255);
>> imshow(i)
>> s = i(end:-1:1,:);
>> imshow(s);
>> a = i(200:300,200:400);
>> imshow(a);
>> t = i(1:2:end, 1:2:end);
>> imshow(t);
>> i(200:300, 200:400) = 0;
>> imshow(i);
>> imshow(i/2);
>> imshow((i>0.8).*i);

35
M-Files
M-Files can be one of two:
 Scripts – A series of commands that are performed on the
global scope.
No input and output variables.

 Functions – A set of commands performed over a given input,


with a required output.
Functions have a scope of their own.
(accessing the global scope can be done by defining the
variables to be ‘globals’).

In both types – the m-file must be in the current directory, or in


a previously added path (added with the function addpath)

36
M-Function Programming

Components of m files:
 Function definition line
function [out1 out2] = name(in1, in2, in3)

 H1 line - a single comment line that follows the function


definition line.
% SQUARESUM compute the sum of the square of the matrix elements

This line appears when user writes


>> help function_name

>> lookfor keyword - display all functions where the keyword


appeared in H1 line

37
M-Function Programming
 Components of m files (cont.):

 Help Text - text block following the H1 line without any


blank line in between the two

 Function body – the Matlab code

 Comments – lines starting with %


Note: – add short and clear comments to your code!

38
Flow control
 if, else, elseif, end
 switch, case, otherwise, end
 return
 try...catch…end

 for i=start:increment:end, end


 while, end
 break (used with for or while)
 continue (used with for or while)

Try not to use


39
Code Optimization – Vectorizing Loops

 1D indexing
Convert for / while loops to equivalent vector or matrix
operations

x = 0:k-1 >>
>> for x = 1:k
;ff = 5*sin(x/(2*pi)) >>
ff(x) = 5*sin((x-1)/(2*pi));
end

40
Code optimization –
vectorizing loops
 2D indexing
meshgrid – convert rows vectors to arrays C and R
that can be used for evaluating function with two
variables
>> for r = 1:10
>> for c = 1:10 meshgrid(1:c, 1:r) = ]C, R[ >>
>> b(r,c) = r.^2+ c.^2 ;h = R.^2 + C.^2 >>
>> end
>> end

Vectorzing code accelerates the computation significantly


For Example: using meshgrid runs on the order of
30 times faster the same computation based on loops
on Image of 512x512 pixels

41
Code Optimization –
Pre-allocating large arrays
 Simple way to improve code execution is to
pre-allocate the size of the arrays in the
program.

>> f = zeros(1024);

42
Cell arrays and Structures
 Cell array is multidimensional array whose
elements are copies of other arrays
>> c = {‘gauss’,[1 0;0 1], 3}
>> c{1}
ans =
gauss
 Structures are similar to cell arrays (allow grouping
of a collection of dissimilar data) but they
addressed by fields rather than by numbers
>> params.nimgs = 100;
>> params.jump = 2;
>> params.baseStr = ‘testImg’

43
Arguments
 Matlab arguments are always passed by value
 Checking whether an argument exist
>> exist(a,’var’)
 Checking number of arguments to the
functions
>> nargin, nargout, nargchk
 Getting variable number of arguments
>>varargin, varargout

44
Gui
>> guide (Graphic User Interface Development
Environment)
Start the GUI Layout Editor. Guide create
◦ fig file: complete description of the gui elements
and their arrangements

◦ gui m-file: the code that controls the gui


operations, initializations functions, callback
functions

45
?Any Questions

You might also like