SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
Digital Image Processing with Matlab
1. V n t t v X lý nh S
Vo Dinh Phong
vdphong@fit.hcmus.edu.vn
Department of Computer Science
University of Science
227 Nguyen Van Cu, Dist.5, Ho Chi Minh City
Lưu hành n i b
Tóm t t n i dung
Đ có th s d ng đư c tài li u m t cách t t nh t, ngư i đ c nên cài
đ t Matlab cùng Digital Image Processing Toolbox.
1
2. M cl c
1 Đ c và ghi nh 3
1.1 D ng bi u di n c a nh . . . . . . . . . . . . . . . . . . . . 3
1.2 nh và ma tr n . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Đ c nh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Ghi nh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5 nh và ki u d li u. . . . . . . . . . . . . . . . . . . . . . . 4
1.6 Ép ki u cho nh . . . . . . . . . . . . . . . . . . . . . . . . 4
2 L c nh 5
2.1 L c tuy n tính . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 L c phi tuy n . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3 Tăng cư ng nh 9
4 Hình thái nh 12
4.1 Lý thuy t t p h p . . . . . . . . . . . . . . . . . . . . . . . 12
5 Phân đo n nh 14
5.1 Dò đi m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.2 Dò đư ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.3 Dò c nh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.4 Đ t ngư ng . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
6 Mô t đ i tư ng 17
6.1 Mã xích . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.2 X p x b ng đa giác . . . . . . . . . . . . . . . . . . . . . . 18
6.3 Xương . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6.4 Đo đ c biên . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.5 Đo đ c vùng . . . . . . . . . . . . . . . . . . . . . . . . . . 19
7 Tham kh o 20
2
3. 1 Đ c và ghi nh
1.1 D ng bi u di n c a nh
nh đư c đ nh nghĩa như m t hàm hai bi n s f (x, y), trong đó x và y đư c
g i là t a đ trong không gian c a m t đi m trên nh. Cư ng đ sáng1 c a m t
đi m nh có t a đ (x0 , y0 ) chính là giá tr f (x0 , y0 ), hay còn g i là m c xám
trong trư ng h p ta đang x lý nh đơn s c. Nói chung ng d ng ch y u c a
x lý nh s trong sinh tr c h c h u h t x lý trên nh đơn s c2 . Trong mi n
liên t c, t a đ x, y có th là s th c, chúng ta ch quan tâm đ n nh s (trong
mi n r i r c), t c là nh đã đư c lư ng hóa và lưu tr trên máy tính, trong đó
t a đ c a m i đi m nh đ u là nguyên. Bi u di n c a nh gi ng như m t lư i
các n t xám cách đ u nhau. T p h p các đi m nh có cùng tung đ g i là m t
hàng3 ; t p h p các đi m nh có cùng hoành đ g i là m t c t4 .
M i m t hàm s f (x, y) đư c g i là m t kênh nh5 . nh có ít nh t m t
kênh và ph bi n nh t là ba kênh - nh màu. Ví d nh màu RGB là ph i h p
c a ba kênh (hay ba nh) Đ , Xanh lá, và Xanh dương. Các thao tác x lý nh
mà chúng ta c n quan tâm s không đ ng đ n v n đ màu s c, do đó s m c
đ nh nh ch có m t kênh.
1.2 nh và ma tr n
Vì nh gi ng như m t lư i v i các dòng và các c t, ta tìm th y s tương đ ng
n u bi u di n nh dư i d ng m t ma tr n:
f (0, 0) f (0, 1) ··· f (0, N − 1)
f (1, 0) f (1, 1) ··· f (1, N − 1)
f (x, y) =
.
. .
. .. .
.
. . . .
f (M − 1, 0) f (M − 1, 1) ··· f (M − 1, N − 1)
Có s khác bi t v quy đ nh ch s b t đ u m t ma tr n, trong C (b t đ u
t 0) và trong Matlab (b t đ u t 1). M t vector dòng hay vector c t tương
ng v i m t dòng hay m t c t c a ma tr n.
1.3 Đ c nh
Nh m ti t ki m lưu lư ng v n chuy n và lưu tr , nh thư ng đư c nén, m t
mát thông tin ho c không, dư i các đ nh d ng ph bi n sau:
1 intensity
2 grayscale image, monochrome
3 row
4 column
5 chanel
3
4. Đ nh d ng Mô t Đuôi m r ng
TIFF Tagged Image File Format .tiff
JPEG Joint Photographic Expert Group .jpg, .jpeg
GIF Graphic Interchange Format .gif
BMP Window Bitmap .bmp
PNG Portable Network Graphics .png
PGM Portable Gray Map .pgm, .ppm, .pnm
Đ đ cm tt p tin nh trong Matlab, t i con tr l nh gõ:
>> f = imread ( ’ chestxray . jpg ’)
Thư m c m c đ nh mà Matlab tham kh o đ n là thư m c hi n hành t i con
tr l nh. Gõ l nh “pwd” đ bi t mình đang đâu. Sau khi đ c nh, hàm tr v
k t qu là m t nh f v i c u trúc t ch c như đã gi i thi u trên. Đ có thêm
thông tin v nh,
>> whos f
1.4 Ghi nh
nh sau khi x lý có th đư c lưu cho l n dùng sau. Có th lưu nh v i nhi u
đ nh d ng khác nhau, như li t kê b ng trên. Đ có nhi u tùy ch n tham s
lưu nh, tìm hi u thêm trong ph n Help c a Matlab.
>> imwrite (f , ’ filename ’);
>> help imwrite
1.5 nh và ki u d li u
Khi đư c n p t t p tin vào b nh , nh t n t i d ng m t m ng (m t chi u
ho c hai chi u) liên t c các ph n t trong b nh . M i m t đi m nh bi u di n
cư ng đ sáng t i đi m đó. V i các tùy ch n lư ng hóa khác nhau, giá tr đi m
nh có th dao đ ng trong các đo n nguyên [0; 1], [−128; 127], [0; 255] hay nhi u
hơn th n a. Kho ng giá tr càng r ng cho phép nh có th đư c bi u di n chi
ti t và chính xác hơn. Ngoài ra, m i đi m nh cũng có th đư c chuy n đ i
thành d ng s th c, phù h p v i các k thu t x lý nh có liên quan đ n tính
toán s th c. Các ki u d li u đư c h tr cho đ nh d ng nh g m có: double,
uint8, uint16, uint32, int8, int16, int32, single, char, logical.
1.6 Ép ki u cho nh
Đ chuy n đ i gi a các ki u d li u, ta đơn gi n s d ng cú pháp sau:
B = data_class_name ( A )
>> B = double ( A );
>> D = uint8 ( C );
4
5. Tuy nhiên, chuy n đ i ki u d li u không đ m b o b o toàn thông tin g c,
nghĩa là các con s có th b c t b đi (n u n m ngoài kho ng quy đ nh). Xem
thêm trong HELP c a các phép chuy n ki u. Phòng tránh đi u này, chúng ta
nên co/giãn d li u v kho ng h p l trư c khi ti n hành chuy n ki u. Đơn gi n
hơn, Matlab cung c p m t s hàm ti n ích cho phép t đ ng hóa vi c này:
Hàm Ki u đích Ki u ngu n
im2uint8 unit8 logical, uint8, uint16, double
im2uint16 uint16 logical, uint8, uint16, double
mat2gray double [0, 1] double
im2double double logical, uint8, uint16, double
im2bw logical uint8, uint16, double
2 L c nh
L c nh là k thu t x lý quan tr ng nh t đ i v i x lý nh. M c tiêu c a l c
nh r t đa d ng, và t đó có nhi u bi n th , tuy nhiên chúng th ng nh t tuân
theo cùng m t quy trình chung. K thu t l c nh đ c p trong tài li u này là
l c trên mi n không gian6 , ngoài ra còn có l c trên mi n t n s 7 . Nên nh r ng
l c nh có đ nh nghĩa r t g n v i, n u không mu n nói là chính là, x lý s tín
hi u. Cho m t tín hi u đ u vào hay là m t xung8 (l y ví d đơn gi n như sóng
âm m t chi u thâu t microphone), dùng m t “b l c” 9 đ “l c” (hay bi n đ i10 )
ra m t tín hi u mong mu n, hay còn g i là đáp ng11 (ví d tín hi u đư c lo i
b nhi u t n s cao). M r ng t m t chi u âm thanh sang hai chi u nh, ta
có phép l c trong mi n không gian. Ti n trình l c g m b n bư c: (1) xác đ nh
đi m trung tâm; (2) th c hi n thao tác tính toán n i trong lân c n c a trung
tâm; (3) k t qu tính đư c g i là “đáp ng” c a ti n trình t i đi m trung tâm;
(4) l p l i ti n trình cho m i đi m nh khác. N u các thao tác trên lân c n c a
đi m nh đang đư c “l c” là tuy n tính (c ng, tr , nhân, chia) ta g i chúng là
các phép l c tuy n tính12 , ngư c l i là l c phi tuy n13 . Ngoài ra có th đ ng
nh t l c tuy n tính v i thao tác “t ng ch p” 14 ; l c phi tuy n v i các thao tác
th ng kê15 .
2.1 L c tuy n tính
Quy trình l c tuy n tính đư c minh h a tr c quan như hình bên dư i.
6 spatialfiltering
7 frequency filtering
8 impulse
9 filter, mask, kernel, window
10 transform
11 response
12 linear spatial filtering
13 nonlinear spatial filtering
14 convolution
15 statistics
5
6. w = fspecial ( type , parameters );
g = imfilter (f , w );
Average
b l c trung bình, các h s trong m t n l c đ u b ng nhau, và thông thư ng
t ng là 1.0. Đáp ng t i m i đi m nh là trung bình t ng giá tr đ sáng c a
các đi m nh lân c n.
1 1 1
1
× 1 1 1
9
1 1 1
>> fspecial ( ’ average ’)
Gaussian
L c thông th p (tri t các tín hi u t n s cao) v i các h s trong m t n ph
thu c vào hàm Gauss hai bi n, trung v 16 µ t i trung tâm c a m t n , và ma
tr n hi p phương sai17 Σ. B l c Gauss r t ph bi n, v i công d ng chính là
làm trơn18 ho c làm m 19 nh, đ gi m nhi u, ho c làm dày các c nh.
1 1
Σ−1 (x−µ)
y = f (x | µ, Σ) = k/2 1/2
e− 2 (x−µ)
(2π) |Σ|
16 mean
17 covariance
18 smoothing
19 bluring
6
7. 2
0.02
4
0.015
6
0.01
0.005 8
0 10
10
5 10
0 5 12
0
−5 −5
−10 −10 2 4 6 8 10 12
0.012 5
0.01
0.008 10
0.006
0.004
15
0.002
0
20 20
10 20
0 10
0
−10 −10 25
−20 −20 5 10 15 20 25
Laplacian of Gaussian (LoG)
Trư c tiên nh đ oc l c b ng m t n Gauss, sau đó b ng m t n Laplace. LoG
đư c dùng đ tính đ o hàm c p hai c a nh, làm s c nét các c nh.
>> f = imread ( ’ moon . tif ’);
>> w4 = fspecial ( ’ laplacian ’ , 0);
>> f = im2double ( f );
>> g = f - imfilter (f , w4 , ’ replicate ’);
>> imshow ( f )
>> figure , imshow ( g )
2
0.05 4
0.04 6
0.03 8
0.02 10
0.01 12
0 14
−0.01 16
10
5 10 18
0 5
0 20
−5 −5
−10 −10 2 4 6 8 10 12 14 16 18 20
Prewitt
Tính gradient nh (nôm na có th coi như l y đ o hàm c p 1 trên hàm nh)
7
8. Sobel
Tương t Prewitt, xem thêm trong m c 5.3.
Gabor
L c Gabor đư c dùng đ dò tìm c nh, c c kỳ phù h p trong vi c bi u di n
và phân bi t texture d a trên vi c đi u ch nh các t n s và hư ng c a b l c.
Thông qua thí nghi m và so sánh, ngư i ta nh n th y l c Gabor có ch c năng
tương t các t bào th giác trong đ ng v t h u nhũ (kh , mèo, ngư i). L c
Gabor đư c tính b ng tích gi a m t hàm tu n hoàn và hàm Gauss.
x 2 + γ2y 2
x
g (x, y; λ, θ, ψ, σ, γ) = exp cos 2π +ψ
2σ 2 λ
v i x = xcosθ + ysinθ và y = −xsinθ + ycosθ.
1 5
0.8
0.6 10
0.4
0.2
15
0
−0.2
20
−0.4
−0.6
25
−0.8
−1
40 30
20
35
0
−30 40
−20 −20
−10
0
10
−40 20 5 10 15 20 25 30 35 40
30
2.2 L c phi tuy n
>> % SYNTAX g = ordfilt2 (f , order , domain )
>> g = ordfilt2 (f , 1 , ones (m , n )); % MIN
>> g = ordfilt2 (f , m *n , ones (m , n )); % MAX
>> g = ordfilt2 (f , median (1: m * n ) , ones (m , n ));
>> help medfilt2
Min
l y giá tr c c đ i trong lân c n gán cho đi m trung tâm
8
9. Max
l y giá tr c c đ i trong lân c n gán cho đi m trung tâm
Median
s p x p tăng d n ho c gi m d n các giá tr trong lân c n, sau đó gán giá tr
ph n t đ ng gi a cho đi m trung tâm.
>> fn = imnoise (f , ’ salt & pepper ’ , 0.2);
>> gm = medfilt2 ( fn );
>> imshow ( gm ); pause ;
>> gms = medfilt2 ( fn , ’ symetric ’);
>> imshow ( gms );
3 Tăng cư ng nh
Đây là t p h p các k thu t làm tăng đ tương ph n, cân b ng sáng cho nh,
k t qu nhìn vào nh s tr nên “đ p” hơn. K thu t quan tr ng nh t, và cũng
thư ng g p g p trong các ng d ng x lý nh hay máy quay k thu t s , là cân
b ng histogram.
Histogram
Histogram c a m t nh s v i L m c sáng n m trong đo n giá tr [0, G] đư c
đ nh nghĩa là m t hàm r i r c
h (rk ) = nk
v i rk là m c sáng th k trong đo n [0, G] và nk là s lư ng đi m nh trong
toàn nh mà có m c sáng rk . V i d li u nh ki u uint8, giá tr c a G là 255, v i
nh uint16 là 65535, và v i nh double là 1.0. Thông thư ng, histogram đư c
chu n hóa b ng cách chia toàn b các giá tr cho m u s là t ng s đi m nh
trong nh (b ng w × h)
h (rk ) nk
p (rk ) = =
n n
Trên bình di n th ng kê, p (rk ) là xác su t xu t hi n m c sáng rk trong nh.
>> p = imhist (f , b ); % b is L
>> p = p / numel ( f )
Cân b ng sáng dùng histogram
Phương pháp này đư c s d ng đ tăng cư ng đ tương ph n trên nh, t c là
nh ng nh mà m t nhóm các m c sáng lân c n nhau r t ph bi n trong nh
9
10. (histogram s phân ph i l ch20 v bên trái, bên ph i, ho c gi a). Cân b ng
histogram s “kéo giãn” nhóm t t p này, làm cho nh có m c tương ph n t t
hơn, d dàng phân bi t đ i tư ng và n n.
Xét nh s m c xám {x} và ni là s l n xu t hi n m c xám i trong nh.
Kh năng xu t hi n đư c tính b ng công th c
ni
px (i) = p (x = i) = , 0 ≤ i ≤ L
n
v i L là t ng s m c sáng trong nh, n là t ng s đi m nh trong nh, và px (i)
là giá tr histogram cho đi m nh có m c sáng i, đã đư c chu n hóa v đo n
[0, 1].
Ta đ nh nghĩa hàm phân ph i tích lũy - cdf (culmulative distribution func-
tion) ng v i px :
i
cdfx (i) = px (j)
j=0
đ ng th i cũng là histogram tích lũy c a nh. Phép cân b ng sáng s th c hi n
m t phép bi n đ i ra nh m i {y} : y = T (x) sao cho cdf là m t hàm tuy n
tính:
cdfy (i) = iK
v i K là h ng s .
B đ
N u {xi } là m t t p các bi n ng u nhiên đ c l p có phân ph i F , đư c xác đ nh
trên cùng m t không gian m u, thì t n t i các bi n ng u nhiên yi sao cho yi có
phân ph i đ u U [0, 1] và F −1 (yi ) = xi .
T b đ trên ta có phép bi n đ i mong mu n
y = T (x) = cdfx (x)
f = imread ( ’ walking . jpg ’);
f = rgb2gray ( f );
f = mat2gray ( f );
subplot (3 ,2 ,1) , imshow ( f );
subplot (3 ,2 ,3) , imhist ( f );
h = imhist ( f );
x = linspace (0 ,1 ,256);
cdf = cumsum ( h );
subplot (3 ,2 ,5) , plot (x , cdf , ’r - ’);
feq = histeq ( f );
subplot (3 ,2 ,2) , imshow ( feq );
subplot (3 ,2 ,4) , imhist ( feq );
cdfeq = cumsum ( imhist ( feq ));
subplot (3 ,2 ,6) , plot (x , cdfeq , ’r - ’);
20 skewed
10
12. 4 Hình thái nh
Khái ni m morphology trong x lý nh s kh i ngu n t m t ngành c a sinh
h c, nghiên c u v hình th và c u trúc c a đ ng th c v t. Đây là m t công
c tr giúp rút trích các thành ph n trong nh nh phân, bi u di n và mô t
chúng dư i d ng các vùng21 ho c d ng22 như các đư ng biên, xương, và bao
l i. K thu t morphology cũng đư c áp d ng trên nh xám cho các công đo n
ti n/h u x lý nh.
4.1 Lý thuy t t p h p
S hóa m t nh t không gian th c 2D là đ ng tác l y m u m t ph ng 2D y
trên m t lư i hai chi u, v i t a đ x và y l n lư t là các s nguyên trong t p Z.
Như v y ta có m t ánh x hàm nh f (x, y) gi a giá tr đ sáng c a đi m nh
và t a đ (x, y). N u giá tr đ sáng c a nh là s nguyên, ta có đ nh nghĩa v
m t hàm nh v i t a đ và giá tr đ sáng đ u nguyên.
Đ t A ⊆ Z2 v i các ph n t trong là là t a đ nguyên (x, y). N u đ t
w = (x, y), ta vi t
w∈A
n u w là m t ph n t trong A, vi t
w∈A
/
n u w không ph i là m t ph n t trong A.
M t t p B các đi m nh th a mãn m t đi u ki n nào đó đư c ký hi u
B = {w | condition}
H p và giao c a hai t p A và B
A∪B
A∩B
Hi u c a hai t p A và B, ký hi u A − B là t p các ph n t thu c A nhưng
không thu c B
A − B = {w | w ∈ A, w ∈ B}
/
ˆ
Ph n x B c a t p B
ˆ
B = {w | w = −b, b ∈ B}
T nh ti n c a t p A theo đi m z = (z1 , z2 )
(A)z = {c | c = a + z, a ∈ A}
21 region
22 shape
12
13. Toán t Bi u th c Matlab Tên
A∩B A&B AND
A∪B A|B OR
Ac -A NOT
A−B A &~ B DIFFERENCE
Dilate
Đây là thao tác làm phình to/giãn n các đ i tư ng trong nh đơn s c
ˆ
A⊕B = z | B ∩A=
z
>> A = imread ( ’ broken_text . tif ’);
>> B =[0 1 0; 1 1 1; 0 1 0];
>> A2 = imdilate (A , B );
>> imshow ( A2 )
đây B đư c g i là nhân t o hình (structuring element). Matlab cung c p
s n nhi u c u trúc t o hình
>> help strel
Erode
Đây là thao tác làm xói mòn/co h p các đ i tư ng trong nh đơn s c
A B = {z | (B)z ∩ Ac = }
đây B là nhân t o hình tương t như trong thao tác dilate.
>> A = imread ( ’ wirebond_mask . tif ’);
>> se = strel ( ’ disk ’ , 10);
>> A2 = imerode (A , se );
>> imshow ( A2 )
Open
Thao tác open (td: m ) hình A b ng nhân t o hình B, ký hi u A ◦ B, là k t
qu erode A b ng B và l y k t qu đó dilate cho B
A ◦ B = (A B) ⊕ B
A ◦ B = ∪ {(B)z | (B)z ⊆ A}
Công d ng c a open là lo i b các vùng c a đ i tư ng (thư ng là các góc)
không đ l n đ “ch a” nhân t o hình, làm trơn biên, tách r i các m u liên k t
gi a các đ i tư ng l n, và lo i b nhánh con.
>> C = imopen (A , B )
13
14. Close
Thao tác close (td: đóng) hình A b ng nhân t o hình B, ký hi u A • B, là phép
erode đi sau phép dilate
A • B = (A ⊕ B) B
c
A • B = (∪ {(B)z | (B)z ⊆ Ac })
Công d ng c a close là làm trơn biên, làm li n các m u r i nhau, đi n đ y
các l nh và rãnh.
C = imclose (A , B )
>> f = imread ( ’ shapes . tif ’);
>> se = strel ( ’ square ’ ,20);
>> fo = imopen (f , se );
>> imshow ( fo ); pause
>> fc = imclose (f , se );
>> imshow ( fc )
>> f = imread ( ’ fingerprint . tif ’);
>> se = strel ( ’ square ’ ,3);
>> fo = imopen (f , se );
>> imshow ( fo ); pause
>> foc = imclose ( fo , se );
>> imshow ( foc );
Tham kh o thêm các thao tác khác:
>> help bwmorph
5 Phân đo n nh
Trong ph n morphology, chúng ta có m t nh đ u vào, qua x lý, và đ u ra là
các thu c tính trong nh, khác v i các phương pháp tăng cư ng nh v i đ u ra
cũng là m t nh. Phân đo n nh chia nh n i dung trong nh thành các vùng
và các đ i tư ng. Đây là thao tác khó nh t trong x lý nh, m t ph n vì các
k thu t chưa đ kh năng đ quan tâm đ n n i dung các đ i tư ng trong nh,
ph n khác vì m i đ i tư ng có nhi u t m v c ng nghĩa.
K thu t cơ s đ dò đi m, đư ng và các c nh là s d ng m t b dò s thay
đ i đ t ng t đ sáng trong vùng mà m t n bao ph , v i đi m đ t t i tâm
R = w1 z1 + w2 z2 + ... + w9 x9
9
= wi zi
i=1
v i zi là m c sáng c a đi m nh t i h s m t n wi .
14
15. 5.1 Dò đi m
−1 −1 −1
−1 8 −1
−1 −1 −1
>> w =[ -1 -1 -1; -1 8 -1; -1 -1 -1];
>> g = abs ( imfilter ( double ( f ) , w ));
>> T = max ( g (:));
>> g =g >= T ;
>> imshow ( g )
5.2 Dò đư ng
−1 −1 −1 −1 −1 2 −1 2 −1 2 −1 −1
2 2 2 −1 2 −1 −1 2 −1 −1 2 −1
−1 −1 −1 2 −1 −1 −1 2 −1 −1 −1 2
horizontal +450 vertical −450
>> w =[2 -1 -1; -1 2 -1; -1 -1 2];
>> g = imfilter ( double ( f ) , w );
>> imshow (g ,[])
5.3 Dò c nh
Cùng v i dò đi m và đư ng, c nh là m t trong nh ng thu c tính nh đư c s
d ng, n u không mu n nói là nhi u nh t. C nh trong nh xu t hi n khi có s
bi n đ i đ t ng t (không liên t c) đ sáng. Đi u này g i ý ta s d ng đ o hàm
b c m t và hai trên hàm nh đ tìm ra chúng. Gradient là m t x p x t t đ
tính đ o hàm c p m t trong hàm nh r i r c
∂f
Gx ∂x
f= = ∂f
Gy ∂y
Đ l n23 c a vector này b ng
1/2
f = mag ( f) = G2 + G2
x y
2 2 1/2
∂f ∂f
= ∂x + ∂y
Đ o hàm b c hai đư c tính b ng công th c Laplace
2 ∂ 2 f (x, y) ∂ 2 f (x, y)
f (x, y) = +
∂x2 ∂y 2
23 magnitude
15
16. Cách này hi m khi đư c dùng đ dò c nh, m t ph n vì nh y v i nhi u, t o ra
hi u ng c nh đôi, và không có kh năng tìm hư ng c a c nh. Tuy nhiên nó có
th dùng đ tìm v trí chính xác c a c nh
>> help edge
5.4 Đ t ngư ng
Gi s trong nh ng nh đơn s c đơn gi n, các đ i tư ng24 c n quan tâm có đ
sáng phân bi t so v i khung c nh25 chung quanh. Ta có th dùng histogram đ
xác đ nh m t ngư ng đ sáng T trong đó m c sáng này s phân bi t đư c các
m c sáng c a n n và các m c sáng c a đ i tư ng.
1 if f (x, y) ≥ T
g (x, y) =
0 if f (x, y) < T
Ngư ng toàn c c
1. Ch n m t ư c lư ng ban đ u cho T (ch n giá tr trung v trong d i m c
sáng c a nh)
2. Phân đo n nh v i T đã ch n thành hai nhóm đi m nh: G1 ≥ T và
G2 < T
3. Tính giá tr sáng trung bình µ1 và µ2 cho vùng G1 và G2 .
4. Tính ngư ng m i
1
T = (µ1 + µ2 )
2
5. L p l i bư c 2-4 cho đ n khi T <
>> help graythresh
>> T =0.5*( double ( min ( f (:)))+ double ( max ( f (:))));
>> done = false ;
>> while ~ done
g =f >= T ;
Tnext =0.5*( mean ( f ( g ))+ mean ( f (~ g )))
done = abs (T - Tnext ) <0.5;
end
24 foreground
25 background
16
17. Ngư ng c c b
Phương pháp ngư ng toàn c c không th s d ng đư c trong đi u ki n nh có
m c sáng phân b không đ ng đ u. Đ đ i phó v n đ này, ta có th s d ng
phương pháp ngư ng c c b
1 if f (x, y) ≥ T (x, y)
g (x, y) =
0 if f (x, y) < T (x, y)
T (x, y) = fo (x, y) + To
v i f◦ (x, y) là toán t open trên nh f , h ng s To là k t qu c a hàm graythresh
trên nh fo .
6 Mô t đ i tư ng
6.1 Mã xích26
Đư c dùng đ bi u di n biên đ i tư ng, là m t chu i các đo n th ng có chi u
dài c đ nh và hư ng quy ư c trư c.
>> help fchcode
>> h = fspecial ( ’ average ’ ,9);
>> g = imfilter (f ,h , ’ replicate ’);
>> g = im2bw (g ,0.5);
>> B = boundaries ( g );
>> d = cellfun ( ’ length ’ , B );
>> [ max_d , k ]= max ( d );
>> b = B {1};
>> [ M N ]= size ( g );
>> g = bound2im (b ,M ,N , min ( b (: ,1)) , min ( b (: ,2)));
>> [s , su ]= bsubsamp (b ,50);
>> g2 = bound2im (s ,M ,N , min ( s (: ,1)) , min ( s (: ,2)));
>> cn = connectpoly ( s (: ,1) , s (:2));
>> g2 = bound2im ( cn ,M ,N , min ( cn (: ,1)) , min ( cn (: ,2)));
>> c = fchcode ( su );
>> c . x0y0
>> c . fcc
>> c . mm
>> c . diff
>> c . diffmm
26 chain-code
17
18. 6.2 X p x b ng đa giác
Đư ng biên đ i tư ng cũng có th đư c bi u di n x p x b ng m t đa giác (l i
ho c lõm). X p x thô hay m n là tùy thu c vào vi c l y m u đ nh đa giác d c
theo biên đ i tư ng là thưa hay dày.
>> help minperpoly
>> b = boundaries (B ,4 , ’ cw ’);
>> b = b {1};
>> [ M N ]= size ( B );
>> xmin = min ( b (: ,1));
>> ymin = min ( b (: ,2));
>> bim = bound2im (b ,M ,N , xmin , ymin );
>> imshow ( bim )
>> [x , y ]= imperpoly (B ,2);
>> b2 = connectpoly (x , y );
>> B2 = bound2im ( b2 ,M ,N , xmin , ymin );
>> imshow ( B2 )
>> [x , y ]= imperpoly (B ,4);
>> b3 = connectpoly (x , y );
>> B3 = bound2im ( b3 ,M ,N , xmin , ymin );
>> imshow ( B3 )
6.3 Xương27
Hình d ng đ i tư ng còn có th đư c bi u di n dư i d ng đ th liên thông các
đi m nh, mà ta còn g i là xương. Toán t làm m nh28 đư c dùng vào m c
đích này.
>> f = im2double ( f );
>> h = fspecial ( ’ gaussian ’ ,25 ,15);
>> g = imfilter (f ,h , ’ replicate ’);
>> imshow ( g ); pause
>> % thresholding the smoothed image
>> g = im2bw (g ,1.5* graythresh ( g ));
>> figure , imshow ( g ); pause
>> % obtaining skeleton
>> s = bwmorph (g , ’ skel ’ , Inf );
>> % eliminate spurs
>> s1 = bwmorph (s , ’ spur ’ ,8);
27 skeleton
28 thinning
18
19. 6.4 Đo đ c biên
>> help diameter
Đ đo Ý nghĩa
Diameter Kho ng cách c c đ i gi a hai đi m nh trong vùng
MajorAxis Tr c chính, m i dòng ch a t a đ đi m đ u mút
MinorAxis Tr c ph , m i dòng ch a t a đ đi m đ u mút
BasicRectangle Bao đóng nh nh t
6.5 Đo đ c vùng
Vùng khác v i biên ch t t c đi m nh n m trong biên cũng đư c tính đ n.
Cơ s
>> help regionprops
Đ đo Ý nghĩa
Area S lư ng đi m nh trong vùng
BoundingBox Là hình ch nh t ngo i ti p vùng, các c nh song song v i h t a đ
Centroid Kh i tâm c a vùng
ConvexArea S đi m nh n m trong bao l i c a vùng
ConvexHull Đa giác l i nh nh t ngo i ti p vùng
Solidity Area/ConvexArea
M t s đ đo khác không s n có trong Matlab:
Đ đo Công th c Ý nghĩa
4π×Area
Formfactor P erimeter 2 M c đ g gh c a đư ng biên đ i tư ng
4×Area
Roundness π×M aximumDiameter 2 Tính tròn c a đ i tư ng
AspectRatio M aximumDiameter
M inimumDiameter M c đ tròn/d t
Length
Curl F iberLength M c đ cong c a đ i tư ng
Texture
>> help statxture
Moment Công th c Ý nghĩa
L−1
Mean m= zi p (zi ) M c sáng trung bình
i=0 √
Standard deviation σ = µ2 (z) = σ 2 Đ tương ph n trung bình
Smoothness R = 1 − 1/ 1 + σ 2 Đ trơn bóng (càng nh càng trơn)
L−1
3
Third moment µ3 = (zi − m) p (zi ) M c l ch trong histogram c a vùng
i=0
L−1
Uniformity U= p2 (zi ) Đ đ ng đ u m c xám
i=0
L−1
Entropy e=− p (zi ) log2 p (zi ) M c đ ng u nhiên c a m c xám
i=0
19
20. 7 Tham kh o
• Rafael C.Gonzalez, Digital Image Processing Using Matlab
• John C.Russ, The Image Processing Handbook, Fifth Ed.
20