CMPS1371 Introduction to Computing for Engineers IMAGES.

Post on 19-Jan-2016

227 views 3 download

Transcript of CMPS1371 Introduction to Computing for Engineers IMAGES.

CMPS1371Introduction to

Computing for Engineers

IMAGES

Images

Images are considered as matrices whose elements are the pixel values of the image

M rows

N columns

RED BLUE

GREEN

Images

Matlab has two main ways to represent an image that consists of M x N pixels:

RGB or “true color” image: uses an MxNx3 array where the third index contains the RGB components

Indexed color image: uses an MxN array containing integers that are the row entries in a “colormap” that defines the actual color.

RGB Color Image

• RGB: MxNx3 8-bit integer array

M r

ows

N columns

RED

BLUEGREEN Each in range 0→255

[215, 43, 62]

Divide by 255 => [0.842, 0.175, 0.246]

Indexed Color Image

• Indexed Color: MxN array with values that index into an NCx3 colormap array that contains the actual RGB colors.

M r

ows

N columns 3

256

row

s

143RED

BLUE

GREEN

[0.142, 0.375, 0.846]

Reading Image Files

Matlab can read and write data in most common image file formats:

jpeg, tif, bmp, png, etc…

A = imread(filename, fmt); reads file into an RGB image

[A,map] = imread(filename, fmt); reads file into an indexed image

Loading an Image

>> a = imread(‘picture.jpg’);

>> imshow(a);

Image Characteristics

Image (=matrix) size:size(a): 384 512 3

R G B

384

512

RED plane

A(:,:,[2 3]) = 0;

imshow(a);

GREEN plane

A(:,:,[1 3]) = 0;

imshow(a);

BLUE plane

A(:,:,[1 2]) = 0;

imshow(a);

Geometric Manipulation of Images

Let’s rearrange the pixels in the image:

<< Left/right = a(:end:-1:1,:);

<< image(Left/right)

Reversing the rows

Original

Geometric Manipulation of Images

Let’s rearrange the pixels to be upside down:

<< updown = a(end:-1:1,:,:);

<< image(updown)

Original

Reversing the columns

Geometric Manipulation of Images

Suppose we split an image into left and right halves and then replace one half with a mirror image of the other

Original

Splitting Code

function Anew = splitMirror(A)% ANEW = splitMirror(A)% Splits an image in half and % creates a mirror of the left half[Nr,Nc]=size(A);Anew=A;c2=round(Nc/2); % find midpointfor row=1:Nr for col=(c2+1):Nc cx=Nc+1-col; Anew(row,col)=A(row,cx); endend

Cute Dog Picture

Lake Scene

Collage Design

Cute Dog cropped to fitLake picture shrunk to

match

800

600

800

600

All borders 40 pixels wide

2 * 800 + 5 * 40

600

+ 4

* 4

0

R = 150G = 100B = 50

R = 255G = 255B = 200

Collage

Image Arithmetic

Adding ‘imadd’: Brighten an image

Subtracting ‘imsubtract’

Multiplying ‘immultiply’:

Multiply two images multiply image by constant:

brightens > 1, darkens < 1 Dividing

‘imdivide’

Spatial Transformations

Resizing ‘imresize’: changes the size of the

image Rotation

‘imrotate’: rotates the image by given angle

Cropping ‘imcrop’: Extract a rectangular part of

the image