You are on page 1of 38

Chng 5

C bn v
x l nh s trong Matlab
2 25/05/2014 Lp trnh tnh ton
Trong Matlab, mi hnh nh thng c biu din
bng mt ma trn hai chiu.
Mi mt phn t ca ma trn tng ng vi 1 pixel
(mt phn t nh picture element biu din bng 1 im
trn mn hnh). im nh gc trn bn tri ng vi hng
1, ct 1.
Matlab lu gi cc hnh nh di mt trong cc kiu d
liu sau: logical, uint8, uint16, double.
Ngi dng c th s dng cc php ton v cc thao
tc c bn trn ma trn tc ng ln d liu hnh nh vi
iu kin cc thao tc ny chp nhn cc kiu d liu trn.
5.1 Gii thiu
3 25/05/2014 Lp trnh tnh ton
5.2 Cc kiu hnh nh trong Matlab
nh ch s (indexed images)
nh c biu din bi hai ma trn:
- Ma trn d liu X: thuc kiu uint8, uint16 hoc
double.
- Ma trn mu (bn mu) map: kch thc m3, cc
phn t c kiu double c gi tr thuc khong [0,1]. Mi
hng ca ma trn xc nh cc thnh phn red, green,
blue trong tng s m mu c s dng trong nh.
Gi tr ca mt phn t trong ma trn d liu cho bit mu
ca im nh l mu nm hng no trong ma trn
mu.
4 25/05/2014 Lp trnh tnh ton
5.2 Cc kiu hnh nh trong Matlab (tt.)
nh ch s (indexed images) (tt.)
X(143,219) = 124

map(124,:) =
0.8392 0.9373 1.0000
5 25/05/2014 Lp trnh tnh ton
5.2 Cc kiu hnh nh trong Matlab (tt.)
nh sng (intensity images)
nh c biu din bi mt ma trn hai chiu, trong gi
tr ca mi phn t cho bit sng (hay mc xm) ca
im nh .
- Ma trn thuc kiu uint8, uint16 hoc double.
- Gi tr nh nht (0) ng vi mu en.
- Gi tr ln nht (255 hoc 65535 hoc 1 ty kiu d
liu l uint8, uint16 hay double) ng vi mu trng.
nh biu din theo kiu ny cn gi l nh trng en
hoc nh grayscale.
6 25/05/2014 Lp trnh tnh ton
5.2 Cc kiu hnh nh trong Matlab (tt.)
nh sng (intensity images) (tt.)
I(143,219) = 0.9151
7 25/05/2014 Lp trnh tnh ton
nh nh phn (binary images)
5.2 Cc kiu hnh nh trong Matlab (tt.)
nh c biu din bi mt ma trn hai chiu, thuc kiu
logical.
- 0 ng vi mu en.
- 1 ng vi mu trng.
BW(143,219) = 1

8 25/05/2014 Lp trnh tnh ton
nh RGB (RGB images)
5.2 Cc kiu hnh nh trong Matlab (tt.)
nh c biu din bi mt ma trn ba chiu m n 3.
- m n: kch thc nh theo pixels.
- Ma trn ny nh ngha cc thnh phn mu red,
green, blue cho mi im nh, cc phn t c th thuc
kiu uint8, uint16 hay double.
nh biu din theo kiu ny cn gi l nh truecolor.
Cc file nh hin nay thng s dng 8 bit cho mt thnh
phn mu, ngha l mt 24 bit cho mi im nh (khong
16 triu mu)
9 25/05/2014 Lp trnh tnh ton
5.2 Cc kiu hnh nh trong Matlab (tt.)
nh RGB (RGB images) (tt.)
RGB(143,219,1) = 0.8392

RGB(143,219,2) = 0.9373

RGB(143,219,3) = 1.0000
10 25/05/2014 Lp trnh tnh ton
Chuyn i gia cc kiu nh
Tn hm C php M t
dither
dither(RGB,map)
dither(I)
To nh nh phn t nh trng
en I hoc to nh indexed t
nh RGB v ma trn mu map
bng phng php dithering
gray2ind
[X, map] = gray2ind(I,n)
[X, map] = gray2ind(BW,n)
Chuyn nh nh phn BW
hoc nh intensity I thnh nh
indexed thng qua ma trn
tuyn tnh gray(n)
grayslice
X = grayslice(I,n)
X = grayslice(I,v)
Chuyn nh trng en I thnh
nh indexed X bng cch ly
ngng. Cc gi tr ngng
c xc nh bi vector v
hoc bi n (khi cc gi tr
ngng l 1/n, 2/n, , (n-1)/n)
5.2 Cc kiu hnh nh trong Matlab (tt.)
11 25/05/2014 Lp trnh tnh ton
5.2 Cc kiu hnh nh trong Matlab (tt.)
Chuyn i gia cc kiu nh (tt.)
Tn hm C php M t
im2bw
BW = im2bw(I,level)
BW = im2bw(X,map,level)
BW = im2bw(RGB,level)
Chuyn nh trng en, nh
indexed hoc nh RGB thnh
nh nh phn BW bng cch
ly ngng bi level
ind2gray I = ind2gray(X,map)
Chuyn nh indexed X vi ma
trn mu map thnh nh trng
en I
ind2rgb RGB = ind2rgb(X,map)
Chuyn nh indexed X vi ma
trn mu map thnh nh RGB
12 25/05/2014 Lp trnh tnh ton
5.2 Cc kiu hnh nh trong Matlab (tt.)
Chuyn i gia cc kiu nh (tt.)
Tn hm C php M t
mat2gray I = mat2gray(A,[amin amax])
To nh trng en t ma trn
A; amin, amax thuc [0 (en),
1 (trng)].
rgb2gray I = rgb2gray(RGB)
Chuyn nh RGB thnh nh
trng en I
rgb2ind
[X, map] = rgb2ind(RGB,n)
X = rgb2ind(RGB,map)
[X, map] = rgb2ind(RGB,tol)
Chuyn nh RGB thnh nh
indexed [X, map]:
TH1: n<=65535
TH2: mi pixel c xp x
n mu gn ging nht trong
bn mu map
TH3: tol [0,1]
13 25/05/2014 Lp trnh tnh ton
5.3 c v ghi cc d liu nh
c d liu nh
Hm imread c cc file nh vi bt k cc nh dng nh
bit hin nay v lu li di dng mt ma trn biu din
nh trong Matlab.
C php:
A = imread(filename,fmt)
[X,map] = imread(filename,fmt)
filename: chui xc nh tn file cn c cng vi ng dn
(nu file ny khng nm trong th mc hin hnh)
fmt: chui cho bit nh dng ca nh, VD: bmp, gif, jpg,

14 25/05/2014 Lp trnh tnh ton
Ghi d liu nh
Hm imwrite lu mt nh biu din bng mt ma trn trong
Matlab thnh mt file nh di mt trong cc nh dng
nh bit.
C php:
imwrite(A,filename,fmt)
imwrite(X,map,filename,fmt)
5.3 c v ghi cc d liu nh (tt.)
15 25/05/2014 Lp trnh tnh ton
Xem thng s mt file nh
>> info = imfinfo(filename,fmt)
Cc thng tin ca nh c lu di dng cu trc (struct)
Cc thuc tnh (field) c c khi gi hm imfinfo.

5.3 c v ghi cc d liu nh (tt.)
Tn thuc tnh M t
Filename Chui cha tn file
FileModDate Chui cho bit ngy hiu chnh file gn y nht
FileSize Mt s nguyn ch kch thc file (n v byte)
16 25/05/2014 Lp trnh tnh ton

5.3 c v ghi cc d liu nh (tt.)
Xem thng s mt file nh (tt.)
Tn thuc tnh M t
Format Chui cho bit nh dng ca nh
FormatVersion
Chui hoc s cho bit tn phin bn ca nh
dng
Width S nguyn ch chiu rng nh (pixels)
Height S nguyn ch chiu cao nh (pixels)
BitDepth S nguyn cho bit s bits trn mt pixel
ColorType
Chui cho bit kiu nh: truecolor, grayscale
hoc indexed
17 25/05/2014 Lp trnh tnh ton
5.4 Chuyn i gia cc kiu d liu
S dng cc hm chuyn kiu cho cc ma trn biu din
nh:
im2double
im2uint8
im2uint16
Lu :
- Khi chuyn t kiu d liu nhiu bit sang kiu d liu t bit hn,
mt s thng tin chi tit v bc nh ban u s b mt.
- Khng phi lc no cng c th chuyn kiu d liu i vi kiu
nh indexed. chuyn, phi dng hm imapprox gim s mu
cn biu din nh xung.
18 25/05/2014 Lp trnh tnh ton
5.5 Cc php ton s hc c bn trn nh
Tn hm C php M t
imabsdiff z = imabsdiff(x,y)
Tr mi phn t ca y t phn
t tng ng ca x, sau
tr v tr tuyt i ca hiu
imadd z = imadd(x,y,out_class)
Cng hai nh hoc cng mt
nh vi mt hng s,
out_class l chui xc nh
kiu d liu ca tng
imcomplement im2 = imcomplement(im) Ly b ca nh im
Imdivide z = imdivide(x,y)
Chia cc phn t ca nh x
cho phn t tng ng ca y,
cc gi tr phn s c lm
trn.
19 25/05/2014 Lp trnh tnh ton
5.5 Cc php ton s hc c bn (tt.)
Tn hm C php M t
imlincomb
z = imlincomb(k1,a1,
k2,a2, , kn,an,
k,out_class)
Ly t hp tuyn tnh ca cc
nh:
z=k1*a1+k2*a2++kn*an+k
immultiply z = immultiply(x,y)
Nhn hai nh hoc nhn mt
nh vi mt hng s, nu kt
qu b trn th s c gii
hn li trong tm cho php
imsubstract im2 = imsubstract(x,y)
Tr hai nh hoc tr mt nh
vi mt hng s, nu kt qu
b trn th s c gii hn li
trong tm cho php
20 25/05/2014 Lp trnh tnh ton
V d 1: Chng ln hai nh trn mt nn chung
I = imread(rice.png); % c nh th nht
J = imread(cameraman.tif); % c nh th hai
K = imadd(I,J ); % Cng hai nh
imshow(I) % Hin th nh th nht
imshow(J ) % Hin th nh th hai
imshow(K) % Hin th nh tng
5.5 Cc php ton s hc c bn (tt.)
21 25/05/2014 Lp trnh tnh ton
5.5 Cc php ton s hc c bn (tt.)
V d 2: Lm tng sng nh bng php cng vi hng s
I = imread('peppers.png');
J = imadd(I,50);
subplot(1,2,1), imshow(I)
subplot(1,2,2), imshow(J )
22 25/05/2014 Lp trnh tnh ton
5.5 Cc php ton s hc c bn (tt.)
V d 3: Lm tng sng nh bng php nhn vi hng s
I = imread('peppers.png');
J = immultiply(I,1.5);
subplot(1,2,1), imshow(I)
subplot(1,2,2), imshow(J )
23 25/05/2014 Lp trnh tnh ton
5.6 Cc hm hin th hnh nh
Hm image(x, y, C): hin th hnh nh biu din bi ma
trn C
m n
ln trc ta hin hnh; x, y l vector xc nh
v tr ca cc pixel C(1,1) v C(m,n) trong h trc hin
hnh.

V d:

load mandrill
image(X)
colormap(map)


24 25/05/2014 Lp trnh tnh ton
5.6 Cc hm hin th hnh nh (tt.)
Hm imagesc: tng t hm image, ngoi tr vic d liu
nh s co gin (scale) s dng ton b bn mu hin
hnh.

V d:
I = imread('eight.tif');
subplot(2,2,1); imagesc(I);
axis([0 400 0 400]);
colormap(gray);
subplot(2,2,2); imagesc(100,100,I);
axis([0 400 0 400]);
colormap(gray);
subplot(2,2,3); imagesc(I);


25 25/05/2014 Lp trnh tnh ton
5.6 Cc hm hin th hnh nh (tt.)
Hm imshow: to i tng ha thuc loi image v
hin th nh trn mt figure t ng thit lp cc gi tr ca
cc i tng image, axes v figure th hin hnh nh.
S dng hm ny trong cc trng hp cn cc cng c ch
gii, h tr in n c sn trong figure.

Hm imtool: hin th hnh nh trn Image Tool, l mt
mi trng tch hp hin th hnh nh v biu din mt
s tc v x l hnh nh ph bin.



26 25/05/2014 Lp trnh tnh ton
V d:
imshow('board.tif')
imtool('board.tif')
5.6 Cc hm hin th hnh nh (tt.)
Hin th nh bng
imshow
Hin th nh bng
imtool
27 25/05/2014 Lp trnh tnh ton
5.7 Cc php bin i hnh hc
Php ni suy nh
Ni suy l qu trnh c lng gi tr ca nh ti mt im nm
gia hai pixels c gi tr bit.
Cc phng php ni suy:
- Phng php ln cn gn nht (Nearest-neighbor
interpolation): pixel mi s c gn gi tr ca pixel cha
im tng ng ca n trong nh ban u.
- Phng php song tuyn tnh (Bilinear interpolation): pixel
mi s c gn l trung bnh c trng s ca cc pixel trong
mt ln cn kch thc 22.

28 25/05/2014 Lp trnh tnh ton
5.7 Cc php bin i hnh hc (tt.)
Php ni suy nh (tt.)
- Phng php bicubic (Bicubic interpolation): pixel mi s
c gn l trung bnh c trng s ca cc pixel trong mt ln
cn kch thc 44.
Php ni suy l c s thc hin cc php bin i hnh hc
khc nh: thay i kch thc nh, quay nh, ...
29 25/05/2014 Lp trnh tnh ton
Thay i kch thc nh
>>B = imresize(A,m,method)
To nh B c kch thc gp m ln nh gc A. Method:
phng php ni suy s dng: nearest, bilinear,
bicubic; mc nh l nearest.

>>B = imresize(A,[mrows mcols],method)
mrows, mcols: s hng, s ct ca nh mi.

5.7 Cc php bin i hnh hc (tt.)
30 25/05/2014 Lp trnh tnh ton
V d:
[X,map] = imread('trees.tif');
[Y,newmap] = imresize(X,map,0.5);
imshow(Y,newmap);
imshow(X,map);

5.7 Cc php bin i hnh hc (tt.)
Thay i kch thc nh (tt.)
31 25/05/2014 Lp trnh tnh ton
Php quay nh
5.7 Cc php bin i hnh hc (tt.)
>>B = imrotate(A,angle,method,bbox)
A: nh gc.
angle: gc quay
method: phng php ni suy, mc nh l 'nearest'
bbox: kch thc ca nh mi: 'crop' hoc 'loose'. Mc
nh l 'loose' (tng kch thc nu cn)

32 25/05/2014 Lp trnh tnh ton

5.7 Cc php bin i hnh hc (tt.)
Php quay nh (tt.)
V d:
[X,map] = imread('trees.tif');
I = ind2rgb(X,map);
J = imrotate(I,45);
K= imrotate(I,45,'crop');
imshow(I)
imshow(J )
imshow(K)

33 25/05/2014 Lp trnh tnh ton
Trch xut nh
5.7 Cc php bin i hnh hc (tt.)
Cch 1:
>>X2 = imcrop(X,map,rect) %nh indexed
>>A2 = imcrop(A,rect) %nh grayscale hoc RGB
rect = [xmin ymin width height] vi (xmin,ymin) l ta
gc trn bn tri ca phn nh cn trch, width v height l
chiu rng v chiu cao ca phn nh cn trch.
34 25/05/2014 Lp trnh tnh ton
Trch xut nh (tt.)
5.7 Cc php bin i hnh hc (tt.)
Cch 2:
>>[X2,rect] = imcrop(X,map) %nh indexed
>>[A2,rect] = imcrop(A) %nh grayscale hoc RGB
Dng con tr chut chn phn nh cn trch xut.

V d:
[I2,rect]=imcrop(I)
imshow(I)
imshow(I2)

35 25/05/2014 Lp trnh tnh ton
Php bin i hnh hc tng qut

5.7 Cc php bin i hnh hc (tt.)
>>B = imtransform(A,TFORM,interp)
>>[B,XData,YData]=imtransform(...,param1,val1,param2,val2,...)
interp: phng php ni suy.
(XData,YData): v tr ca nh B trong h trc X-Y.
TFORM: cu trc ca php bin i, c xc nh bng
cch s dng hm maketform v cp2tform.
36 25/05/2014 Lp trnh tnh ton
5.7 Cc php bin i hnh hc (tt.)
Php bin i hnh hc tng qut (tt.)
Hm maketform:
>>T = maketform(TFORM_type,...)
TFORM_type: dng cu trc bin i hnh hc: 'affine',
'projective', 'custom', box', 'composite'.
37 25/05/2014 Lp trnh tnh ton
5.7 Cc php bin i hnh hc (tt.)
Php bin i hnh hc tng qut (tt.)
Hm cp2tform:
>>T = cp2tform(input_points,base_points,TFORM_type,order)
input_points, base_points: cc ma trn M2 xc nh ta
(X,Y) ca M im iu khin trong nh bin i v trong nh
gc.
TFORM_type: 'affine', 'linear conformal', 'projective'.
'polynomial', 'piecewise linear', 'lwm'. Nu l 'polynomial' th
cn cung cp thm thng s order cho bit bc ca a thc
(mc nh l 3).
38 25/05/2014 Lp trnh tnh ton
5.7 Cc php bin i hnh hc (tt.)
Php bin i hnh hc tng qut (tt.)
V d:
T = maketform('affine',[1 0 0; .5 1 0; 0 0 1]);
J = imtransform(I,T);
imshow(I), figure, imshow(J )

You might also like