IMAGES_BASICS

few elements from Matlab programming related to basic image processing

Course homepage: http://cmp.felk.cvut.cz/cmp/courses/Y33ROV/

Contents

clear the workspace ...

... and update Matlab caches

clear all
rehash

image representation in Matlab

2- or 3-dimensional array

imrgb = imread('http://cmp.felk.cvut.cz/cmp/courses/Y33ROV/Y33ROV_ZS20082009/imgs/avbot2www.jpg');
imgray = rgb2gray(imrgb);
whos('imrgb','imgray')
  Name          Size                Bytes  Class    Attributes

  imgray      300x400              120000  uint8              
  imrgb       300x400x3            360000  uint8              

Display images

figure(1); clf
imshow(imrgb);
title('RGB image')
axis on
figure(2); clf
imshow(imgray)
title('Gray scale image')
axis on

Data types pitfalls

For some image arithmetics it will be needed to change the default integer data type into double.

Matlab DOES recognize data types, even in functions for displaying and saving. Be aware of it! This caused many confusions in past.

for type uint8 Matlab expects values

and for type double it expects

imrgb_float = double(imrgb);
imgray_float = double(imgray);
figure(3); clf
subplot(2,2,1); subimage(imrgb);
title('RGB image with integers');
subplot(2,2,2); subimage(imrgb_float);
title('RGB image with floats');
subplot(2,2,3); subimage(imgray);
title('gray image with integers');
subplot(2,2,4); subimage(imgray_float);
title('gray image with floats');

Saving images and figures

% saving bitmaps
imwrite(imgray,'examples_of_saving.png');

% saving (printing) graphics (figures)
% activate the proper figure
figure(3);
% save as png bitmap
print -dpng figure3.png
% or as function
% save as color encapsulated postscript
% eps file may get very big. However, it is very useful for publishing.
print('-depsc','figure3.eps')

Indexing of gray images

is pretty straightforward

% Subimage by specifing coordinates
imgray_sub = imgray(1:200,51:250);
% find all pixels where the intensity exceeds threshold
threshold = 128;
idx = imgray<threshold;
% indexing by a logical conditions
imgray_changed = imgray;
imgray_changed(idx) = 0;

figure(4); clf; imshow(imgray_sub); axis on;
figure(5); clf; imshow(imgray_changed); axis on;