You are on page 1of 17

Cc kiu nh trong Matlab

a) nh c nh ch s (Indexed Images)
Mt nh ch s bao gm mt ma trn d liu X v ma trn bn mu map. Ma trn d liu c
th c kiu thuc lp uint8, uint16 hoc kiu double. Ma trn bn mu l mt mng mx3 kiu
double bao gm cc gi tr du phy ng nm gia 0 v 1. Mi hng ca bn ch ra cc gi
tr m: red, green v blue ca mt mu n. Mt nh ch s s dng nh x trc tip gia gi tr
ca pixel nh ti gi tr trong bn mu. Mu sc ca mi pixel nh c tnh ton bng cch
s dng gi tr tng ng ca X nh x ti mt gi tr ch s ca map. Gi tr 1 ch ra hng u
tin, gi tr 2 ch ra hng th hai trong bn mu
Mt bn mu thng c cha cng vi nh ch s v c t ng np cng vi nh khi s
dng hm imread c nh. Tuy nhin, ta khng b gii hn khi s dng bn mu mc nh,
ta c th s dng bt k bn mu no.
b) nh cng (Intensity Images)
Mt nh cng l mt ma trn d liu nh I m gi tr ca n i din cho cng trong
mt s vng no ca nh. Matlab cha mt nh cng nh mt ma trn n, vi mi
phn t ca ma trn tng ng vi mt pixel ca nh. Ma trn c th thuc lp double, uint8
hay uint16. Trong khi nh cng him khi c lu vi bn mu, Matlab s dng bn
mu hin th chng.
Nhng phn t trong ma trn cng i din cho cc cng khc nhau hoc xm.
Nhng im c cng bng 0 thng c i din bng mu en v cng 1,255 hoc
65535 thng i din cho cng cao nht hay mu trng.
c) nh nh phn (Binary Images)
Trong mt nh nh phn, mi pixel ch c th cha mt trong hai gi tr nh phn 0 hoc 1. Hai
gi tr ny tng ng vi bt hoc tt (on hoc off). Mt nh nh
phn c lu tr nh mt mng logic ca 0 v 1.
d) nh RGB (RGB Images)
Mt nh RGB - thng c gi l true-color, c lu tr trong Matlab di dng mt mng
d liu c kch thc 3 chiu mxnx3 nh ngha cc gi tr mu red, green v blue cho mi pixel
ring bit. nh RGB khng s dng palette. Mu ca mi pixel c quyt nh bi s kt hp
gia cc gi tr R, G, B (Red, Green, Blue) c lu tr trong mt mt phng mu ti v tr ca
pixel. nh dng file ho lu tr nh RGB ging nh mt nh 24 bits trong R, G, B chim
tng ng 8 bit mt. iu ny cho php nhn c 16 triu mu khc nhau.
Mt mng RGB c th thuc lp double, uint8 hoc uint16. Trong mt mng RGB thuc lp
double, mi thnh phn mu c gi tr gia 0 v 1. Mt pixel m thnh phn mu ca n l (0, 0,
0) c hin th vi mu en v mt pixel m thnh phn mu l (1, 1, 1 ) c hin th vi mu
trng. Ba thnh phn mu ca mi pixel c lu tr cng vi chiu th 3 ca mng d liu.
Chng hn, gi tr mu R, G, B ca pixel (10, 5) c lu tr trong RGB(10, 5, 1), RGB(10, 5,
2) v RGB(10, 5, 3) tng ng.
tnh ton mu sc ca pixel ti hng 2 v ct 3 chng hn, ta nhn vo b ba gi tr c lu
tr trong (2, 3, 1:3). Gi s (2, 3, 1) cha gi tr 0.5176; (2, 3, 2) cha gi tr 0.1608 v (2, 3, 3)
cha gi tr 0.0627 th mu sc ca pixel ti (2, 3) s l (0.5176, 0.1608, 0.0627).
Cc hm x l nh c bn trong Matlab
a) c v ghi d liu nh
c mt nh ho
- Hm imread c mt nh t bt k nh dng no c tr gip trong bt k chiu su bit no
c tr gip. Hu ht cc file nh s dng 8 bit cha gi tr ca pixel. Khi chng c c
vo b nh, Matlab cha chng di dng uint8. Vi cc file tr gip 16 bt d liu, PNG v
TIFF, Matlab cha chng di dng uint16. Ch : Vi nh ch s, imread lun lun c bn
mu vo trong mt chui thuc lp double, thm ch mng nh t n thuc lp uint8 hay
uint16
- Chng hn, on m sau s c mt nh RGB vo khng gian lm vic ca Matlab lu trong
bin RGB.
RGB=imread(football.jpg);
Trong v d ny, imread s nhn ra nh dng file s dng t tn file. Ta cng c th ch ra
nh dng file nh mt tham s trong hm imread. Matlab tr gip rt nhiu nh dng ho
thng dng chng hn: BMP, GIF, JPEG, PNG, TIFF bit thm cc kiu gi hm v tham
s truyn vo, xem tr gip online ca Matlab.
c nhiu nh t mt file ho
- Matlab tr gip mt s nh dng file ho chng hn nh: HDF v TIFF, chng cha nhiu
nh. Theo mc nh, imread ch tr gip nh u tin trong file. nhp thm cc nh t file, s
dng c php c tr gip bi nh dng file. Chng hn, khi c s dng vi TIFF, ta c th
s dng mt gi tr ch s vi imread ch ra nh m ta mun nhp vo.
V d sau y c mt chui 27 nh t mt file TIFF v lu nhng nh ny trong mt mng 4
chiu. Ta c th s dng hm iminfo xem bao nhiu nh c lu tr trong file:
mri = uint8(zeros(128,128,1,27)); % preallocate 4-D array
for frame=1:27
[mri(:,:,:,frame),map] = imread('mri.tif',frame);
End
- Khi file cha nhiu nh theo mt s kiu nht nh chng hn theo th t thi gian, ta c th
lu nh trong Matlab di dng mng 4 chiu. Tt c cc nh phi c cng kch thc.
Ghi mt nh ho
- Hm imwrite s ghi mt nh ti mt file ho di mt trong cc nh dng c tr gip.
Cu trc c bn nht ca imwrite s yu cu mt bin nh v tn file. Nu ta gp mt phn m
rng trong tn file, Matlab s nhn ra nh dng mong mun t n.
V d sau ti mt nh ch s X t mt file Map vi bn mu kt hp vi n map sau ghi
nh xung mt file bitmap.
load clown
whos
Name Size Bytes Class
X 200x320 512000 double array
caption 2x1 4 char array
map 81x3 1944 double array
Grand total is 64245 elements using 513948 bytes
imwrite(X,map,'clown.bmp')
Ch ra nh dng ph - Tham s c bit
- Khi s dng imwrite vi mt s nh dng ho, ta c th ch ra cc tham s ph. Chng hn,
vi nh dng PNG ta c th ch ra su bit nh mt tham s ph. V d sau s chi mt nh
cng I vi mt file nh 4 bit PNG.
imwrite(I,'clown.png','BitDepth',4 );
- bit thm cc cu trc khc ca hm xem phn tr gip trc tuyn ca Matlab.
c v ghi nh nh phn theo nh dng 1 bit
- Trong mt s nh dng file, mt nh nh phn c th c lu trong mt nh dng 1 bit.
Nu nh dng file tr gip n, Matlab ghi nh nh phn nh nh 1 bit theo mc nh. Khi ta
c mt nh nh phn vi nh dng 1 bit, Matlab i din n trong khng gian lm vic nh
mt mng lgic.
- V d sau c mt nh nh phn v ghi n di dng file TIFF. Bi v nh dng TIFF tr gip
nh 1 bit, file c ghi ln a theo nh dng 1 bit:
BW = imread('text.png');

imwrite(BW,'test.tif');
kim tra chiu su bit ca file test.tif, gi hm iminfo v kim tra trng BitDepth ca n:
info = imfinfo('test.tif');info.BitDepth
ans =1
Ch : Khi ghi file nh phn, Matlab thit lp trng ColorType thnh grayscale.
Xem lp lu tr ca file
- Hm imwrite s dng lut sau y quyt nh lp lu tr c s dng trong nh kt qu:
+ logical: Nu nh dng nh ra (Output Image) c ch r l tr gip nh 1 bit, hm imwrite
to mt file nh 1 bit. Nu nh dng nh ra c ch r l khng tr gip nh 1 bit (nh JPEG),
hm imwrite chuyn nh ti mt nh thuc lp uint8.
+ uint8: Nu nh dng nh ra c ch r l tr gip nh 8 bit, hm imwrite to mt nh 8 bit
+ uint16: Nu nh dng nh ra c ch r tr gip nh 16 bit (PNG hoc TIFF), hm imwrite
to mt nh 16 bit. Nu nh dng nh ra khng tr gip nh 16 bit, hm chuyn i d liu nh
ti lp uint8 v to mt nh 8 bit.
+ double: Matlab chuyn d liu nh ti dng uint8 v to mt nh 8 bit bi v hu ht cc file
nh s dng nh dng 8 bit.
Truy vn mt file ho
- Hm imfinfo cho php ta c th nhn c thng tin v mt file nh c tr gip bi
toolbox.
C php: imfinfo(filename,fmt)
Cc thng tin c cung cp bi hm imfinfo l: filename, filemodedate, filesize, format,
formatversion, width, height, bitdepth, colortype Thng tin m ta nhn c ph thuc vo
kiu ca file nhng n lun bao gm nhng thng tin sau:
Tn ca file nh.
nh dng file nh.
S version ca nh dng file.
Ngy sa i file gn nht.
Kch thc file tnh theo byte.
Chiu rng nh tnh theo pixel.
Chiu cao nh tnh theo pixel.
S lng bt trn mt pixel.
Kiu nh: RGB, ch s
b) Hin th nh
Dng hm imview
- hin th mt nh s dng hm imview, dng hm imview, ch r nh m ta mun hin th.
Ta c th s dng imview hin th mt nh m c nhp vo trong khng gian lm vic
ca Matlab.
moonfig = imread('moon.tif');
imview(moonfig);
Ta cng c th ch nh tn ca file nh nh trong v d sau:
imview('moon.tif');
- File nh phi c mt trong th mc hin ti hoc trong ng dn ca Matlab. Cu trc ny
c th hu ch cho vic qut qua nhiu nh. Tuy nhin, lu , khi s dng cu trc ny, d liu
nh khng c lu trong khng gian lm vic ca Matlab.
- Nu ta gi hm imview m khng ch ra mt k tham s no, n s hin th mt hp chn file
cho php ta ch ra tn file mun hin th.
Xem nhiu nh
- Nu ta ch ra mt file m cha nhiu nh, hm imview ch hin th nh u tin trong file .
xem tt c cc nh trong file, s dng hm imread nhp mi nh vo trong khng gian
lm vic ca Matlab sau gi hm imview nhiu ln hin th mi nh ring bit.
Dng hm imshow
- xem nh, ta c th s dng hm imshow thay cho imview. Ta s dng imshow hin
th mt nh c nhp vo trong khng gian lm vic nh v d sau:
moon = imread('moon.tif');

imshow(moon);
Ta cng c th ch ra tn ca file nh nh mt tham s truyn vo cho hm nh v d sau:
imshow('moon.tif');
Khi s dng cu trc ny th d liu nh khng c nhp vo trong khng gian lm vic. Tuy
nhin, ta c th mang nh vo trong khng gian lm vic bng cch s dng hm getimage.
Hm ny s nhn d liu nh t handle ca mt i tng nh hin ti. Chng hn: moon =
getimage; S gn d liu nh t moon.tif vo bin moon.
c) Cc hm chuyn i kiu nh
- Vi cc thao tc nht nh s tht hu ch khi c th chuyn i nh t dng ny sang dng
khc. Chng hn, nu ta mun lc mt mu nh c lu tr di dng nh ch s u tin ta
nn chuyn i n thnh dng nh RGB.
Khi ta p dng php lc ti nh RGB, Matlab s lc gi tr cng trong nh tng ng. Nu
ta c gng lc nh ch s, Matlab n gin ch p t php lc ti ma trn nh ch s v kt qu
s khng c ngha.
Ch : Khi chuyn i mt nh t dng ny sang dng khc, nh kt qu c th khc nh ban
u. Chng hn, nu ta chuyn i mt nh mu ch s sang mt nh cng , kt qu ta s thu
c mt nh en trng.
- Danh sch sau y s lit k cc hm c s dng trong vic chuyn i kiu nh:
dither: To mt nh nh phn t mt nh cng en trng bng cch trn, to mt nh ch
s t mt nh RGB bng cch trn (dither).
gray2id: To mt nh ch s t mt nh cng en trng.
grayslice: To mt nh ch s t mt nh cng en trng bng cch t ngng.
im2bw: To mt nh nh phn t mt nh cng , nh ch s hay nh RGB trn c s ca
ngng nh sng.
ind2gray: To mt nh cng en trng t mt nh ch s.
ind2rgb: To mt nh RGB t mt nh ch s.
mat2gray: To mt nh cng en trng t d liu trong mt ma trn bng cch ly t l gi
liu.
rgb2gray: To mt nh cng en trng t mt nh RGB.
rgb2ind: To mt nh ch s t mt nh RGB.
- Ta cng c th thc hin cc php chuyn i kiu ch s dng c php ca Matlab. Chng
hn, ta c th chuyn i mt nh cng sang nh RGB bng cch ghp ni 3 phn copy
ca ma trn nh gc gia 3 chiu:
RGB=cat(3,I,I,I );
- nh RGB thu c c cc ma trn ng nht cho cc mt phng R, G, B v vy nh hin th
ging nh bng xm.
- Thm vo nhng cng c chuyn i chun ni trn, cng c mt s hm m tr li
kiu nh khc nh mt phn trong thao tc m chng thc hin.
Chuyn i khng gian mu
- Toolbox x l nh biu din mu sc nh cc gi tr RGB ( trc tip trong nh RGB hoc gin
tip trong nh ch s ). Tuy nhin, c cc phng php khc cho vic biu din mu sc. Chng
hn, mt mu c th c i din bi cc gi tr hue, saturation v cc gi tr thnh phn (HSV).
Cc phng php khc cho vic biu din mu c gi l khng gian mu.
- Toolbox cung cp mt tp cc th tc chuyn i gia cc khng gian mu. Cc hm x l
nh t chng coi d liu mu sc di dng RGB tuy nhin, ta c th x l mt nh m s dng
cc khng gian mu khc nhau bng cch chuyn i n sang RGB sau chuyn i nh
c x l tr li khng gian mu ban u.
d) Chuyn i nh dng cc file nh
- thay i nh dng ho ca mt nh, s dng hm imread c mt nh v sau lu
n vi hm imwrite ng thi ch ra nh dng tng ng.
- minh ho, v d sau y s dng hm imread c mt file BMP vo khng gian lm
vic.Sau , hm imwrite lu nh ny di nh dng PNG
bitmap = imread('mybitmap.bmp','bmp');
imwrite(bitmap,'mybitmap.png','png');
e) S hc nh
- S hc nh s ng dng ca cc php ton s hc chun nh: cng, tr, nhn, chia ln nh.
S hc nh c s dng nhiu trong x l nh trong c cc bc ban u ln cc thao tc phc
tp hn. Chng hn, tr nh c th c s dng pht hin s khc nhau gia hai hoc nhiu
nh ca cng mt cnh hoc mt vt.
- Ta c th thc hin s hc nh s dng cc ton t s hc ca Matlab.
Toolbox x l nh bao gm mt tp hp cc hm ng dng cc php ton s hc trn tt c cc
con s khng lp y. Hm s hc ca toolbox chp nhn bt k kiu d liu s no bao gm
uint8, uint16 hay double v tr li nh kt qu trong cng nh dng. Cc hm thc hin cc php
ton vi chnh xc kp trn tng phn t nhng khng chuyn i nh ti gi tr chnh xc
kp trong khng gian lm vic ca Matlab. S trn s c iu khin t ng. Hm s ct b
gi tr tr v va vi kiu d liu.
Lut ct b trong s hc nh
- Kt qu ca s hc nguyn c th d dng trn s dng cho lu tr. Chng hn, gi tr cc i
ta c th lu tr trong uint8 l 255. Cc php ton s hc c th tr v gi tr phn s - khng
c biu din bi mt chui s nguyn.
- Cc hm s hc nh s dng nhng lut ny cho s hc nguyn:
+ Gi tr vt qu khong ca kiu s nguyn b ct b ti khong
+ Gi tr phn s c lm trn Chng hn, nu d liu c kiu uint8, kt qu tr v nu ln hn
255 ( bao gm Inf ) th c gn l 255.
Li gi lng nhau ti hm s hc nh
- Ta c th s dng cc hm s hc nh kt hp thc hin mt chui cc php ton. Chng
hn tnh gi tr trung bnh ca hai nh:
C=(A+B) /2
Ta c th nhp vo nh sau:
I = imread('rice.png');
I2 = imread('cameraman.tif');
K = imdivide(imadd(I,I2), 2); % not recommended
- Khi c s dng vi kiu uint8 hay uint16, mi hm s hc ct kt qu ca n trc khi
truyn n cho hm thip theo. S ct b ny c th gim ng k lng thng tin trong nh cui
cng. Mt cch lm tt hn thc hin mt chui cc tnh ton l s dng hm imlincomb.
Hm ny thi hnh tt c cc php ton s hc trong s kt hp tuyn tnh ca chnh xc kp
v ch ct b kt qu cui cng:
K = imlincomb(.5,I,.5,I2); % recommended

Bin i khng gian nh
Bin i khng gian nh l thc hin nh x gia v tr cc pixel trong nh vo vi cc pixel
trong nh ra.
a) Bng thut ng
Aliasing : Rng ca - xut hin khi gim kch thc nh. Khi kch thc ca mt nh b gim,
cc pixel gc b ly mu gim to ra t pixel hn. Aliasing xy ra nh kt qu ca vic gim
kch thc nh thng xut hin di dng bc thang ( c bit trong cc nh c tng phn
cao )
Antialiasing : Cc bin php chng rng ca cho nh
Bicubic interpolation : Gi tr ca cc pixel ra c tnh ton t gi tr trung bnh ca 4x4
pixel ln cn Bilinear interpolation : Ga tr ca pixel ra c tnh ton t gi tr trung bnh ca
2x2 pixel ln cn
Geometric operation : Mt thao tc sa i quan h hnh hc ga cc pixel trong mt nh.
Chng hn thay i kch thc nh, quay nh v xn nh
Interpolation : Qu trnh c s dng c lng gi tr nh mt v tr gia cc pixel
Nearest-neighbor interpolation : Cc gi tr pixel ra c gn gi tr ca pixel nm trong mt
vng gn pixel .
b) Ni suy
Ni suy l qu trnh s dng c lng mt gi tr nh mt v tr gia cc pixel. Chng hn,
nu ta thay i kch thc mt nh, n s cha nhiu pixel hn nh gc, toolbox s dng s ni
suy tnh gi tr cho cc pixel thm vo. Hm imresize v imrotate s dng ni suy hai chiu
thc hin thao tc ca mnh. Hm improfile cng s dng s ni suy ho.
Cc phng php ni suy
- Toolbox s l nh cung cp 3 cch ni suy ho
+ Ni suy cc pixel gn nht ( nearest neighbor interpolation )
+ Ni suy song tuyn tnh ( Bilinear interpolation )
+ Ni suy song khi ( Bicubic interpolation )
Cc phng php ni suy lm vic theo mt cch ging nhau. Trong mi trng hp, tnh gi
tr ca mt pixel c ni suy, chng tm im trong nh ra m pixel nm ti . Sau ,
chng gn mt gi tr ti cc pixel ra bng cch tnh ton gi tr trung bnh c trng s ca mt
s pixel ln cn. Trng s da trn c s khong cch ti im ang xt.
- Cc phng php ny khc nhau tp cc pixel m chng xem xt:
+ Vi ni suy cc pixel gn nht: pixel ra c gn gi tr ca cc pixel gn n nht. Cc
pixel khc khng c xem xt.
+ Ni suy song tuyn tnh, gi tr ca pixel ra l gi tr trung bnh theo trng s ca 2x2 pixel ln
cn.
+ Ni suy song khi: gi tr ca pixel ra l trung bnh c trng s ca 4x4 pixel ln cn.
S lng cc pixel c xem xt nh hng n phc tp tnh ton. V vy, phng php
song tuyn tnh mt nhiu thi gian hn phng php th nht v
phng php song khi mt nhiu thi gian hn song tuyn tnh. Tuy nhin, s lng pixel ln
hn, chnh xc s tt hn.
Kiu nh
- Cc hm s dng tuyn tnh yu cu mt tham s ch ra phng php ni suy. Vi hu ht cc
hm, phng php mc nh c s dng l nearest-neighbor interpolation. Phng php ny
to ra mt kt qu c th chp nhn c cho hu ht cc nh v l phng php duy nht thch
hp vi nh ch s. Vi nh cng hay RGB, tuy nhin ta thng ch ra kiu song tuyn tnh
hoc song khi bi v nhng phng php ny cho kt qu tt hn
Vi nh RGB, ni suy thng c thc hin trn mt phng R,B,G mt cch ring bit
Vi nh nh phn, ni suy gy ra nhng nh hng m ta c th nhn thy c. Nu s dng
ni suy song tuyn tnh hoc song khi, gi tr tnh ton c cho pixel trong nh ra s khng
hon ton l 0 hoc 1. nh hng trn nh kt qu ph thuc vo lp ca nh vo:
+ Nu lp nh vo l double, nh ra l mt nh en trng thuc lp double. nh ra khng l nh
nh phn bi v n bao gm cc gi tr khc 0 v 1.
+ Nu nh vo l uint8, nh ra l mt nh nh phn thuc lp uint8. Gi tr ca cc pixel c ni
suy c lm trn thnh 0 hoc 1. V vy , nh ra thuc lp uint8.
Nu s dng phng php nearest-neighbor interpolation, nh ra lun l nh nh phn bi v
nhng gi tr ca pixel c ni suy c ly trc tip t nh vo.

c) Thay i kch thc nh
- thay i kch thc ca mt nh, s dng hm imresize. S dng hm ny ta c th:
+ Ch ra kch thc ca nh kt qu.
+ Ch ra phng php ni suy c s dng.
+ Ch ra b lc c s dng ngn nga hin tng rng ca.
Ch ra kch thc cho nh kt qu
- S dng hm imresize, ta ch th ch ra kch thc ca nh kt qu theo hai cch:
+ Bng cch ch ra h s phng i c s dng trn nh.
+ Bng cch ch ra chiu ca nh kt qu.
S dng h s phng i nh
- m rng mt nh, ch ra h s phng i ln hn 1. thu nh mt nh, ch ra h s phng
i nm gia 0 v 1. Chng hn, lnh sau tng kch thc ca nh I ln 1.25 ln:



Hnh 1 nh trc v sau khi imresize
I = imread('circuit.tif');
J = imresize(I,1.25);
imshow(I)
figure, imshow(J)
Ch nh kch thc ca nh ra
- Ta c th ch ra kch thc ca nh ra bng cch truyn mt vc t cha s lng hng v ct
ca nh sau cng. Nhng lnh sau y to mt nh ra Y vi 100 hng v 150 ct.
Y = imresize(X,[100 150])
Ch : Nu kch thc c ch ra khng c cng t l vi nh vo, nh ra s b bin dng
Ch nh phng php ni suy c s dng.
- Theo mc nh, hm imresize s dng phng php ni suy cc pixel gn nht (nearest
neighbor interpolation) tnh gi tr cc pixel ca nh ra. Tuy nhin, ta c th ch nh cc
phng php ni suy khc. Bng sau y lit k cc phng php ni suy c tr gip theo th
t ca phc tp.
Gi tr tham
s
Phng php ni suy
nearest Ni suy cc phixel gn nht ( mc
nh )
bilinear Ni suy song tuyn tnh
biculic Ni suy song khi
Trong v d sau, hm imresize s dng phng php ni suy song tuyn tnh:
Y=imresize(X, [100 150],bilinear);
S dng b lc ngn chn hin tng rng ca
- Vic gim kch thc (hnh hc) ca mt nh c th gy ra nhng nh hng nht nh ln
nh chng hn nh hin tng xut hin rng ca ti bin ca nh . iu ny l do thng tin lun
b mt khi ta gim kch thc mt nh. Rng ca xut hin nh nhng gn sng trong nh sau
cng.
- Khi gim kch thc ca nh s dng ni suy song tuyn tnh hoc song khi, hm imresize t
ng p t mt b lc thng thp ln nh trc khi ni suy. iu ny gim nh hng ca
rng ca trong nh ra. Ta c th ch ra kch thc ca b lc ny hoc ch ra mt b lc khc
thay th.
Ch : Thm ch s dng mt b lc thng thp, cht lng ca nh vn b nh hng do
thng tin lun b mt trong qu trnh ni suy
- Hm imresize khng p t mt b lc thng thp ln nh nu phng php ni suy cc pixel
gn nht c s dng. Phng php ni suy ny ban u c s dng vi cc nh ch s v
b lc thng thp khng thch hp cho kiu nh ny.
- Ta cng c th ch ra mt b lc t to thay cho cc b lc c sn.
Hm imresize
C php ca hm ny nh sau:


B = imresize(A,m)
B = imresize(A,m,method)
B = imresize(A,[mrows ncols],method)
B = imresize(...,method,n)
B = imresize(...,method,h)
Din gii
+ B=imresize(A,m): Tr li mt nh B ln gp m ln nh A (kch thc hnh hc) s dng
phng php ni suy mc nh (nearest - neighbor interpolcation). A c th l mt nh ch s,
nh en trng, RGB hoc nh nh phn. Nu m nm gia 0 v 1, B s nh hn A. Nu m ln hn
1, B s ln hn A.
+ B=imresize(A,m,method): Tr li mt nh ln gp m ln nh A s dng phng php ni
suy method. method l mt chui ch ra phng php ni suy no c s dng chng hn:
nearest,bilinear,bicubic.
+ B=imresize(A, [mrows ncols],method): Tr li mt nh vi kch thc c ch ra bi
vector [mrows ncols]. Nu kch thc c ch ra khng cng t l
vi nh vo, nh s b bin dng . Khi kch thc ca nh ra nh hn kch thc ca nh vo v
phng php ni suy c s dng l bilinear hoc bicubic, hm imresize p t mt b lc
thng thp trc khi tuyn tnh ho gim hin tng rng ca. Kch thc mc nh l 11x11.
Ta c th ch ra mt th t khc cho b lc mc nh s dng cu trc:
B=imresize(,method,n): n l mt s nguyn ch ra kch thc ca b lc nxn. Nu n=0,
hm imresize b qua bc lc. Ta cng c th ch ra b lc ring s dng c php:
B=imresize(,method,h): Trong h l mt b lc FIR hai chiu ( c th c tr v bi cc
hm ftrans2, fwind1, fwind2 hoc fsamp2 ).
d) Quay nh
- quay mt nh, s dng hm imrotate. Hm ny chp nhn hai tham s chnh:
+ nh cn quay
+ Gc quay
- Gc quay tnh theo . Nu ta ch ra mt gi tr dng, hm imrotate quay nh theo chiu
ngc chiu kim ng h. Nu ch ra gi tr m, hm quay nh theo chiu kim ng h. V d
sau quay mt nh 35 theo chiu ngc chiu kim ng h:
J=imrotate(I,35 ) ;
- Mt s tham s tu chn ta c th truyn vo cho hm bao gm:
+ Phng php ni suy c s dng
+ Kch thc ca nh ra
Ch nh phng php ni suy c s dng
- Theo mc nh, hm imrotate s dng phng php ni suy th nht (nearest-neighbor
interpolation) tnh gi tr cc pixel trong nh ra. Tuy nhin, ta c th ch ra cc phng php
ni suy khc nh: bilinear ,bicubic
V d sau quay mt nh 35 ngc chiu kim ng h s dng ni suy song tuyn tnh:
I = imread('circuit.tif');
J = imrotate(I,35,'bilinear');
imshow(I)
figure, imshow(J)





Hnh 2 nh trc v sau khi imrotate
Ch nh kch thc ca nh ra
Theo mc nh, hm imrotate to mt nh ra ln c th bao gm ton b cc pixel ca nh
gc. Cc pixel nm ngoi bin ca nh gc c gn gi tr 0 nh th nn mu en trong nh ra.
Nu ta ch ra chui crop nh mt tham s, hm imrotate s xn nh ra ti kch thc nh nh
vo.
Hm imrotate
C php ca n nh sau:
B = imrotate(A,angle)
B = imrotate(A,angle,method)
B = imrotate(A,angle,method,bbox)
Din gii
+ B=imrotate(A,angle): Quay nh A mt gc angle theo chiu ngc chiu kim ng h,
s dng phng php ni suy cc pixel gn nht. quay theo chiu kim ng h hy truyn gi
tr m cho tham s angle
+ B=imrotate(A,angle,method): Quay nh A mt gc angle theo chiu kim ng h s
dng phng php ni suy c ch ra trong method.
+ B=imrotate(A,angle,method,bbox): Quay nh A mt gc angle . Tham s bbox ch ra
hp bin ca nh tr v. bbox l mt chui c th nhn cc gi tr sau:
crop: nh ra B ch bao gm phn trung tm ca nh c quay v c cng kch thc vi nh
A
loose: ( Mc nh ): nh ra B bao gm ton b nh c quay v ln hn nh A. Hm
imrotate thit lp gi tr 0 cho cc pixel ngoi bin ca nh gc.
V d :
- V d ny c mt nh quang ph nh sng mt tri c lu trong nh dng FITS v quay
n v cn n theo chiu ngang.
I = fitsread('solarspectra.fts');
I = mat2gray(I);
J = imrotate(I,-1,'bilinear','crop');
imshow(I)
figure, imshow(J)




Hnh 3 nh c quay theo chiu ngang
e) Xn nh (image cropping)
- trch mt vng ch nht ca mt nh, s dng hm imcrop. Hm imcrop chp nhn hai
tham s chnh:
+ nh cn xn
+ Cc gc ca hnh ch nht xc nh vng xn
- Nu ta gi hm imcrop m khng ch ra hnh ch nht, ta c th xn nh theo cc tng tc.
Trong trng hp ny, ta s dng tr chut chn vng ch nht cn xn bng cch nhn v
gi phm chut tri v di chuyn chn vng xn. Khi chn xong th nh chut. Trong v d
sau, ta hin th mt nh v gi hm imcrop. Hm imcrop hin th nh trong mt hnh v i ta
v vng ch nht cn xn trn nh.
imshow circuit.tif
I=imcrop;
Imshow(I);


Hnh 4 nh trc v sau khi imcrop
Hm imcrop
- C php ca n nh sau:
I2 = imcrop(I)
X2 = imcrop(X,map)
RGB2 = imcrop(RGB)
I2 = imcrop(I,rect)
X2 = imcrop(X,map,rect)
RGB2 = imcrop(RGB,rect)
[...] = imcrop(x,y,...)
[A,rect] = imcrop(...)
[x,y,A,rect] = imcrop(...)
Din gii
- Hm imcrop xn mt nh theo mt hnh ch nht c ch nh.
I2=imcrop(I) ;
X2=imcrop(X,map);
RGB2=imcrop(RGB);
Hm imcrop s hin th nh I v i ta ch ra hnh ch nht cn xn bng chut
- Nu ta b qua cc tham s, hm imcrop thao tc trn nh ca trc hin ti.
- ch nh mt hnh ch nht ta dng tr chut nh ni trn
- Ta cng c th ch ra kch thc ca hnh ch nht m khng thao tc trc tip nh cc c php
sau:
I2 = imcrop(I,rect)
X2 = imcrop(X,map,rect)
RGB2 = imcrop(RGB,rect)
Trong : rect l mt vector bn phn t dng [xmin ymin width height], nhng gi tr ny c
ch ra trong to khng gian. ch nh cc to khng theo to khng gian cho nh
vo, t trc cc tham s khc vi 2 vector hai phn t ch ra Xdata v Ydata. Chng hn:
[]=imcrop(x,y,)
- Nu ta cung cp cc tham s ra ph, hm imcrop s tr li thng tin v vng ch nht c
chn v h to ca nh vo. Chng hn:
[A,rect] = imcrop(...)

[x,y,A,rect] = imcrop(...)
A l nh ra, x v y l Xdata v Ydata ca nh vo
Ch :
- Do rect l mt tp hp cc to khng gian, cc phn t width v height trong rect khng
lun lun tng ng chnh xc vi kch thc ca nh ra. Chng
hn, gi s rect l [20 20 40 30], s dng h to khng gian theo mc nh. Gc
trn tri ca vng ch nht c chn l tm ca pixel (20,20) v gc di phi ca
vng ch nht l tm ca pixel (50,60). nh ra l mt nh c kch thc 31x41 ch
khng phi 30x40. iu ny l do nh ra bao gm tt c cc pixel trong nh vo
hon ton hoc mt phn c bao bc bi vng ch nht trn.
V d
I = imread('circuit.tif');
I2 = imcrop(I,[75 68 130 112]);
imview(I), imview(I2)




Hnh 5 nh trc v sau khi imcrop theo 1 ta cho trc
f) Cc bin i nh thng dng
- thc hin cc bin i khng gian nh 2 chiu, s dng hm imtransform. Hm ny chp
nhn hai tham s chnh:

o nh cn bin i
o Mt cu trc bin i c gi l TFORM ch ra kiu bin i ta mun thc hin
Ch ra kiu bin i
- Ta ch ra kiu bin i trong cu trc TFORM. C hai cch to mt cu trc TFORM:

o S dng hm maketform
o S dng hm cp2tform
S dng hm maketform
- Khi s dng hm ny, ta ch ra kiu bin i ta mun thc hin. Cc kiu bin i m
maketform tr gip bao gm:
+ affine: Bin i c th bao gm: translation ( dch ), rotation ( quay ), scaling, stretching v
shearing. Cc ng thng vn l ng thng, ng song song vn song song nhng hnh
ch nht c th b bin i
+ box: Mt trng hp c bit ca affine khi mi chiu c di v nh t l c lp
+ composite : Bao gm t hp ca hai hay nhiu php bin i
+ custom : Bin i do ngi dng t nh ngha, n cung cp cc hm thun hoc nghch
c gi bi hm imtransform
+ projective : Bin i trong cc ng thng vn gi nguyn nhng cc ng song song
ng quy li thnh mt im.
S dng cp2tform
- Ta s dng hm ny to ra cu trc TFORM khi ta mun thi hnh mt bin i cn kht vi
cc im d liu nh mt bin i a thc.
Ch : Khi s dng vi hm imtransform, cu trc TFORM phi nh ngha mt bin i 2
chiu. Nu mt nh cha nhiu hn mt chiu chng hn nh nh RGB, cng mt bin i 2
chiu s c p t ti tt c cc mt phng 2 chiu theo chiu cao hn. nh ngha mt bin
i n chiu s dng hm imformarrray
Thc hin bin i
- Khi ta nh ngha mt cu trc TFORM, ta c th thi hnh mt s bin i bng cch gi
hm imtransform. Chng hn, on m sau s dng hm ny thi hnh mt bin i projective
cho mt nh bn c:
I = checkerboard(20,1,1);
figure; imshow(I)
T = maketform('projective',[1 1; 41 1; 41 41; 1 41],...
[5 5; 40 5; 35 30; -10 30]);
R = makeresampler('cubic','circular');
K = imtransform(I,T,R,'Size',[100 100],'XYScale',1);
figure, imshow(K)

Hnh 6 nh trc v sau khi imtransforms
- Cc tu chn ca hm imtransform cho php ta iu khin nhiu kha cnh ca vic bin i.
Chng hn, ch rng nh b bin i xut hin nhiu bn copy ca nh gc. iu ny nhn
c bi tu chon size.Xem thm Help Online


Hm imtransform
- p t mt bin i khng gian 2 chiu ln mt nh
C php
B = imtransform(A,TFORM)
B = imtransform(A,TFORM,INTERP)
[B,XDATA,YDATA] = imtransform(...)
[B,XDATA,YDATA] = imtransform(...,param1,val1,param2,val2,...)
Din gii
+ B=imtransform(A,TFORM ): bin i nh A theo cu trc c nh ngha trong TFORM.
Cu trc ny c tr v t hm maketform hoc cp2tform. Nu ndims(A)>2 nh cc nh RGB
th cng mt bin i khng gian 2 chiu c p t ti tt c cc mt phng theo chiu cao
hn.
Khi s dng c php ny, hm imtransform t ng dch gc ca nh ra nh ra c th c
hin th nhiu nht c th.
+ B=imtransform(A,TFORM, INTERP): ch ra dng ca php ni suy c s dng. INTERP
c th l mt trong cc gi tr nearest, bicubic hoc bilinear.
Tng t, INTERP c th l mt cu trc c tr v t hm makeresampler. Tu chn ny cho
php iu khin nhiu hn ln vic ly mu li (resampling).
+ [B,XDATA,YDATA]= imtransform(): tr v v tr ca nh ra B trong khng gian X-Y.
XDATA v YDATA cc vector hai thnh phn. Nhng thnh phn ca XDATA ch ra to x
ca ct u v cui ca B. Nhng thnh phn ca YDATA ch ra to y ca ct u v cui
ca B. Bnh thng, hm imtransform tnh ton XDATA v YDATA t ng v vy B cha
ton b nh bin i A. Tuy nhin, ta c th chng tnh ton t ng ny xem di y:
+ [B,XDATA,YDATA] = imtransform(...,param1,val1,param2,val2,...): Ch ra cc tham s
iu khin nhiu kha cnh khc nhau ca bin i khng gian. Bng sau lit k cc tham s m
ta c th ch ra.
Tham s Din gii
UData
VData
C hai tham s ny l cc vector hai phn t thc. Udata v Vdata ch ra v tr
khng gian ca nh A trong khng gian vo 2 chiu U-V. Hai phn t ca Udata
cho to u (honh ) ca ct u tin v cui cng ca A. Hai phn t ca
Vdata cho to v ( tung ) ca hng u tin v cui cng ca A.
Gi tr mc nh cho Udata v Vdata tng ng l [1 size(A,2) ] v [1 size(A,1)
]
Xdata
Ydata
C hai tham s ny l cc vector hai phn t thc ch ra v tr khng gian ca nh ra
B trong khng gian ra 2 chiu X-Y. Hai phn t ca Xdata ch ra honh x ca
ct u tin v cui cng ca B. Hai phn t ca Ydata ch ra tung ca hng
u tin v cui cng ca B.
Nu Xdata v Ydata khng c ch ra, hm imtransform c lng gi tr cho
chng c th cha ton b nh ra b bin i
XYScale L vector vi mt hoc hai phn t thc. Phn t u tin ca XYScale ch ra
chiu rng ca mi pixel vo trong khng gian X-Y. Phn t th hai (nu tn ti)
ch ra chiu cao ca mi pixel ra. Nu XYScale ch c mt phn t, gi tr ny s
c dng cho c chiu rng v chiu cao.
Nu XYScale khng c ch nh nhng Size c ch ra th XYScale c
tnh ton t Size,Xdata v Ydata.
Size Mt vector hai phn t nguyn khng m. Size ch ra s hng v ct trong nh ra
B. Vi chiu cao hn, kch c ca B c ly trc tip t A. Ni cch khc,
size(B,k) tng ng vi size(A,k) vi k>2. Nu Size khng c ch nh, n
s c tnh t Xdata,Ydata v XYScale
FillValues Mt mng cha mt hoc nhiu gi tr t (fill values). Fill values c s dng cho
cc pixel trn nh ra khi v tr c bin i tng ng trn nh vo hon ton l
vin ngoi ca nh ra. nu A l 2 chiu, Fillvalues phi v hng. Tuy nhin, nu
chiu ca A ln hn 2, FillValues c th l mt mng m kch thc ca n tho
mn rng buc sau:
size(fill_values,k) phi bng size(A,k+2) hoc 1.
Chng hn, nu A l mt nh RGB unit8 c kch thc 200x200x3 th cc kh
nng ca FillValues bao gm:
0: T vi mu en
[0;0;0]: T vi mu en
255: T vi mu trng
[255;255;255]: T vi mu trng
[0;0;255]: T vi mu xanh
[255;255;0]: T vi mu vng
Nu A l 4 chiu 200x200x3x10 th FillValues c th l 1 v hng
1x10,3x1,3x1


V d
p mt php dch chuyn ngang ti mt nh cng ;
I = imread('cameraman.tif');
tform = maketform('affine',[1 0 0;.5 1 0; 0 0 1]);
J = imtransform(I,tform);
imshow(I), figure, imshow(J)



Hnh 7 nh trc v sau khi imtransforms vi 1 cng nh

You might also like