Professional Documents
Culture Documents
Xu Ly Anh Trong Matlab
Xu Ly Anh Trong Matlab
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 .
- c v ghi d liu nh
- Phn ny s gii thiu cch c v ghi d liu nh
1. 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 bt 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 an 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 .
2. 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 Mat vi bn mu kt hp vi n map sau ghi
nh xung mt file bitmap .
load clown
whos
Name
X
caption
map
Size
200x320
2x1
81x3
Bytes Class
512000 double array
4 char array
1944 double array
+ 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
- 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');
- c v ghi nh DICOM
- Toolbox x l nh bao gm tr gip cho vic thao tc vi nh s ( Digital Imaging ) v
nh y hc (Communication in Medicine ) .
1. c d liu nh t mt file DICOM
- c mt d liu nh t mt file DICOM , s dng hm icomread . Hm ny c
cc file tun theo c trng DICOM nhng c th c c cc file khng theo chun
chung no
- V d sau y c mt nh t mt file DICOM mu i km vi toolbox .
I = dicomread('CT-MONO2-16-ankle.dcm');
xem d liu nh , s dng hm hin th ca toolbox imshow hoc imview ( Do d
liu nh l s 16 bt c du , ta phi s dng cu trc t chuyn i vi mi hm hin th )
imview(I,[])
2. c Metadata t mt file DICOM
- Cc file DICOM bao gm cc thng tin c gi l Metadata . Nhng thng tin ny m
t tc tnh ca d liu nh n nm gi nh : kch thc , chiu , chiu su bt . Thm vo
, c trng DICOM nh ngha nhiu cc trng metadata khc m t cc c tnh
10
11
info2 = dicominfo('h:\matlab\tmp\ankle.dcm');
info2.FileModDate
ans =
16-Mar-2003 15:32:43
- 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 .
1 . 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 .
2. 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
12
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
- H thng to
- V tr trong mt nh c th c biu din trong cc h thng to khc nhau ph
thuc vo ng cnh . C hai h thng to trong Matlab l : h thng to pixel v h
thng to khng gian .
1. To pixel
- Nhn chung , phng php thun tin nht cho vic biu din v tr trong mt nh l s
dng to pixel . Trong h to ny , nh c x l nh mt li ca cc phn t
ring bit c nh th t t nh ti y v t tri sang phi .
- Vi to pixel , thnh phn u tin r ( hng ) c tng t khi i t trn xung di
trong khi c ( ct ) c tng khi i t tri sang phi . H to pixel l gi tr nguyn v
khong gia 1 v chiu di ca hng hay ct
- C mt tng ng 1-1 gia to pixel v to Matlab s dng m t ma trn . S
tng ng ny to mt quan h ga ma trn d liu nh v cch nh c hin th .
Chng hn , d liu cho pixel trn hng th 5 , ct th 2 c lu tr ti phn t (5,2) ca
ma trn .
2. To khng gian
- Trong h to pixel , mt pixel c x l nh mt n v ring r c phn bit duy
nht bi mt cp to chng hn (5,2 ) . T quan im ny , mt v tr chng hn (5,2)
khng c ngha . Tuy nhin , s hu ch khi ngh n mt pixel nh mt ming v hnh
vung . T quan im ny , mt v tr chng hn (5.3,2.2) l c ngha v c phn bit
vi (5,2) . Trong to khng gian ny , v tr trong mt nh c nh v trn mt mt
phng v chng c m t bng mt cp x v y ( khng phi r v c nh to pixel ) .
13
14
y = [8.0 12.0];
image(A,'XData',x,'YData',y), axis image, colormap(jet(25))
- Hin th nh
1. 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
2. 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
15
Din t
Binary mask
Filling a region
L qu trnh x l in y ( hay t mu )
mt vng nht nh bng cch ni suy gi
tr pixel t vin ca vng . Qu trnh x l
ny c th c s dng to mt i
tng trong mt nh dng nh bin mt
khi chng c thay th vi gi tr c
trn vi vng nn
Filtering a region
16
Ni suy
Masked filtering
Thao tc ch p t mt php lc ln mt
vng quan tm trong mt nh c phn
bit bng mt n nh phn . Gi tr c lc
c tr li cho cc pixel m mt n nh
phn cha gi tr 1 , gi tr khng c lc
c tr v cho cc pixel m mt n nh
phn cha gi tr 0
17
[x,y,BW,xi,yi] = roipoly(...)
Din gii
+ BW=roipoly(I,c,r) tr li mt vng quan tm c la chn bi hnh a gic c m
t bi vc t c v r . BW l mt nh nh phn c cng kch thc vi nh ban u .
+ BW=roipoly(I) : Hin th nh I trn mn hnh v ta ch ra vng chn vi tr chut .
Nu b qua I , roipoly hot ng trn nh trc hin ti . S dng click chut thm
cc nh ti a gic . Bng cch nhn Backspace hoc Delete xo cc nh chn
trc . Khi chn xong , nhn Enter kt thc vic chn
+BW=roipoly(x,y,I,xi,yi) : S dng vc t x v y to lp h to khng gian khng
mc nh . xi ,yi l vc t c cng chiu di ch ra cc nh ca a gic nh cc v tr
trong h to ny .
+ [BW , xi,yi] = roipoly() tr li to ca a gic trong xi , yi . Ch rng roipoly
lun lun to ra mt a gic kn .
+ [x,y,BW,xi,yi]=roipoly() tr li XData v Ydata trong x v y , mt n nh trong BW
v nh ca a gic trong xi v yi
- Nu roipoly c gi khng c tham s ra , nh kt qu s c hin th trn mt hnh
mi .
Lp tr gip
- nh u vo I c th thuc lp uint8 , uint16 hoc double . nh ra BW thuc lp
logical . Tt c cc u vo v ra khc thuc lp double
V d
I = imread('eight.tif');
c = [222 272 300 270 221 194];
r = [21 21 75 121 121 75];
BW = roipoly(I,c,r);
imshow(I)
figure, imshow(BW)
b Cc phng php la chn khc
- Hm roipoly cung cp mt cch d dng to mt mt n nh phn . Tuy nhin , ta c
th s dng bt c nh nh phn no lm mt n min l nh c cng kch thc vi
nh ang c lc . Chng hn , gi s ta mun lc nh cng I , ch lc nhng pixel
m gi tr ca n ln hn 0.5 . Ta c th to mt mt n tng ng vi lnh :
18
BW = (I > 0.5);
- Ta cng c th s dng hm poly2mask to mt mt n nh phn . Khng ging hm
roipoly , poly2mask khng yu cu mt nh vo . Ngoi ra , ta cn c th s dng hm
roicolor nh ngha mt vng quan tm trn c s mt mu hoc mt vng cng
no . C php ca hm ny nh sau :
BW = roicolor(A,low,high)
BW = roicolor(A,v)
Din gii
- Hm roicolor la chn mt vng quan tm trong mt nh ch s hoc nh cng v
tr v mt nh nh phn
+ BW=roicolor(A,low,high) : tr v mt vng quan tm c la chn vi nhng pixel
nm trong khong gia low v high trong bn mu sc
BW = (A >= low) & (A <= high)
BW l mt nh nh phn
+BW = roicolor(A,v): Tr v mt vng quan tm c la chn vi nhng pixel trong A
m hp vi cc gi tr trong vc t v . BW l mt nh nh phn .
Lp tr gip
- nh vo A phi thuc lp numeric . nh ra BW thuc lp logical
V d
I = imread('rice.png');
BW = roicolor(I,128,255);
imshow(I);
figure, imshow(BW)
2. Lc mt vng
- Ta c th s dng hm roifilt2 x l mt vng quan tm . Khi ta gi hm roifilt2 , ta
ch ra mt nh cng , mt mt n nh phn v mt b lc . Hm roifilt2 lc nh vo
v tr v mt nh m cha cc gi tr c lc cho cc pixel m mt n nh phn cha
1 v cc gi tr cho cc pixel m mt n nh phn cha 0 . Kiu lc ny c gi l lc c
mt n . C php ca hm roifilt2 nh sau :
J = roifilt2(h,I,BW)
J = roifilt2(I,BW,fun)
J = roifilt2(I,BW,fun,P1,P2,...)
19
Din gii
+ J=roifilt2(h,I,BW ) : Lc d liu trong I vi b lc tuyn tnh hai chiu h . BW l mt
nh nh phn c cng kch thc vi nh gc v c s dng nh mt mt n cho vic
lc . Hm roifilt2 tr v mt nh cha cc gi tr c lc trong vng chn ( hay cc
pixel m BW c gi tr 1 )
+ J=roifilt2(I,BW,fun) : X l d liu trong I s dng hm fun . Kt qu , J cha cc gi
tr c tnh ton cho cc pixel m ti BW cha 1 v gi tr thc trong I cho cc
pixel m ti BW cha gi tr 0 .
+ J=roifilt2(I,BW,fun,P1,P2) Truyn thm cc tham s P1,P2 cho hm fun
Lp tr gip
- Vi cu trc m c cha b lc h , nh vo I c th thuc lp uint ,uint16 hoc double
v nh ra J c cng lp vi nh vo .
V d
I = imread('eight.tif');
c = [222 272 300 270 221 194];
r = [21 21 75 121 121 75];
BW = roipoly(I,c,r);
h = fspecial('unsharp');
J = roifilt2(h,I,BW);
imshow(J), figure, imshow(J)
hiu r hn v p dng b lc cho mt vng , ta hy xem xt c th mt v d sau :
1. c mt nh :
I = imread('pout.tif');
2. To mt n : S dng chut to vng chn v ly mt n tr v qua BW
3. To b lc
h = fspecial('unsharp');
4. Gi hm roifilt2 , ch ra nh cn lc , mt n v b lc
I2 = roifilt2(h,I,BW);
imshow(I)
figure, imshow(I2)
Ch nh thao tc lc
20
21
J = roifill(I,BW)
[J,BW] = roifill(...)
J = roifill(x,y,I,xi,yi)
[x,y,J,BW,xi,yi] = roifill(...)
Din gii
- Hm roifill in y trong mt vng a gic trong mt nh cng . N tuyn tnh
mt cch mt m cc gi tr pixel t pha vin ca a gic vo pha trong a gic bng
cch gii phng trnh Laplace . Hm roifill c th c s dng , chng hn xo mt
i tng nh trong mt nh
+ J=roifill(I,c,r) : in y mt a gic c ch ra bi cc vc t c cng chiu di c v r
. Chng cha to hng - ct ca cc pixel trn cc nh ca a gic .
+ J=roifill(I) : Hin th nh I trn mn hnh v ta la chn vng a gic bng tr
chut . Nu b qua I , hm thao tc trn nh ang chn . S dng phm Backspace hoc
Delete xo cc nh trc chn . Khi chn xong , dng phm Enter kt thc
chn
+ J=roifill(I,BW) : S dng BW ( mt nh nh phn cng kch thc vi I ) nh mt mt
n . Hm roifill s in y vng trong I tng ng vi cc pixel khc 0 trong BW . Nu
c nhiu vng , roifill thi hnh tuyn tnh ho trn mi vng c lp
+[J , BW ]=roifill() : tr v mt n nh phn c s dng tnh ton pixel no I s
in y . BW l mt nh nh phn c cng kch thc vi I
+ J=roifill(x,y,I,xi,yi) : S dng vc t x v y thnh lp mt h to khng gian
khng mc nh . xi , yi c cng di ch ra nh ca a gic
+ [x,y,J,BW,xi,yi]=roifill() : tr li Xdata v Ydata trong x v y , nh ra J , mt n nh
BW v nh a gic trong hai vc t xi , yi .
Lp tr gip
- nh vo I uint8 , uint16 hoc double . BW c th l bt c kiu s hoc logical .
V d
I = imread('eight.tif');
c = [222 272 300 270 221 194];
r = [21 21 75 121 121 75];
J = roifill(I,c,r);
22
imshow(I)
figure, imshow(J)
III X l nh m
1. Bng thut ng
Tn thut ng
Din gii
deconvolution
Distortion operator
2. Th no l lm m ?
a - Nguyn nhn ca s m
- S lm m hay s phai nht ca mt nh c th gy ra bi nhiu tc nhn :
+ Chuyn ng trong khi capture nh - bi camera hoc khi thi gian l sng nhiu c
s dng - bi vt
+ Ngoi vng tiu c ca ng knh , s dng mt ng knh c gc m rng , s hn lon
ca mi trng , thi gian l sng ngn s lm gim s lng phtn c bt gi
(captured)
b - Cc ch chng m nh
- Mt nh b m hay b phai nht c th c m t vn tt bi phng trnh g=Hf+n
trong
+ g : nh b m
+ H : Tc nhn lm mo cng c gi l PSF .
23
+ f : nh gc
+ n : Nhiu ph , c to ra trong qu trnh nhn nh , n lm hng nh
Ch : nh f thc t khng tn ti . nh ny i din cho bc nh m ta c nu tnh
trng thu nhn nh l hon ho
Tm quan trng ca PSF
- Da trn ch ny , tc v chnh ca vic chng lm m l Deconvolve nh b m vi
PSF . minh ho , v d ny s ly 3 nh khng b m v c lm m chng bng cch
convolve n vi PSF . V d s dng hm fspecial to mt PSF m phng mt chuyn
ng m , ch ra chiu di ca m tnh bng pixel ( LEN=31 ) v gc m tnh theo
( THETA=11) . Mt khi PSF c to , v d s dng hm imfilter convolve PSF vi
nh gc I to nh b lm m Blurred .
I = imread('peppers.png');
I = I(60+[1:256],222+[1:256],:); % crop the image
figure; imshow(I); title('Original Image');
LEN = 31;
THETA = 11;
PSF = fspecial('motion',LEN,THETA); % create PSF
Blurred = imfilter(I,PSF,'circular','conv');
figure; imshow(Blurred); title('Blurred Image');
3. S dng cc hm khi phc nh m
- Toolbox x l nh ca Matlab gm c 4 hm khi phc nh m bao gm :
+deconvwnr : S dng b lc Wiener
+ deconvreg : S dng b lc c quy tc ho
+ deconvlucy : S dng gii thut Lucy-Richardson
+ econvblind : S dng gii thut blind deconvolution
- Tt c nhng hm ny chp nhn mt PSF v mt nh b m nh l cc tham s chnh
ca n .Vi hai hm u tin , ta cung cp mt s thng tin v nhiu gim s khuch
i nhiu n mc c th trong qu trnh khi phc .
- Hm deconvlucy thi hnh mt cch nhanh chng gii thut Lucy-Richardson . Hm ny
thc hin nhiu vng lp , s dng k thut ti u v thng k Poisson . Vi hm ny , ta
khng cn phi cung cp thng tin v nhiu ph trong nh b bn
24
- Hm deconvblind thi hnh gii thut blind deconvolution m khng cn nhn ra PSF .
Khi ta gi hm deconvblind , ta truyn mt tham s nh l ga tr on bit ban u
PSF . Hm deconvblind tr li mt PSF c khi phc khi phc nh . S thi hnh
s dng cng ch suy gim v lp nh hm deconvlucy .
Ch : Ta c th cn phi thi hnh nhiu qu trnh kh m lp i lp li , mi ln thay
i tham s truyn vo hm kh m cho ti khi thu c mt nh gn xp x vi nh
gc .
- trnh b rung ng trong nh c kh nhiu , ta c th s dng hm edgetaper
tin x l nh trc khi truyn n cho hm kh m .
a - Kh m vi b lc Wiener
- S dng hm deconvwnr kh m mt nh s dng b lc Wiener . B lc ny c th
c s dng rt hiu qu khi c tnh tn s ca nh v nhiu ph l bit t nht l vi
bc . Trong trng hp khng c nhiu , b lc Wiener gim ti b lc o l tng .
- V d sau kh nhiu trong mt nh b m c to trc y , ch ra cng mt hm PSF
c s dng to m . V d ny cng minh ho tm quan trng ca vic bit v PSF
hm gy ra m . Khi chng ta bit chnh xc v PSF , kt qu ca vic kh m c th
kh hiu qu .
1. c mt nh vo khng gian lm vic ( tng tc qu trnh kh m , v d ny cng
ct nh )
I = imread('peppers.png');
I = I(10+[1:256],222+[1:256],:);
figure;imshow(I);title('Original Image');
2. To hm PSF
LEN = 31;
25
THETA = 11;
PSF = fspecial('motion',LEN,THETA);
3. To s m gi trn nh
Blurred = imfilter(I,PSF,'circular','conv');
figure; imshow(Blurred);title('Blurred Image');
4. Kh m cho nh
wnr1
deconvwnr(Blurred,PSF);
figure;imshow(wnr1);
title('Restored, True PSF');
Tinh ch kt qu
26
2. To hm PSF lm
PSF
m nh
fspecial('gaussian',11,5);
3. Lm m nh v thm
nhiu vo nh
Blurred = imfilter(I,PSF,'conv');
V = .02;
BlurredNoisy = imnoise(Blurred,'gaussian',0,V);
figure;imshow(BlurredNoisy);title('Blurred and Noisy Image');
27
figure,imshow(reg1),title('Restored Image');
28
29
- Vng lp Lucy-Richardson thc cht nhn ra kiu nhiu u tin . Ta phi nhn ra kiu
nhiu th hai , nu khng n c th l nguyn nhn cc pixel vi cc phton ti mc
thp s nhn gi tr m .
- Hm deconvlucy s dng tham s vo READOUT iu khin camera c ton b
nhiu . Gi tr ca tham s ny in hnh l tng ca nhiu tng cng v nhiu nn . Gi
tr ca tham s READOUT ch ra mt lch m bo rng tt c cc gi tr u dng .
V d : S dng hm deconvlucy kh m mt nh
- minh ho , v d ny s dng hm deconvlucy , n m phng mt nh b m v
nhiu bng cch convolve mt b lc Gauss vi mt nh ( s dng hm imfilter ) v sau
thm nhiu Gauss ( s dng hm imnoise ) .
1. c mt nh vo khng gian lm vic .
I = imread('board.tif');
I = I(50+[1:256],2+[1:256],:);
figure;imshow(I);title('Original Image');
2. To hm PSF
lm m nh
PSF
fspecial('gaussian',5,5);
3. To m nh v
thm nhiu vo nh
Blurred = imfilter(I,PSF,'symmetric','conv');
V = .002;
BlurredNoisy = imnoise(Blurred,'gaussian',0,V);
figure;imshow(BlurredNoisy);title('Blurred and Noisy Image');
30
4.
dng
hm
devconlucy khi
phc nh gc , ch ra
hm PSF c s
trn deconvolution
hm
deconvblind kh
m mt nh . Gii thut
ny c th c s
dng
dng
hiu
qu
khi
v m hoc nhiu c
bit
Hm
31
2. To hm PSF lm
PSF
m nh
fspecial('motion',13,45);
figure; imshow(PSF,[],'notruesize'); title('Original PSF');
3. To m trn nh
32
Blurred = imfilter(I,PSF,'circ','conv');
figure; imshow(Blurred); title('Blurred Image');
4. Kh m nh , to
mt s c lng
ca PSF
- quyt nh kch
thc ca PSF ,
kim tra nh m v o chiu rng ca m ( theo pixel ) xung quanh mt vt c hnh dng
nht nh . Trong nh m mu , ta c th o m gn vi ng vin t o ca ngi n
ng . Bi v kch thc ca PSF l quan trng hn gi tr ca n , ta c th ch ra mt
mng ton s 1 nh l PSF ban u .
- Hnh sau y ch ra mt s khi phc m s phng on ban u v kch thc ca PSF
l ging vi kch thc ca PSF gy ra m . Trong ng dng thc , ta c th cn chy
li hm deconvblind , kim tra PSF vi cc kch thc khc nhau cho ti khi nhn c
mt kt qu n nh . PSF c khi phc tr li bi mi ln deconvolution c th cung
cp mt ch dn c gi tr cho kch thc ti u ca PSF .
INITPSF = ones(size(PSF));
[J P]= deconvblind(Blurred,INITPSF,30);
figure; imshow(J); title('Restored Image');
figure; imshow(P,[],'notruesize');
title('Restored PSF');
33
34
6. Tinh ch gi tr c
35
IV Mu sc
1. Bng thut ng
Tn thut ng
Din gii
Approximation
Indexed image
nh m cc gi tr pixel ca n c nh
s trc tip trong mt bn mu . Trong
Matlab , mt nh ch s c i din bi
mt mng thuc lp uint8 , uint16 hoc
double . Bn mu lun l mt mng
mx3 thuc lp double .
Intensity image
36
nh m trong mi pixel c ch nh
r 3 mu R,G,B . Trong Matlab , mt nh
RGB c i din bi mt ma trn mxnx3
thuc lp uint8 , uint16 hoc double .
37
38
39
40
4.
Dithering
- Khi s dng hm rgb2ind hoc imapprox gim s lng mu trong mt nh , nh kt
qu trng xu hn nh gc bi v mt s mu b mt . Hm rgb2ind v imapprox c hai
u thc hin dithering tng s lng mu trong nh kt qu . Dithering thay i mu
sc ca cc pixel mt vng ln cn v vy , mu sc trung bnh ca mi vng xp x
mu gc .
- Chng hn mt v d xem dithering lm vic ra sao , xem xt mt nh cha mt s
pixel mu cam ti m khng c mt s tng hp chnh xc trong bn mu . to ra
sc thi cam ny , toolbox la chn s kt hp mu t bn mu . N s trn 6 pixel li
vi nhau thnh mt nhm , xp x sc thi hng . T mt kha cnh no , cc pixel
41
2. To mt nh ch s vi 8
mu m khng trn
[X_no_dither,map]=rgb2ind(rgb,8,'nodither');
figure, imshow(X_no_dither,map);
3. To mt nh ch s 8
mu c trn
[X_dither,map]=rgb2ind(rgb,8,'dither');
figure, imshow(X_dither,map);
rng
nh
dithering c s lng
c v hi nht . nh
42
43
Din gii
Chuyn i c tr gip
XYZ
xyY
uvL
uvL
L*a*b
L*ch
Size
Bytes Class
1x1
I_xyz
384x512x3
I_rgb
384x512x3
45
46
hay
sng )
bin i
n 1 ,
mu
tng
ng s
cng
sng
hn .
- Hnh
sau
minh
ho
khng
gian mu
HSV
47
48
V - Bin i nh
- S biu din ton hc cho mt nh thng l mt hm vi hai bin khng gian f(x,y) .
Gi tr ca hm ti mt v tr ( x,y ) i din cho cng ca nh ti v tr . Thut
ng bin i ( transform ) nhm ni n mt s biu din ton hc tng t ca nh .
1. Bng thut ng
Tn thut ng
Din gii
Discrete transform
L bin i m gi tr u vo v ra ca n
l cc mu ri rc , bin i ny thng
thun li cho cc thao tc ca my tnh .
Bin i ri rc c ng dng bi Matlab
v toolbox x l nh bao gm bin i
Fourier ri rc ( DFT ) v bin i c-sin
ri rc ( DCT )
Frequency domain
49
Spatial domain
Transform
1
f (m, n) 2 F (1, 2 )e j1m e j2n d12
4 1 2
50
51
52
- S dng hm lgarit gip cho vic nhn r c tnh ca bin i Fourier cc vng m
gi tr F (1 , 2 ) gn bng 0 . minh ho , hy xem biu din trc quan cc bin i
Fourier sau :
b- Bin i Fourier ri rc
53
- Matlab s dng cc hm fft , fft2 v fftn s dng thut ton bin i Fourier nhanh cho
vic tnh ton DFT mt chiu , hai chiu v N chiu tng ng . Cc hm ifft, ifft2 v
ifftn tnh ton DFT ngc .
Quan h vi bin i Fourier
- Ta c quan h biu din bng cng thc sau :
54
V d :
1. To ma trn f tng t nh hm f(m,n) ch nht xt trc y . Hm f(m,n) bng 1
trong vng ch nht v bng 0 trong vng khc . S dng mt nh nh phn thay th
cho f(m,n)
f = zeros(30,30);
f(5:24,13:17) = 1;
imshow(f,'notruesize')
2. Tnh ton v biu din trc quan bin i Fourier bi nhng lnh sau y :
F = fft2(f);
55
F2 = log(abs(F));
imshow(F2,[-1 5],'notruesize'); colormap(jet); colorbar
56
57
58
C=
8.0000
9.0000 15.0000
7.0000
6.0000
9.0000
2.000
59
4. quan st v tr ca
mu trong nh , tm
nh ngha mt
60
3. Bin i c-sin ri rc
- Bin i c-sin ri rc ( DCT ) biu din mt nh nh l tng ca cc hm sin vi bin
v tn s bin i . Hm dct2 tnh DCT hai chiu ca mt nh . DCT c tnh cht m
vi cc nh in hnh , hu ht cc thng tin c ngha v nh c tp trung vo cc h
s ca DCT . V l do ny , DCT thng c s dng trong cc ng dng nn nh .
Chng hn ,DCT l trung tm ca gii thut nn nh theo chun quc t thng c bit
vi tn JPEG ( tn ny do nhm pht trin t ra : Joint Photographic Experts Group )
- DCT hai chiu ca ma trn A c kch thc MxN c nh ngha nh sau :
61
- Biu thc DCT ngc c th c xem xt khi coi rng mi ma trn A kch thc MxN
nh l tng ca MN hm c dng :
- Nhng hm
ny c gi l
nhng hm c
s ca DCT . H
s DCT Bpq c
th c xem nh
trng
cho
mi hm c s .
Vi cc ma trn
8x8 , 64 hm c
s c minh
ho bi nh sau :
62
63
64
0 0 0 0 0 0 0 0];
B2 = blkproc(B,[8 8],'P1.*x',mask);
I2 = blkproc(B2,[8 8],'P1*x*P2',T',T);
imshow(I), figure, imshow(I2)
65
Chng hn , tch phn ng (line integral ) ca f(x,y) theo chiu thng ng l php
chiu ca f(x,y) trn trc x , tch phn ng theo chiu nm ngang l php chiu ca
f(x,y) trn trc y . Hnh sau m t cc php chiu dc , ngang ca hm hai chiu :
66
67
68
69
70
71
Hm iradon sau c gi to li nh I
IR=iradon(R,theta);
- Trong v d trn , php chiu c tnh ton t nh gc I . Trong hu ht cc ng dng ,
khng c nh gc no c t php chiu c nh dng . Chng hn , tomography
hp th tia X , php chiu c to ra bng cch o c s suy gim pht x xuyn qua
mt mu vt l cc gc khc nhau . nh gc c th xem nh vng giao nhau vi vt
mu , trong , cng i din cho mt ca vt mu . Php chiu c thu thp s
dng phn cng c bit v sau nh bn trong vt mu c to li vi hm iradon .
iu ny ngn nga vic trn nh trong cc vng trong sut khc bn trong vt mu .
- Hm iradon to li mt nh t php chiu song sogn . Trong hnh hc chiu song song ,
mi php chiu c to thnh bi mt tp hp cc tch phn ng thng qua mt nh
mt gc nht nh .
- Hnh sau y minh ho hnh hc song song c s dng ra sao trong k thut hp th
tia X . Ch rng s lng b pht v s lng sensor l bng nhau n . Mi sensor s
o s pht x c pht ra t cc b pht tng ng v suy gim pht x cho php o
c mt khi lng ca vt th . iu ny tng ng vi tch phn ng c tnh
ton trong bin i Radon .
73
74
IR = iradon(R,theta,'Hamming');
iradon cng cho php ta ch ra tn s c chun ho , D - trn , vi b lc c p
ng 0 . D phi c gi tr nm trong khong [0,1] . Vi la chn ny , trc tn s c
nh t l li cho ton b b lc c nn y trong khong tn s [0,D] . iu ny c
th hu ch trong cc trng hp m php chiu bao gm mt cht thng tin v tn s cao
nhng c nhiu tn s cao . Trong trng hp ny , nhiu c th hon ton b loi b m
khng lm nh hng n s khi phc nh . Li gi sau n hm iradon s thit lp tn
s c tiu chun ho bng 0.85
IR=iradon(R,theta,0.85 )
V d : Ti to mt nh t cc d liu php chiu song song
- Nhng lnh di y ch ra cch ti to mt nh t d liu ca cc php chiu song
song . nh kim tra c th c to ra bi hm phantom . nh phantom minh ho nhiu
c tnh c tm thy trong nh y hc v u ngi . Hnh elp sng bao b ngoi ca
nh ging nh mt hp s v cc elp bn trong ging nh cc chi tit bn trong no b .
1. To nh phantom
P = phantom(256);
imshow(P)
vi
75
76
77
Ngoi php chiu tia song song , ngi ta cng dng php chiu tia hnh qut bin i
nh ( fan-beam projection ) . s dng php chiu ny , dng hm fanbeam ca
toolbox .
VI - 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 .
1 . Bng thut ng :
Tn thut ng
Din gii
Aliasing
Antialiasing
Bicubic interpolation
Bilinear interpolation
Geometric operation
Nearest-neighbor interpolation
Cc gi tr pixel ra c gn gi tr ca
pixel nm trong mt vng gn pixel .
2. 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
79
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 .
3. 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
80
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 :
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 inh phng php ni suy c s dng
81
nearest
bilinear
biculic
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)
82
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
vc t [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 ) .
4. 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
83
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
84
85
5. 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);
86
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 .
87
88
89
90
91
Tham s
Din gii
UData
VData
Xdata
Ydata
XYScale
92
Size
FillValues
V d
93
l 1 v hng
+ V d 1
p mt php dch chuyn nganh 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)
+ V d 2
Mt php bin i chiu c th nh x mt hnh vung thnh mt hnh bn cnh . Trong
v d ny , thit lp mt to vo cho nh vo t y hnh vung sau bin i nh
sang mt hnh 4 cnh vi cc nh (0,0) ,(1,0) ,(1,1) v (0,1) thnh mt hnh 4 cnh vi
cc nh l (-4,2) ,(-8,3) ,(-3,-5) v (6,3) . T vi my xm v s dng ni suy song khi .
To nh ra vi kch thc bng vi nh vo .
I = imread('cameraman.tif');
udata = [0 1]; vdata = [0 1]; % input coordinate system
tform = maketform('projective',[ 0 0; 1 0; 1 1; 0 1],...
[-4 2; -8 -3; -3 -5; 6 3]);
[B,xdata,ydata] = imtransform(I, tform, 'bicubic', ...
'udata', udata,...
'vdata', vdata,...
'size', size(I),...
'fill', 128);
subplot(1,2,1), imshow(udata,vdata,I), axis on
subplot(1,2,2), imshow(xdata,ydata,B), axis on
VI Phn tch v lm giu nh ( nng cao cht lng nh )
1. Bng thut ng
Tn thut ng
Din gii
Adaptive filter
94
Contour
ng trong mt nh dc theo gi tr
cng ca cc pixel nh bng hng s
Edge
Property
S o c nh lng ca mt nh hoc
mt vng nh .
Histogram
Noise
Profile
Mt tp hp cc gi tr cng ly t cc
im cch u nhau dc theo mt on
ng thng hoc ng gp khc trong
mt nh . Vi cc im khng nm tm
ca pixel , gi tr ny c ni suy .
Quadtree decomposition
2. Cc gi tr pixel v thng k
95
96
0.1294
0.5176
0.7765
0.6118
0.1294
0
0.4196
b- Intensity Profile
- Hm improfile tnh ton v v cc gi tr cng dc theo mt ng thng hoc mt
hnh gp khc trong mt nh . Ta c th cung cp to ca ng thng nh mt tham
97
Hm improfile hin th mt
th ca cc d liu nh
98
99
100
d- Biu
(
nh
Image
Histogram )
- Mt biu nh l mt biu ch ra s phn b ca cng ca mt nh ch s hoc
nh cng . Hm biu nh imhist to ra biu ny bng cch to ra n thng ( bins
) cch u nhau , mi ci i din cho mt vng cc gi tr d liu . Sau n tnh ton
s lng cc pixel cho mi vng .
- V d sau y hin th mt nh ca cc ht go v biu vi 64 thng . Biu hin
th mt nh xung quanh 100 tng ng vi nn xm ti trong nh .
1. c vo mt nh v hin th n :
I = imread('rice.png');
imshow(I)
2. Hin th biu ca
nh
102
e- Thng k vn tt
- Ta c th tnh thng k chun ca mt nh s dng cc hm mean2,std2 v corr2 .
mean2 v std2 tnh lch trung bnh v lch tiu chun ca cc phn t ca mt ma
trn . Hm corr2 tnh h s tng quan gia hai ma trn c cng kch thc .
- bit chi tit cc hm ny , xem c php ca chng trong Online Help
f- o c tnh cht ca mt vng nh
- Ta c th s dng hm regionprops tnh ton cc tnh cht ca mt vng nh . Chng
hn , hm regionprops c th o c nhng tnh cht nh : vng , trng tm v khung bao
vin ca vng m ta ch ra .
3. Phn tch nh
- K thut phn tch nh tr li thng tin v cu trc ca mt nh . Cc k thut ny bao
gm :
+ Pht hin cnh ( Edge Detection )
+ Tm vt ca ng bin ( Boundary Tracing )
+ Quadtree Decomposition
103
104
BW1 = edge(I,'sobel');
BW2 = edge(I,'canny');
imshow(BW1)
figure, imshow(BW2)
thnh
nn
( background )
- V d sau s dng
hm
bwtraceboundary
tm
ng bao ca mt
vt
ca
i tng trong
105
3. Tnh cc to
hng v ct ca
ca i tng ta
mun
bwboundary
tm
vt
dng im ny nh l im bt u ca vic tm vt .
dim = size(BW)
106
col = round(dim(2)/2)-90;
row = min(find(BW(:,col)))
4. Gi hm bwtraceboundary tm vt ca bin t im chn . Nh mt tham s cn
thit , ta phi ch ra mt nh nh phn , cc to hng v ct ca im bt u v hng
ca bc u tin . V d ch ra hng bc ( North )
boundary=bwtraceboundary (BW, [row ,col],N);
5. Hin th nh gc v s dng cc to tr v v th trn nh
imshow(I)
hold on;
plot(boundary(:,2),boundary(:,1),'g','LineWidth',3);
107
108
109
110
111
figure, imhist(I,64)
nh
c iu chnh
ca n .
112
biu
Ch nh gii hn iu chnh
- Ta c th ch ra khong ca cc gi tr vo v gi tr ra s dng hm imadjust . Ta ch ra
nhng khong ny trong hai vct v truyn n hm imadjust nh l tham s . Vct
u tin ch ra cc gi tr cng thp v cao m ta mun nh x . Vct th hai ch ra
t l qua ta mun nh x chng
Ch : Ta phi ch ra cc cng nh l cc gi tr gia 0 v 1 bt k nh vo I thuc
lp no .
- Chng hn , ta c th gim tng phn ca mt nh bng cch thu hp khong d
liu . Trong v d di y , o chong ca ngi n ng c mu en l mt s chi
tit no . Hm imadjust nh x khong [0,51] trong nh vo thuc lp uint8 thnh nh ra
[128,255] . iu ny lm sng ng k nh ra v cng m rng khong ng ( dynamic
range ) ca phn ti trong nh gc , lm cho n d dng nhn thy cc chi tit trn chic
o chong . Ch rng , tuy nhin bi v tt c cc gi tr ln hn 51 trong nh gc c
nh x thnh 255 ( trng ) trong nh ra , nh ra xut hin nh va b ra .
I = imread('cameraman.tif');
J = imadjust(I,[0 0.2],[0.5 1]);
imshow(I)
figure, imshow(J)
113
114
115
116
117
118
119
120
121
- Vic thm gin tng phn tuyn tnh lm giu nh kt qu bng cch mi rng hn
khong mu . Trong trng hp ny , khong mu c m rng c nh x trong mi
gii ti mt khong chun gia 0.01 v 0.99 bo ho 2%
5- Loi b nhiu
- Cc nh s c th c nhiu loi nhiu khc nhau . C mt s cch m nhiu c th thm
nhp vo trong nh ph thuc vo vic nh c to ra nh th no . Chng hn :
+ Nu nh c scan t mt nh c chp trn phim , cc ht trn phim l mt ngun
nhiu . Nhiu c th l kt qu ca vic phim b h hng hoc do cht lng ca scanner
+ Nu nh c thu thp trc tip t nh dng s , c ch ca vic thu thp d liu nh (
chng hn nh b pht hin CCD ) c th to ra nhiu
+ S truyn d liu nh cng c th b nhiu tc ng
- Toolbox cung cp mt s cch loi b hoc gim nhiu trong mt nh . Cc cch
khc nhau c s dng cho cc loi nhiu khc nhau . Cc cch bao gm :
+S dng cc b lc tuyn tnh ( Linear Filter )
+ S dng cc b median ( Median Filter )
+ S dng cc b lc thch nghi ( Adaptive Filter )
- m phng tc ng ca cc vn v nhiu ni trn , toolbox cung cp hm
imnoise m ta c th dng thm nhiu vo mt nh .
a- S dng cc b lc tuyn tnh
- Ta c th s dng cc b lc tuyn tnh loi b nhiu trong mt nh . Cc b lc ny
chng hn nh b lc trung bnh hoc b lc Gauss l thch hp . Chng hn , mt b lc
trung bnh c s dng loi b cc ht nhiu t mt nh chp trn phim . Do mi
pixel c thit lp ti gi tr trung bnh ca cc pixel xung quanh n , do vy s bin
ng a phng gy ra bi cc ht nhiu b gim bt .
122
b- S dng cc b lc median
-S dung cc b lc trung bnh tng t nh vic s dng cc b lc trung bnh
( averaging filters ) , mi pixel ra c thit lp gi tr trung bnh ca cc gi tr pixel ln
cn ca pixel vo tng ng . Tuy nhin , vi b lc ny , gi tr ca mt pixel ra c
quyt nh bi median ca cc pixel ln cn hn l gi tr trung bnh . Median thng nh
hn nhiu so vi trung bnh cc gi tr xa nht (c gi l outliers ) . B lc median do
tt hn loi b nhng outlier ny m khng gim sc nt ca nh . Hm
medfilt2 s dng php lc median
- V d sau y so snh vic s dng mt b lc trung bnh v mt b lc median loi
b nhiu l cc ht mui v ht tiu . Loi nhiu ny bao gm mt tp hp cc pixel
ngu nhin c thit lp thnh mu en hoc trng . Trong c hai trng hp , kch c
ca vng xung quanh c s dng lc l 3x3 .
1. c nh v hin th n
I = imread('eight.tif');
imshow(I)
2. Thm nhiu vo nh
J
imnoise(I,'salt
&
pepper',0.02);
figure, imshow(J)
123
124
125
nh gc
nh kt qu
VII Cc thao tc hnh thi
(Morphological Operations )
-
Morphology l mt k thut x l nh da
Din giI
Background
Connectivity
Foreground
Global maxima
Global minima
Morphology
Mt tp hp rng ca cc thao tc x l
nh m x l trn cc hnh dng . Cc thao
tc ny p t mt phn t c cu trc ln
mt nh , to mt nh ra c cng kch
thc vi nh vo . Cc thao tc hnh thi
c bn nht l gin n ( dilation ) v n
mn (erosion )
Neighborhood
Object
Packed binary
Regional maxima
Regional minima
Structuring element
127
2. Gin n v xi mn
- Gin n v xi mn l hai thao tc x l hnh thi c bn . Gin n cng thm cc pixel
ti vng bin ca cc i tng trong mt nh trong khi xi mn loi b cc pixel trn
vng bin ca cc i tng . S lng pixel c thm vo hoc loi b t cc i
tng trong mt nh ph thuc vo kch c v hnh dng ca phn t cu trc c s
dng x l nh . Phn ny s :
+ Cung cp nhng thng tin c bn v vic cc hm gin n v xi mn hot ng nh
th no
+ M t phn t c cu trc v cch to ra chng
+ M t cch thc hin xi mn
+ M t mt s thao tc c bn da trn gin n v xi mn
+ M t cc hm ca toolbox da trn c s ca gin n v xi mn
a-Tng quan v Dilation v Erosion
- Trong cc thao tc gin n v xi mn , trng thi ca mt pixel no trong nh ra
c quyt nh bng vic p t mt quy tc ln cc pixel tng ng v cc pixel ln
cn trong nh vo . Quy tc ny c s dng x l cc pixel nh ngha thao tc gin
n hay xi mn . Bng sau y lit k cc quy tc cho c hai php x l ny ;
Tao tc
Quy tc
Dilation
Gi tr ca cc pixel ra l gi tr ln nht
ca tt c cc pixel trong vng ln cn ca
pixel vo tng ng . Trong mt nh nh
phn , nu bt k pixel no c gi tr 1 ,
pixel ra s l 1
Erosion
Gi tr ca pixel ra l gi tr nh nht ca
tt c cc pixel trong vng ln cn ca pixel
vo tng ng . Nu trong mt nh nh
phn c mt pixel c gi tr 0 th pixel ra c
gi tr 0
128
129
X l cc pixel bin nh
- Cc hm x l hnh thi nh v gc ca phn t cu trc , tm ca n qua cc pixel
quan tm trong nh vo . Vi cc pixel cnh ca mt nh , cc phn ln cn c nh
ngha bi phn t cu trc c th m rng qua bin ca nh
- x l cc pixel trn bin nh ,cc hm x l hnh thi gn mt gi tr ti nhng pixel
khng xc nh ny ging nh cc hm thm vo nh vi mt s hng v ct no .
Gi tr ca nhng pixel thm vo ny thay i vi c thao tc gin n ln xi mn . Bng
sau y m t quy tc thm ( padding ) cho gin n v xi mn trn c nh nh phn v
nh en trng .
Thao tc
Quy tc
Dilation
Erosion
130
To phn t cu trc
131
132
seq = getsequence(sel)
seq =
3x1 array of STREL objects
seq(1)
ans =
Flat STREL object containing 5 neighbors.
Neighborhood:
0
seq(2)
133
ans =
Flat STREL object containing 4 neighbors.
Neighborhood:
0
seq(3)
ans =
Flat STREL object containing 4 neighbors.
Neighborhood:
0
134
135
d- Lm xi mn nh (Eroding an Image )
- lm xi mn mt nh , s dng hm imerode . Hm ny nhn hai tham s chnh :
+ nh vo l nh cn c x l (en trng , nh phn hay nh phn ng gi )
+ Mt phn t cu trc c tr v t hm strel hoc mt ma trn nh phn nh ngha
vng ln cn ca phn t cu trc
- Hm imerode cng chp nhn 3 tham s tu chn l PADOPT , PACKDOP v M .
PADOPT nh hng n kch c ca nh ra . PACKDOPT phn bit nh vo nh l nh
nh phn ng gi ( packed binary image ) . Nu l nh nh phn ng gi , M phn bit
s lng cc hng trong nh gc .
- V d sau lm xi mn mt nh nh phn :
1. c nh vo trong khng gian lm vic ca Matlab
BW1 = imread('circbw.tif');
2. To mt phn t cu trc . on m sau to ra mt phn t cu trc cho .
SE = strel('arbitrary',eye(5));
SE=
Flat STREL object containing 5 neighbors.
Neighborhood:
1
136
d- Kt hp gia gin n v xi mn
- Gin n v xi mn thng c s dng kt hp thc hin cc thao tc x l nh .
Chng hn , nh ngha ca m hnh thi ( Morphological Opening ) l mt thao tc xi
mn tip theo l mt thao tc gin n s dng cng mt phn t cu trc . Tng t ,
nh ngha ca ng hnh thi ( Morphological Closing ) bao gm mt thao tc gin n
theo sau l xi mn cng vi cng phn t cu trc
- Sau y ta s s dng hm imdilate v imerode minh ho vic bt u mt bin i
hnh thi nh th no . Tuy nhin , lu , toolbox cung cp hm imopen thc hin
x l ny .
M bin i hnh thi
- Ta c th s dng m bin i hnh thi lo b cc i tng nh t mt nh trong
khi vn gi nguyn hnh dng v kch thc ca cc i tng ln . Chng hn , ta c th
s dng hm imopen loi b mt ng trn t mt nh , to ra mt nh m ch cha
cc hnh ch nht
- m hnh thi mt nh , thc hin nhng bc sau y :
1. c nh vo trong khng gian lm vic ca Matlab
W1 = imread('circbw.tif');
137
2. To phn t cu trc
SE = strel('rectangle',[40 30]);
- Phn t cu trc phi ln c th loi b cc ng trn khi ta xi mn nh tuy
nhin khng qu ln khi loi b cc hnh ch nht .
3. Xi mn nh vi phn t cu trc
BW2 = imerode(BW1,SE);
imshow(BW2)
- Hai dng m trn s loi b tt c cc ng cong tuy nhin n lm co cc hnh ch
nht
4. phc hi cc
hnh ch nht vi
kch thc ban u , gin n nh va thu c s dng cng phn t cu trc trn
BW3 = imdilate(BW2,SE);
imshow(BW3
138
e- Cc hm da trn c s ca gin n v xi mn
- Ta s xem xt cc thao tc x l nh thng dng da trn c s ca gin n v xi mn
bao gm :
+ nh khung cho nh ( Skeletonization )
+ Xc nh chu vi
- Bng sau y lit k cc hm khc trong toolbox thc hin cc thao tc bin i hnh
thi thng dng da trn c s ca gin n v xi mn
Hm
Chc nng
Bwhitmisss
V ( AND ) l-gc ca mt nh c xi
mn vi cng mt phn t cu trc v nh
b ca n c xi mn vi mt phn t
cu trc th hai
Imbothat
Tr nh gc t mt phin bn ng hnh
thi ca nh . C th c s dng tm
cc mng cng trong mt nh
Imclose
Gin n mt nh v sau xi mn n s
dng cng mt phn t cu trc
Imopen
Xi mn mt nh sau gin n n s
dng cng mt phn t cu trc
Imtophat
Tr mt nh m cu trc t nh gc . C
th c s dng lm tng tng
phn ca mt nh
ng khung cho nh
- l thut ng ch vic bin i tt c cc i tng trong nh thnh cc ng ( b
khung ) m khng thay i cu trc ban u ca nh - s dng hm bwmorph .
BW1 = imread('circbw.tif');
BW2 = bwmorph(BW1,'skel',Inf);
139
imshow(BW1)
figure, imshow(BW2)
Xc nh cc ng chu vi
- y l thut ng ch vic thay th tt c cc i tng trong nh bng cc ng chu
vi ca chng . Hm bwperim tnh cc pixel trn chu vi ca cc i tng trong mt nh .
Mt pixel c xem nh trn chu vi nu n tho hai iu kin :
+ Gi tr pixel bng 1
+ Mt hoc nhiu pixel xung quanh n c gi tr 0
Chng hn , on m sau tm cc pixel trn chu vi ca mt nh nhi phn
BW1 = imread('circbw.tif');
BW2 = bwperim(BW1);
imshow(BW1)
140
figure, imshow(BW2)
3- Ti to hnh thi nh
- Ti to hnh thi l mt phn khc ca k thut x l hnh thi nh . Da trn gin n ,
ti to hnh thi c 3 tnh cht duy nht :
+ X l trn c s hai nh , mt nh ghi v mt mt n ng hn l mt nh v mt phn
t cu trc
+ Qu trnh x l c lp li cho n khi n nh
+ Qu trnh x l da trn c s khi nim v tnh kt ni ( connectivity ) hn l da trn
c s ca phn t cu trc
- Phn ny s :
+ Cung cp cc thng tin c s v ti to hnh thi v m t cch s dng hm
imreconstruct nh th no
+ M t tnh kt ni cc pixel ( pixel connectivity ) nh hng ra sao ln ti to hnh thi
+ M t cch s dng hm imfill - da trn c s ca ti to hnh thi
+ M t mt nhm cc hm khc da trn c s ca ti to hnh thi .
a- nh ghi v mt n ( Marker and Mask )
- X l ti to hnh thi trn mt nh , nh c gi l nh ghi ( marker ) . Qu trnh
x l da trn c s cc c tnh ca mt nh khc , nh c gi l mt n ( mask ) .
im cao nht hay nh trong nh ghi ch ra v tr bt u qu trnh x l . Qu trnh x l
s tip tc cho n khi gi tr nh n nh .
141
12
12
12
12
12
12
12
12
12
8
142
16
16
16
16
16
16
16
16
16
Ti to hnh thi nh l g ?
143
144
+ 8 kt ni ( 8 connected ) : Cc
pixel c kt ni nu cc cnh
Cc kt ni 3 chiu
+ 6 kt ni : Cc pixel c kt ni nu cc mt ca chng tip xc nhau
+ 18 kt ni : Cc pixel c kt
ni nu cc mt hoc cc
145
Chn la mt kt ni
- Kiu ca vng ln cn m ta chn s nh hng n s lng i tng c tm thy
trong mt nh v cc vng bin ca chng . V l do ny , kt qu ca nhiu thao tc bin
i hnh thi thng khc nhau ph thuc vo kiu kt ni m ta chn
- Chng hn , nu ta chn kiu 4 kt ni th nh nh phn ny s cha hai i tng , nu
ta chn kiu 8 kt ni , nh ch c mt i tng .
0
Ch nh cc kt ni tu chn
- Ta c th nh ngha cc vng ln cn bng cch ch ra mt mng 3x3x3x3 ca cc
gi tr 0 ,1 . Cc phn t c gi tr 1 nh ngha kt ni ca ln cn trong quan h vi tm
ca phn t . Chng hn , mng sau y nh ngha mt kt ni Bc/Nam c tc dng
ngt mt nh ra nhiu ct c lp .
CONN = [ 0 1 0; 0 1 0; 0 1 0 ]
CONN =
0
0;
0;
0;
0;
0;
0;
0];
0;
147
T lp cc l hng trong nh
- Mt thao tc t lp hay c s dng l t lp cc l hng ( holes )trong nh. Chng hn
, gi s ta c mt nh nh phn hoc en trng trong cc i tng foreground i din
cho cc hnh cu . Trong nh , nhng i tng ny xut hin nh nhng a . Trc khi
thc hin bt k mt thao tc x l no , ta mun u tin t y cc l hng ( xem nh )
s dng hm imfill
-Do thao tc t lp c s dng rt thng xuyn t lp cc l , hm imfill bao gm
cc c php c bit tr gip tc thao tc ny trn c nh nh phn v nh en trng .
Trong c php ny , ta ch cn ch ra tham s holes , ta khng phi ch ra v tr bt u
trong mi l hng . minh ho , v d sau y s t lp cc l trong mt nh en trng :
[X,map] = imread('spine.tif');
I = ind2gray(X,map);
Ifill = imfill(I,'holes');
148
imshow(I);figure, imshow(Ifill)
149
150
151