You are on page 1of 19

TACH BIEN A NH MAU

1
TACH BIEN ANH MAU

I. C s ly thuyet tach bien
Tach bien la phng pha p thong du ng nhat e tach theo ngha gia n oan trong cac
gia tr c ng o. S gian oa n c tach s dung a o ham bac nhat va bac hai.
ao ha m ba c nhat la cho n trong x ly a nh la gradient (o doc). Gradient cua ha m
2-D ) , ( y x f c nh ngha di dang vect

c
c
c
c
=

= V
y
f
x
f
G
G
f
y
x

Bie n o cua vect nay:
, ) , )
2 / 1
2 2
2 / 1
2 2
/ / ) ( y f x f G G f mag f
y x
c c + c c = + = V = V
e tnh toan n gia n, con so nay c xap x ba ng ca ch s du ng gia tr tuyet oi

y x
G G f + ~ V
Xap x na y van co n di da ng cac ao ha m: o la, chung bang 0 trong cac vu ng co
c ng o kho ng oi, va gia tr chung ty le vi bac cua s thay oi cng o trong
vu ng co cac gia tr pixel bien thien. No c xem la bien o cua gradient hoac xap
x n gian cua no di da ng gradient.
ac tnh c ban cua vect gradient la cac iem cua no la hng co ty le thay oi
ham f tai toa o ) , ( y x ln nhat. Goc xa y ra ty le thay oi l n nha t la:

|
|
.
|

\
|
=

x
y
G
G
y x
1
tan ) , (
Mot trong nh ng phng phap then cho t a ra la c oan a o ham
x
G va
y
G
theo phng phap so . Cac phng phap kha c nhau c du ng bi ham edge c
thao luan sau trong pha n na y.
ao ha m bac hai trong x ly anh c tnh s dung toa n t Laplace. Toan t
Laplace cua ha m 2-D ) , ( y x f c cho d i da ng vi pha n ba c hai nh sau:

2
2
2
2
2
) , ( ) , (
) , (
y
y x f
x
y x f
y x f
c
c
+
c
c
= V
Toan t Laplace t khi c dung e tach bie n v, vi pha n bac hai, de b anh h ng
bi nhie u, bien o cua no sinh ra cac bie n ke p, va kho ng the tach hng bien. Tuy
nhien , toan t Laplace co the la pha n bo sung manh khi s dung ke t h p vi ky
thuat tach bie n khac. V du, ma c du cac bien kep kho ng thch hp e ta ch bien trc
tie p, ac tnh na y co the dung e nh v bie n.
Y tng c ba n a ng sau tach bien la tm cac ni trong anh co cng o thay oi
nhanh, s du ng mo t trong hai tieu chua n tong quat sau:
TACH BIEN A NH MAU

2
-Tm ca c ni ao ha m bac nhat cua cng o sa ng co bie n o hn mot
ng ng.
-Tm cac ni ao ham bac hai cua c ng o sang co cho cheo 0.
Cac ha m bien cua IPT (Image Processing Toolbox) cung cap mo t so c lng ao
ham da tren cac tie u chuan mi noi ti. oi vi mot so trong nh ng c l ng
nay, co the xac nh bo tach bien co nha y vi cac bie n ngang hay bien do c hay
khong hoa c ca hai. Cau truc to ng quat cua ha m na y la
[g, t] = edge (f, method, parameters)
Trong o f la a nh au va o, method la mo t trong cac phng pha p c liet ke trong
bang 1, va parameters la cac tham so the m vao c giai thch sau. Trong ngo ra, g
la mang logic v i cac gia tr 1 tai cac v tr cac iem bie n c ta ch va 0 khi khong
c tach. Tham so t la tu y chon, no cho ngng c du ng bi bien e xac nh
cac gia tr gradient u manh e c goi la cac iem bien.
Bang 1
Bo tach bien Cac ac tnh c ban
Sobel

Tm bie n du ng xa p x Sobel vi ao ha m cho trong hnh
1(b)
Prewitt Tm bie n dung xa p x Prewitt vi ao ham cho trong
hnh 1(c)
Roberts Tm bien du ng xap x Roberts vi ao ham cho trong
hnh 1(d)
Laplacian of a
Gaussian (LoG)

Tm bien ba ng ca ch tm ie m che o 0 sau khi loc qua bo
loc Gauss
Zero crossings Tm bien ba ng ca ch tm ie m che o 0 sau khi loc qua bo
loc c xac nh bi ngi s du ng
Canny Tm bien bang cach tm ca c cc ai a phng cua
gradient ) , ( y x f . Gradient c tnh toan du ng ao ham
cua bo loc Gauss. Phng phap du ng hai ng ng e
tach cac bie n manh va yeu, va go p cac bien ye u ngo
ra ch khi chung c ket noi vi cac bien ma nh. Do o ,
phng phap nay thch hp hn e tach cac bien ye u
that s.






TACH BIEN A NH MAU

3
I.1.Bo tach bien Sobel

Bo tach bien Sobel s du ng cac mat na trong hnh 1(b) e xap x ao ham bac nhat
x
G va
y
G . Noi cach khac, gradient tai iem tam trong mo t la n ca n c tnh theo
bo tach Sobel:

2 / 1 2
7 4 1 9 6 3
2
3 2 1 9 8 7
2 / 1
2 2
} )] 2 ( ) 2 [( )] 2 ( ) 2 {[( z z z z z z z z z z z z G G g
y x
+ + + + + + + + + = + =
Khi o , ta noi rang v tr (x,y) la pixel bien ne u T g > tai v tr o , trong o T la
mo t ngng c ch nh.

z1
z4
z7
z2 z3
z6
z9 z8
z5
Image neighborhood


-1 2 -1
0 0 0
1 1 1
-1 0 1
-2 0 2
1 0 -1
Sobel

) 2 ( ) 2 (
3 2 1 9 8 7
z z z z z z G
x
+ + + + = ) 2 ( ) 2 (
7 4 1 9 6 3
z z z z z z G
y
+ + + + =

-1 -1
0 0 0
1 1 1
-1 0 1
-1 0 1
1 0 -1
-1
Prewitt

) ( ) (
3 2 1 9 8 7
z z z z z z G
x
+ + + + = ) ( ) (
7 4 1 9 6 3
z z z z z z G
y
+ + + + =

0
0
-1
1
0
0 1
-1
Roberts


5 9
z z G
x
=
6 8
z z G
y
=
Hnh 1. Mot so mat na tach bien va ao ham bac nhat chung hie n thc
TACH BIEN A NH MAU

4
Bo tach bien Sobel co the c thc hien bang cach loc mot a nh, f, (du ng imfilter)
vi mat na ben tra i trong hnh 1(b), lo c lai f vi mat na khac, bnh phng ca c gia
tr pixel vi moi anh c loc, cong hai ke t qua, va tnh ca n bac hai. Cac chu thch
tng t oi vi cac pha n th 2 va th 3 trong bang 1. Ham edge n gian cac goi
toan t trc thanh mo t ha m goi va the m vao cac dac tnh khac, chang han nh
chap nha n mot gia tr anh ngng hoac xac nh ngng mo t ca ch t o ng. Them
vao o, edge cha cac ky thuat tach bie n khong hien thc trc tie p c bang
imfilter
Cu pha p goi bo tach Sobel tong quat la
[g , t ] = edge(f, sobel, T, dir)
Trong o f la a nh au va o, T la ngng c ch nh va dir xa c nh h ng can
tnh tach bie n: ngang, doc hoac ca hai. Nh a noi, g la anh logic cha gia tr 1
tai nh ng ni bie n c tach va gia tr 0 tai nhng ni bie n c tach. Tham so t
trong ngo ra la tuy chon. No la gia tr ng ng c dung bi edge. Ne u T d c ch
nh th t = T. Mat khac ne u T khong c ch nh (hoac e ro ng []), f se at t
bang vi ng ng do no t o ng xac nh va sau o s dung cho vie c tach bien. mot
trong nhng ly do c ba n cho viec go p t trong tham so ngo ra la e nhan gia tr khi
tao cho ngng. Ha m edge s dung bo ta ch Sobel ma c nh ne u cu phap
g = edge (f), hoa c la [g, t] = edge(f).

I.2.Bo tach bien Prewitt

Bo tach bien Prewitt s du ng mat na trong hnh 1(c) e xap x theo phng phap so
ao ha m ba c nhat
x
G va
y
G . Cu phap goi tong quat la:
[g , t ] = edge(f, prewitt, T, dir)
Tham so ham na y o ng nhat v i tham so Sobel. Bo tach Prewitt hi n gia n hn
e hie n th c bang ma y tnh so vi bo tach Sobel, nhng no co khuynh hng sinh
ra mot chut nhieu. (No co the c the hie n qua he so 2 trong bo tach bien la m
trn)

I.3.Bo tach bien Roberts

Bo tach bien Roberts s du ng mat na trong hnh 1(d) e xa p x theo phng pha p
so ao ham bac nhat
x
G va
y
G . Cu phap goi tong quat la:
[g , t ] = edge(f, roberts, T, dir)
Tham so ham na y ong nhat vi tham so Sobel. Bo tach Roberts la mot trong
nhng bo tach bie n xa nhat trong x ly anh so va theo hnh 1(d), no cu ng n gian
nhat. Bo tach bie n na y c dung t hn ang ke cac bo tach khac do chc na ng
gi i ha n cua no (v du, no khong oi xng va kho ng the c to ngquat hoa e tach
TACH BIEN A NH MAU

5
bie n la tha so cua 45
0
). Tuy nhien, no va n c dung thng xuyen trong hie n
th c phan cng khi tnh n gian va toc o la cac yeu to chi pho i.

I.4.Bo tach bien Laplace cua ham Gauss (LoG)

Xet ham Gauss

2
2
2
) (

r
e r h

=
Trong o
2 2 2
y x r + = va la o le ch chuan. a y la ha m trn, neu no chap v i
mo t anh, se la m m anh. o m c xac nh bi gia tr . Toan t Laplace cua
ham nay (ao ham bac 2 theo r):

2
2
2
4
2 2
2
) (


r
e
r
r h


= V
Vi nhng ly do ro rang, ham na y goi la toan t Laplace cua ha m Gauss (LoG). V
ao ha m ba c hai la toan t tuyen tnh, chap (loc) vi mot a nh bang ) (
2
r h V giong
nh au tie n cha p anh vi ham trn va sau o tnh ket qua cua toan t Laplace.
ay la cha khoa kha i niem c ban cua bo tach LoG. Chu ng ta chap anh ba ng
) (
2
r h V biet no co 2 tac o ng: no lam mn anh (do o gia m nhieu) va no tnh toa n
t Laplace, lam cong mot anh bie n ke p. nh v cac bie n sau o tm cac iem giao
zero gia cac bie n ke p. Cu pha p goi to ng quat la :
[g , t ] = edge(f, log, T, sigma)
Trong o sigma la o lech chua n va cac tham so co n lai giong phan trc. Gia tr
mac nh cua sigma la 2. Nh a noi, bo qua bat c bie n nao kho ng ln hn T. Neu
T khong c cho, hoa c rong [ ], edge cho n gia tr mot cach t ong. at T t 0 tao
cac bien la cac ng vien kn, mot ac tnh quen thuoc cua phng phap LoG.

I.5.Bo tach bien iem giao zero

Bo tach bien nay da tren khai niem giong phng pha p LoG, nhng phe p chap
c th c hien s dung ha m loc c ch nh H. Cu phap goi ha m
[g , t ] = edge(f, zerocross, T, H)
Cac tham so khac c giai thch nh bo tach LoG




TACH BIEN A NH MAU

6
I.6.Bo tach bien Canny

Bo tach bien Canny (Canny [1986]) la bo tach bien manh nhat cung cap bi ham
edge. Co the to m tat phng phap nay nh sau:
1. Anh c la m trn s du ng mot bo loc Gauss vi o lech chua n , e
giam nhieu
2. Gradient cuc bo,
2 / 1
2 2
) , (
y x
G G y x g + = va hng bie n
) ( tan ) , (
1
x
y
G
G
y x

= , c tnh toan ta i moi ie m. Mot trong 3 ky thuat
au trong bang 10.1 e tnh
x
G va
y
G . Mot ie m bien c nh ngha la
ie m co o dai la c c ai a phng theo h ng cua gradient.
3. ie m bien c xac nh (2) tang le n en cac nh trong gradient bie n o
anh. Sau o thuat toan tm nh cua cac nh nay va a t gia tr 0 va o tat ca
pixel kho ng that s na m tren nh v va y tao ra mot ng mong ngo ra,
mo t qua trnh c biet la s nen lai khong cc a i. Cac pixel nh c
at ngng du ng hai ngng,
1
T va
2
T . Cac pixel nh ln hn
2
T c goi
la cac pixel bien manh. Cac pixel nh nam gia
1
T va
2
T c goi la
cac pixel bien ye u.
4. Cuoi cung, thua t toan thc hien bie n ket noi ba ng cach ke t h p cac pixel
ye u ma co dang ket no i-8 vi cac pixel manh.

Cu pha p bo tach bie n Canny la:
[g , t ] = edge(f, canny, T, sigma)
Trong o T la mot vect,
2 1
T T T = la 2 ngng c giai thch trong bc
3 cua thu tuc trc va sigma la o le ch chuan cua bo lo c lam trn. Neu t go p
vao thong so ngo ra, no la vect 2 phan t cha 2 gia tr ngng c du ng
bi thua t toan. Cu phap n gia n c giai thch nh ca c phng phap khac,
bao go m vie c t ong tnh toan T neu no khong c cung ca p. Gia tr mac
nh cua sigma la 1.

TACH BIEN A NH MAU

7
II.C s tach bien anh mau

II.1. ac tnh anh mau trong Matlab

Co ng cu x l a nh ma u trong Matlab th c hien hai kieu anh ma u hoac la indexed
images hoa c la RGB images.

II.1.1 Anh RGB

Anh RGB la mot mang pixel mau M x N x 3. Moi pixel ma u la s ket hp cua ba
thanh mau red, green va blue cua anh ma u tai mot v tr khong gian bat k (xem
hnh 2).

Hnh 2. Cach ma nh ng pixels cua mot anh RGB c hnh thanh t
cac pixels cua ba anh thanh phan

Mot anh RGB co the c xem nh la s sap xep cua ba anh mc xam ma khi cho
vao cac ngo va o red, green va blue cua mot ma n hnh mau se tao ra mot anh mau
tre n man hnh. Ba anh c hnh tha nh t mot a nh mau RGB la cac anh thanh phan
red, green va blue. L p d lie u cua cac a nh tha nh phan xac nh mien gia tr cua
chu ng. Neu mot a nh RGB thuo c l p double th mien gia tr la [0, 1]. Tng t ta co
mien gia tr la [0, 255] hoac [0, 65535] tng ng vi cac anh ma u RGB thuoc lp
uint8 hoac uint16. So lng bit c s dung e ai die n cho cac gia tr pixel cua
nhng anh tha nh phan xac nh chie u sau bit cua mot anh RGB. V du moi anh
thanh phan la mot anh 8 bit suy ra anh RGB tng ng se la 24 bit. No i chung so
bit trong cac a nh tha nh pha n la nh nhau. So ma u co the co trong mo t anh RGB la
TACH BIEN A NH MAU

8
3
) 2 (
b
, trong o b la so bit trong moi anh tha nh phan. V du trng hp 8 bit th so
mau la 16,777,216.
Gia s fR, fG va fB ai dien cho ba anh thanh pha n RGB. Mo t anh RGB c hnh
thanh t nh ng a nh na y ba ng ca ch s du ng toan t cat (concatenate) e sa p xep
cac anh nay:
rgb_image = cat(3, fR,fG,fB)
Khong gian ma u RGB thng c bieu die n di dang hnh hoc nh la mot khoi
mau RGB (no c mo ta hnh 2). Cac mau s ca p (red, green, va blue) va cac ma u
th cap ( cyan, magenta, va yellow) c bo tr tai cac nh nh hnh 3.

Hnh 3. S o nguyen ly cua hnh hop ma u RGB bieu dien cac mau s
cap va th cap tai cac nh. Cac iem doc theo ng cheo chnh
co gia tr xam t en tai goc toa o en trang tai ie m (1,1,1)

II.1.2. Anh Index

Anh index co hai thanh phan : mot ma tran d lie u so nguye n, X, va mot ma tran
ban o ma u, map. Ma tran map la mo t mang m x 3 cua lp double cha cac gia tr
trong mien [0 1]. Chie u dai, m, cua map ba ng vi so ma u ma no nh co . Moi ha ng
cua map xa c nh cac thanh pha n red, green va blue cua t ng ma u n. Mau cua
mo i pixel c xac nh ba ng cach s dung gia tr nguyen tng ng cu a ma tran X
ch e n map (ba n o mau). Ne u X thuo c lp double th tat ca nh ng thanh phan cua
no vi nhng gia tr nho hn hoac ba ng 1 se ch e n ha ng au cua map, tat ca
nhng tha nh pha n vi gia tr 2 ch en hang th 2 va va n va n. Ne u X thuoc l p
TACH BIEN A NH MAU

9
uint8 hoa c uint16 th ta t ca nh ng thanh phan vi gia tr 0 ch e n hang au cua
map, tat ca nh ng tha nh phan vi gia tr 1 ch e n hang 2 va van van. Nh ng khai
nie m na y c mo ta trong hnh 4.

Hnh 4. Cac phan t cua mot anh index. Chu y rang gia tr cua mot
phan t cua mang so nguyen X xac nh th t hang trong ban o
mau. Moi hang cha mot bo ba RGB va L la tong so hang.

e hien th mot anh index ta co the viet:
>> imshow(X,map)
hoac ca ch khac:
>> image(X)
>> colormap(map)
Mot ban o ma u c lu tr vi mo t anh index va t ong c load vi anh khi
ham imread c s dung e load anh.

oi khi rat can thiet e xa p x mot anh index thanh anh index v i t so mau hn.
e thc hie n no ta co the dung ham imapprox:
[Y, newmap] = imapprox(X, map, n)
Ham nay tra ve mang Y vi ban o mau mi newmap ma co nhie u nhat la n ma u.
Mang au vao X co the thuo c lp uint8, uint16, hoac double. Ngo ra Y thuoc l p
uint8 neu n nho hn hoac ba ng 256. Neu n ln hn 256, Y thuo c lp double.
Khi so hang trong ban o ma u nho hn so gia tr nguye n phan bie t trong X, nhieu
gia tr khac nhau trong X se c hie n th vi cu ng mau trong ban o mau. Mot a nh
TACH BIEN A NH MAU

10
lung tung cu ng se c hien th neu chieu dai cua ba n o mau vt qua ta m cho
phep cua nh ng gia tr cua cac thanh pha n cua X.
Co vai cach e xac nh mot ba n o mau. Co the s dung lenh sau:
>> map(k , : ) = [r(k) g(k) b(k)]
trong o , [r(k) g(k) b(k)] la nh ng gia tr RGB tai v tr ha ng th k cua ban o ma u.
Bang 2 cho nh ng gia tr RGB oi v i mo t so mau c ba n. Bat c ba nh dang nao
trong bang e u co the c s dung e xac nh ma u. V du, mau ne n co the c
thay oi thanh xanh lucba ng cach du ng mo t trong ba cau le nh sau:
>> whitebg(g)
>> whitebg(green)
>> whitebg([0 1 0])
Cac mau the m vao the hien trong bang 2 lie n quan en cac gia tr thap pha n. V du
[0.5 0.5 0.5] la mau xa m, [0.5 0 0] la ma u o to i, [0.49 1 0.83] la mau ngoc xanh
bie n.
Matlab cung cap mot so bang o ma u c nh ngha tr c, truy cap s dung cau
lenh
>> colormap( map_name)
trong o no se at ban o ma u tha nh ma tran map_name. V du :
>> colormap(copper) trong o copper la mot trong so ban o mau c
Matlab nh ngha trc. Mau trong ba n o na y thay oi rat mn t en en ma u
o ng sang. Neu anh cuoi cu ng c hien th la mot anh index, lenh nay se thay oi
ban o ma u cua no tha nh copper. Theo mot la cho n a nh co the hien th trc tiep
vi ban o ma u mong muo n:
>>imshow( X, copper)
Mot so ban o mau co san trong Matlab. Chieu dai (so mau) cua ca c ban o nay co
the c xa c nh ba ng cach gi kem theo trong dau ngoac. V du: gray(16) tao
mo t ban o ma u vi 16 mc xa m.
Bang 2. Cac gia tr RGB cua mot so ma u c ban

Te n a y u Te n viet tat Gia tr RGB
Black
Blue
Green
Cyan
Red
Magenta
Yellow
White

k
b
g
c
r
m
y
w
[0 0 0]
[0 0 1]
[0 1 0]
[0 1 1]
[1 0 0]
[1 0 1]
[1 1 0]
[1 1 1]

TACH BIEN A NH MAU

11
II.2. Tach bien anh mau dung phng phap Gradient

Phng pha p th ng du ng e xap x cac a o ham la sai so gia cac pixel trong
caclan ca n nho trong mot a nh. Hnh 1 bieu dien mo t lan ca n kch thc 3 x3 trong
o z la gia tr pixel. Mo t xa p x cua ao ham rieng phan theo x (phng doc) tai
tam ie m cua vung (z
5
) c cho bi o chenh lech:
, ) , )
3 2 1 9 8 7
2 2 z z z z z z G
x
+ + + + =
Tng t ao ham theo phng y c xap x bi o che nh lech
, ) , )
7 4 1 9 6 3
2 2 z z z z z z G
y
+ + + + =
Cac con so nay c tnh de dang tai mo i iem trong anh bang phe p chap (s dung
ham imfilter) anh lan lt v i tng mat na trong hnh 1. Sau o xa p x cua a p ng
gradient anh thu c bang cach co ng hai tr tuyet oi cua hai anh c chap. Ca c
mat na c no i ti la ca c mat na Sobel, co the c tao ra du ng ha m fspecial.
Gradient c tnh toan theo cach c mo ta la mot trong nh ng phng pha p
thng dung e tach bie n anh xam, a c thao luan trong phan I. Quan ta m cua
ta luc na y la tnh gradient trong khong gian mau RGB. Tuy nhie n phng phap va
m i a ra co the ng dung c trong khong gian 2D nhng khong m ro ng c
cho khong gian co chie u l n hn. Ca ch duy nhat e s dung no oi vi cac anh
RGB la tnh gradient cua mo i thanh pha n ma u roi sau o ket hp cac ke t qua .
Khong may thay, theo pha n sau, ie u nay kho ng gio ng nh vie c tnh toa n cac
khong gian vect RGB mot cach trc tie p.
Do o van e la nh ngha gradient ( bien o va h ng) cua vectc c nh
ngha:

=
) , (
) , (
) , (
) , (
) , (
) , (
) , (
y x B
y x G
y x R
y x c
y x c
y x c
y x c
B
G
R

Theo sau la mo t trong nh ng cach ma khai nie m gradient c m rong vi cac
ham vect. La i noi ha m vo h ng f(x,y) gradient la mot vect ma no ch h ng cua
t le thay o i cc ai tai toa o (x,y).
Lay r, g va b la cac vect n v theo cac truc R, G va B cua khong gian ma u RGB
va nh ngha cac vect :
b
x
B
g
x
G
r
x
R
u
c
c
+
c
c
+
c
c
=
b
y
B
g
y
G
r
y
R
v
c
c
+
c
c
+
c
c
=

TACH BIEN A NH MAU

12
at cac so
xx
g ,
xy
g va
yy
g c nh ngha nh sau:

2 2 2
x
B
x
G
x
R
u u u u g
T
xx
c
c
+
c
c
+
c
c
= = =

2 2 2
y
B
y
G
y
R
v v v v g
T
yy
c
c
+
c
c
+
c
c
= = =

y
B
x
B
y
G
x
G
y
R
x
R
v u v u g
T
xy
c
c
c
c
+
c
c
c
c
+
c
c
c
c
= = =
Nh ra ng R, G va B va cac gia tr g la cac ha m cua x va y. Dung chu y na y nh
c the hie n trong Di Zenzo [1986] noi rang hng cua t le thay oi cc ai cua
c(x,y) la mot ham (x,y)
, )
, )

=

yy xx
xy
g g
g
y x
2
tan
2
1
,
1

va gia tr cua t le thay o i (bie n o cua gradient) theo cac h ng c cho bi ca c
phan t cua

Chu y rang ) , ( y x va ) , ( y x F

la cac a nh co cung kch c vi anh a u va o. Cac


phan t ) , ( y x la cac goc tai moi iem gradient c tnh va ) , ( y x F

la anh
gradient .
, ) , ) , )
2 / 1
2 2 2 cos
2
1
,
)
`

+ + + =

sn g g g g g y x F
xy yy xx yy xx

V ) tan( tan = ne u
0
la mot nghie m cua phng trnh tan
-1
trc, v va y
2 /
0
. The m va o o ) , ( ) , ( y x F y x F
+
= , v the F ca n c tnh ch vi cac
gia tr cua trong na khoa ng ) , 0 [ . S that la phng trnh tan
-1
cho hai gia tr
lech nhau 90
0
ngha la phng trnh nay nghie m ung vi moi ca p (x,y) co h ng
vuong go c nhau. Doc theo mot trong nh ng h ng na y F la cc ai, va no se la cc
tie u neu theo hng con lai, v va y ket qua nha n c bang cach cho n gia tr ln
nhat tai moi iem. a o ham cua cac ket qua na y hi dai, va chu ng ta se t at c
mu c ch c ban cua thao lua n hien tai cua chu ng taba ng cach chi tie t no ay.
ao ham rie ng pha n co the c tnh toan bang toan t Sobel a thao lua n trc.
Ham theo sau se tnh gradient cua anh RGB:
[VG, A, PPG] = colorgrad(f,T)
trong o f la a nh RGB, T la ngng t chon nam trong khoang [0 1] (Mac nh la
0); VG la mot vecto gradient RGB ) , ( y x F

; A la anh goc ) , ( y x tnh bang rad; va


PPG la gradient c tnh bang cac la y tong ca c gradient 2D cua cac khong gian
mau rieng biet. Cac gradient nay la , ) y x R , V , , ) y x G , V , , ) y x B , V trong o toa n t
V c nh ngha trong pha n trc. Tat ca ao ha m ca n e th c hie n phng trnh
TACH BIEN A NH MAU

13
tre n c thc hien trong ha m colorgrad s dung toan t Sobel. Cac ngo ra VG va
PPG c chua n hoa trong khoa ng [0 1] bi colorgrad va chu ng c at ngng
e VG(x,y) =0 oi vi nhng gia tr nho hn hoa c bang T va VG(x,y) = VG(x,y)
oi vi nhng tr ng h p khac. Chu thch tng t oi vi PPG.

III. Thuat toan tach bien anh mau





















Tnh cac ao ham x va y
cua 3 thanh phan anh vi
mat na c chon

Tnh cac tham so vector gradient
g
xx
, g
yy
, g
xy
==>
2 1
,
Tnh ) , ( ), , ( max ) , (
2 1
y x F y x F y x F

=
va chuan hoa trong khoang [0,1]

So sanh vi ngng T ta
c anh tach bien

Anh RGB
TACH BIEN A NH MAU

14
IV. Chng trnh M_File

IV.1. Ham colorgrad

function[VG,A,PPG]=colorgrad(f,dec,T)
%COLORGRAD TINH VECTO GRADIENT CUA MOT ANH MAU RGB.
%function[VG,A,PPG]=colorgrad(f,T) tinh vector gradient,VG, va mang goc
%tuong ung,VA, (don vi radians) cua anh RGB f. No cung tinh PPG, gradient
%ket hop tu cac vung mau ma co duoc bang cach cong cac gradient hai chieu
%cua cac vung mau don. Ngo vao T la muc nguong trong tam [0 1]. Neu no duoc
%xac dinh trong bien ngo vao thi gia tri cua VG va PPG duoc lay nguong bang
%cach tao ra VG(x,y)=0 khi gia tri <=T va VG(x,y) =VG(x,y)doi voi gia tri
%khac.Nhung lenh tuong tu cung duoc ung dung cho PPG. Neu T khong xac dinh
%trong doi so vao thi T duoc set = 0. Ca hai gradient ngo ra duoc xac di nh
%trong tam [0 1]
%dec la loai mat na

if (ndims(f)~=3)| (size(f,3)~=3)
error('Input image must be RGB');
end

%Tinh toan vi phan theo phuong x va y cua ba anh thanh phan su dung toan tu
%Mat na
sh=fspecial(dec);
sv=sh';
Rx=imfilter(double(f(:,:,1)),sh,'replicate');
Ry=imfilter(double(f(:,:,1)),sv,'replicate');
Gx=imfilter(double(f(:,:,2)),sh,'replicate');
Gy=imfilter(double(f(:,:,2)),sv,'replicate');
Bx=imfilter(double(f(:,:,3)),sh,'replicate');
By=imfilter(double(f(:,:,3)),sv,'replicate');

%Tinh cac thong so cua vec to gradient
gxx=Rx.^2+ Gx.^2+ Bx.^2;
gyy=Ry.^2+ Gy.^2+ By.^2;
gxy=Rx.*Ry+ Gx.*Gy+ Bx.*By;
A=0.5*(atan(2*gxy./(gxx-gyy+eps)));
G1=0.5*((gxx+gyy)+(gxx-gyy).*cos(2*A)+2*gxy.*sin(2*A));

TACH BIEN A NH MAU

15
%Bay gio lap lai voi goc + pi/2. Sau do chon gia tri cuc dai tai moi diem.
A = A+pi/2;
G2=0.5*((gxx+gyy)+(gxx-gyy).*cos(2*A)+2*gxy.*sin(2*A));
G1=G1.^0.5;
G2=G2.^0.5;

%Tinh VG bang cach lay gia tri cuc dai tai moi diem (x,y)va sau do chuan hoa
% trong khoang [0 1]
VG=mat2gray(max(G1,G2));

%Tinh toan cac gradient tren tung vung mau
RG=sqrt(Rx.^2+Ry.^2);
GG=sqrt(Gx.^2+Gy.^2);
BG=sqrt(Bx.^2+By.^2);

%Thuc hien viec tong hop bang cach cong cac ket qua rieng biet va chuan hoa
%trong khoang [0 1]
PPG=mat2gray(RG+GG+BG);

%Tinh ket qua khi co nguong
if nargin==3
VG=(VG>T).*VG;
PPG=(PPG>T).*PPG;
end
%Ket thuc ham colorgrad

IV.2 Chng trnh tach bien anh mau

%file thuc hien tach bien anh mau
clc;
close all;
clear all;
f=imread('lacda.jpg');
T=0.5;
figure(1);
subplot(3,1,1);
imshow(f);
str={['RGB image, threshold T=' num2str(T)]};
title(str);
TACH BIEN A NH MAU

16
[VG_S,A_S,PPG_S]=colorgrad(f,'sobel',T);
subplot(3,1,2);
imshow(VG_S);
title('Sobel mask');
hold on;

[VG_P,A_P,PPG_P]=colorgrad(f,'prewitt',T);
subplot(3,1,3);
imshow(VG_P);
title('Prewitt mask');
hold on;

V. Ket qua


Hnh 5. Hai mat na Sobel va Prewitt vi ngng T = 0
TACH BIEN A NH MAU

17

Hnh 6. Hai mat na Sobel va Prewitt vi ngng T = 0.25


Hnh 7. Hai mat na Sobel va Prewitt vi ngng T = 0.5

TACH BIEN A NH MAU

18

Hnh 8. Hai mat na Sobel va Prewitt vi ngng T = 0.75


Hnh 9. Hai mat na Sobel va Prewitt vi ngng T = 1


TACH BIEN A NH MAU

19

TAI LIEU THAM KHAO


1. Rafael C. Gonzalez, Richard E. Woods, Steven L. Eddins Digital Image
Processing using Matlab NXB Prentice Hall 2004.

2. Nguyen Kim Sach - X ly anh va Video so NXBKHKT 1997.

3. Image Processing Toolbox cua Matlab Version 6.5

You might also like