Tải bản đầy đủ (.pdf) (275 trang)

Các kiểu ảnh , các thao tác ảnh cơ bản trong Toolbox

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.22 MB, 275 trang )

M c l cụ ụ
1 . Các ki u nh , các thao tác nh c b n trong Toolboxể ả ả ơ ả ------------- Trang 1
2. Phép x lý trên vùng ch n ------------------------------------------------- Trang 16ử ọ
3. X lý nh m --------------------------------------------------------------ử ả ờ ----Trang 23
4. Màu s c------------------------------------------------------------------------- Trang 38ắ
5. Bi n đ i nh ------------------------------------------------------------------- Trang 52ế ổ ả
6. Bi n đ i không gian nh ---------------------------------------------------- Trang 78ế ổ ả
7. Phân tích và làm giàu nh -------------------------------------------------- Trang 98ả
8. Các bi n đ i hình thái nh ------------------------------------------------- Trang 129ế ổ ả
I – Các kiểu ảnh , các thao tác ảnh cơ bản trong Toolbox
1 . nh đ c đ nh ch s ( Indexed Images )Ả ượ ị ỉ ố
- M t nh ch s bao g m m t ma tr n d li u X và ma tr n b n đ màu map . Maộ ả ỉ ố ồ ộ ậ ữ ệ ậ ả ồ
tr n d li u có th có ki u thu c l p uint8,uint16 ho c ki u double . Ma tr n b n đậ ữ ệ ể ể ộ ớ ặ ể ậ ả ồ
màu là m t m ng mx3 ki u double bao g m các giá tr d u ph y đ ng n m gi a 0 và 1ộ ả ể ồ ị ấ ẩ ộ ằ ữ
. M i hàng c a b n đ ch ra các giá tr mà : red , green và blue c a m t màu đ n . M tỗ ủ ả ồ ỉ ị ủ ộ ơ ộ
nh ch s s d ng ánh x tr c ti p gi a giá tr c a pixel nh t i giá tr trong b n đả ỉ ố ử ụ ạ ự ế ữ ị ủ ả ớ ị ả ồ
màu . Màu s c c a m i pixel nh đ c tính toán b ng cách s d ng giá tr t ng ngắ ủ ỗ ả ượ ằ ử ụ ị ươ ứ
c a X ánh x t i m t giá tr ch s c a map . Giá tr 1 ch ra hàng đ u tiên , giá tr 2 chủ ạ ớ ộ ị ỉ ố ủ ị ỉ ầ ị ỉ
ra hàng th hai trong b n đ màu …ứ ả ồ
- M t b n đ màu th ng đ c ch a cùng v i nh ch s và đ c t đ ng n p cùngộ ả ồ ườ ượ ứ ớ ả ỉ ố ượ ự ộ ạ
v i nh khi s d ng hàm ớ ả ử ụ imread đ đ c nh .Tuy nhiên , ta không b gi i h n khiể ọ ả ị ớ ạ
s d ng b n đ màu m c đ nh , ta có th s d ng m t kì b n đ màu nào . Hình sauử ụ ả ồ ặ ị ể ử ụ ấ ả ồ
đây minh ho c u trúc c a m t nh ch s . Các pixel trong nh đ c đ i di n b iạ ấ ủ ộ ả ỉ ố ả ượ ạ ệ ở
m t s nguyên ánh x t i m t giá tr t ng ng trong b n đ màu . ộ ố ạ ớ ộ ị ươ ứ ả ồ
( NH )Ả
L p và đ l ch c a b n đ màu ( Colormap Offsets )ớ ộ ệ ủ ả ồ
- Quan h gi a giá tr trong ma tr n nh và giá tr trong b n đ màu ph thu c vàoệ ữ ị ậ ả ị ả ồ ụ ộ
ki u giá tr c a các ph n t ma tr n nh . N u các ph n t ma tr n nh thu c ki uể ị ủ ầ ử ậ ả ế ầ ử ậ ả ộ ể
double , giá tr 1 s t ng ng v i giá tr trong hàng th nh t c a b n đ màu , giá tr 2ị ẽ ươ ứ ớ ị ứ ấ ủ ả ồ ị
1
s t ng ng v i giá tr trong hàng th 2 c a b n đ màu … N u các ph n t c a maẽ ươ ứ ớ ị ứ ủ ả ồ ế ầ ử ủ


tr n nh thu c ki u uint8 hay uint16 s có m t đ l ch (offset ) – giá tr 0 trong maậ ả ộ ể ẽ ộ ộ ệ ị
tr n nh s t ng ng v i giá tr trong hàng đ u tiên c a b n đ màu , giá tr 1 sậ ả ẽ ươ ứ ớ ị ầ ủ ả ồ ị ẽ
t ng ng v i giá tr trong hàng th 2 c a b n đ màu ….ươ ứ ớ ị ứ ủ ả ồ
- Đ l ch cũng đ c s d ng trong vi c đ nh d ng file nh đ ho đ tăng t i đa sộ ệ ượ ử ụ ệ ị ạ ả ồ ạ ể ố ố
l ng màu s c có th đ c tr giúp . ượ ắ ể ượ ợ
Gi i h n trong vi c tr giúp nh thu c l p unit16ớ ạ ệ ợ ả ộ ớ
- Toolbox x lý nh c a Matlab tr giúp có gi i h n nh ch s thu c l p uint16 . Taử ả ủ ợ ớ ạ ả ỉ ố ộ ớ
có th đ c nh ng nh đó và hi n th chúng trong Matlab nh ng tr c khi x lý chúng ,ể ọ ữ ả ể ị ư ướ ử
ta ph i chuy n đ i chúng sang ki u uint8 ho c double . ả ể ổ ể ặ Đ chuy n đ i ( convert ) t iể ể ổ ớ
ki u double ta dùng hàm ể im2double . Đ gi m s l ng màu c a nh xu ng 256 màuể ả ố ượ ủ ả ố
(uint8 ) s d ng hàm ử ụ imapprox .
2. nh c ng đ ( Intensity Images )Ả ườ ộ
- M t nh c ng đ là m t ma tr n d li u nh I mà giá tr c a nó đ i di n choộ ả ườ ộ ộ ậ ữ ệ ả ị ủ ạ ệ
c ng đ trong m t s vùng nào đó c a nh . Matlab ch a m t nh c ng đ nhườ ộ ộ ố ủ ả ứ ộ ả ườ ộ ư
m t ma tr n d n , v i m i ph n t c a ma tr n t ng ng v i m t pixel c a nh . Maộ ậ ơ ớ ỗ ầ ử ủ ậ ươ ứ ớ ộ ủ ả
tr n có th thu c l p double , uint8 hay uint16 . Trong khi nh c ng đ hi m khiậ ể ộ ớ ả ườ ộ ế
đ c l u v i b n đ màu , Matlab s d ng b n đ màu đ hi n th chúng .ượ ư ớ ả ồ ử ụ ả ồ ể ể ị
- Nh ng ph n t trong ma tr n c ng đ đ i di n cho các c ng đ khác nhau ho cữ ầ ử ậ ườ ộ ạ ệ ườ ộ ặ
đ xám . Nh ng đi m có c ng đ b ng 0 th ng đ c đ i di n b ng màu đen vàộ ữ ể ườ ộ ằ ườ ượ ạ ệ ằ
c ng đ 1,255 ho c 65535 th ng đ i di n cho c ng đ cao nh t hay màu tr ng . ườ ộ ặ ườ ạ ệ ườ ộ ấ ắ
3. nh nh phân (Binary Images )Ả ị
-Trong m t nh nh phân , m i pixel ch có th ch a m t trong hai giá tr nh phân 0ộ ả ị ỗ ỉ ể ứ ộ ị ị
ho c 1 . Hai giá tr này t ng ng v i b t ho t t ( on ho c off ) . M t nh nh phânặ ị ươ ứ ớ ậ ặ ắ ặ ộ ả ị
đ c l u tr nh m t m ng lôgíc c a 0 và 1 . ượ ư ữ ư ộ ả ủ
4. nh RGB ( RGB Images )Ả
- M t nh RGB - th ng đ c g i là ộ ả ườ ượ ọ true-color , đ c l u tr trong Matlab d i d ngượ ư ữ ướ ạ
m t m ng d li u có kích th c 3 chi u mxnx3 đ nh nghĩa các giá tr màu red, green vàộ ả ữ ệ ướ ề ị ị
blue cho m i pixel riêng bi t . nh RGB không s d ng palette . Màu c a m i pixelỗ ệ Ả ử ụ ủ ỗ
đ c quy t đ nh b i s k t h p gi a các giá tr R,G,B ( Red, Green , Blue ) đ c l uượ ế ị ở ự ế ợ ữ ị ượ ư
tr trong m t m t ph ng màu t i v trí c a pixel . Đ nh d ng file đ ho l u tr nhữ ộ ặ ẳ ạ ị ủ ị ạ ồ ạ ư ữ ả

2
RGB gi ng nh m t nh 24 bít trong đó R,G,B chi m t ng ng 8 bít m t . Đi u nàyố ư ộ ả ế ươ ứ ộ ề
cho phép nh n đ c 16 tri u màu khác nhau . ậ ượ ệ
- M t m ng RGB có th thu c l p double , uint8 ho c uint16 . Trong m t m ng RGBộ ả ể ộ ớ ặ ộ ả
thu c l p double , m i thành ph n màu có giá tr gi a 0 và 1 . M t pixel mà thành ph nộ ớ ỗ ầ ị ữ ộ ầ
màu c a nó là (0,0,0) đ c hi n th v i màu đen và m t pixel mà thành ph n màu làủ ượ ể ị ớ ộ ầ
(1,1,1 ) đ c hi n th v i màu tr ng . Ba thành ph n màu c a m i pixel đ c l u trượ ể ị ớ ắ ầ ủ ỗ ượ ư ữ
cùng v i chi u th 3 c a m ng d li u . Ch ng h n , giá tr màu R,G,B c a pixelớ ề ứ ủ ả ữ ệ ẳ ạ ị ủ
(10,5) đ c l u tr trong RGB(10,5,1) , RGB(10,5,2) và RGB(10,5,3) t ng ng . ượ ư ữ ươ ứ
- Đ tính toán màu s c c a pixel t i hàng 2 và c t 3 ch ng h n , ta nhìn vào b ba giáể ắ ủ ạ ộ ẳ ạ ộ
tr đ c l u tr trong (2,3,1:3) . Gi s (2,3,1) ch a giá tr 0.5176 ; (2,3,2) ch a giá trị ượ ư ữ ả ử ứ ị ứ ị
0.1608 và (2,3,3) ch a giá tr 0.0627 thì màu s c c a pixel t i (2,3 ) s là ứ ị ắ ủ ạ ẽ
(0.5176,0.1608,0.0627)
- Đ minh ho xa h n khái ni m ba m t ph ng màu riêng bi t đ c s d ng trongể ạ ơ ệ ặ ẳ ệ ượ ử ụ
m t nh RGB , đo n mã sau đây t o m t nh RGB đ n gi n ch a các vùng liên t cộ ả ạ ạ ộ ả ơ ả ứ ụ
c a R,G,B và sau đó t o m t nh cho m i m t ph ng riêng c a nó ( R,G,B ) . Nó hi nủ ạ ộ ả ỗ ặ ẳ ủ ể
th m i m t ph ng màu riêng r và cũng hi n th nh g c .ị ỗ ặ ẳ ẽ ể ị ả ố
RGB=reshape(ones(64,1)*reshape(jet(64),1,192),[64,64,3]);
R=RGB(:,:,1);
G=RGB(:,:,2);
B=RGB(:,:,3);
imshow(R)
figure, imshow(G)
figure, imshow(B)
figure, imshow(RGB)
Các m t ph ng màu riêng r c a m t nh RGBặ ẳ ẽ ủ ộ ả
- Chú ý r ng m i m t ph ng màu riêng r ch a m t kho ng tr ng . Kho ng tr ngằ ỗ ặ ẳ ẽ ứ ộ ẳ ắ ả ắ
t ng ng v i giá tr cao nh t c a m i màu riêng r . Ch ng h n trong nh m t ph ngươ ứ ớ ị ấ ủ ỗ ẽ ẳ ạ ả ặ ẳ
R , vùng tr ng đ i di n cho s t p trung cao nh t c a màu đ thu n khi t . N u Rắ ạ ệ ự ậ ấ ủ ỏ ầ ế ế
đ c tr n v i G ho c B ta s có màu xám . Vùng màu đen trong nh ch ra giá tr c aượ ộ ớ ặ ẽ ả ỉ ị ủ

pixel mà không ch a màu đ R=0. T ng t cho các m t ph ng màu G và B .ứ ỏ ươ ự ặ ẳ
3
5. M ng nh nhi u khung hình ( Multiframe Image Arrays )ả ả ề
- V i m t vài ng d ng , ta có th c n làm vi c v i m t t p h p các nh quan h v iớ ộ ứ ụ ể ầ ệ ớ ộ ậ ợ ả ệ ớ
th i gian ho c khung nhìn nh MRI hay khung hình phim .ờ ặ ư
- Toolbox x lý nh trong Matlab cung c p s tr giúp cho vi c l u tr nhi u nhử ả ấ ự ợ ệ ư ữ ề ả
trong cùng m t m ng . M i nh đ c g i là m t khung hình ( Frame ) . N u m tộ ả ỗ ả ượ ọ ộ ế ộ
m ng gi nhi u frame , chúng đ c n i theo 4 chi u . Ch ng h n , m t m ng v i nămả ữ ề ượ ố ề ẳ ạ ộ ả ớ
nh có kích th c 400x300 s là m t m ng có kích th c 400x300x3x5 . M t nh chả ướ ẽ ộ ả ướ ộ ả ỉ
s ho c nh c ng đ nhi u khung t ng t s là 400x300x1x5 . ố ặ ả ườ ộ ề ươ ự ẽ
- S d ng l nh ử ụ ệ cat đ ch a các nh riêng r trong m t m ng nhi u khung hình .ể ứ ả ẽ ộ ả ề
Ch ng h n , n u ta có m t nhóm các nh A1,A2,A3,A4 và A5 , ta có th ch a chúngẳ ạ ế ộ ả ể ứ
trong m t m ng duy nh t s d ng ộ ả ấ ử ụ
A=cat(4,A1,A2,A3,A4,A5 )
- Ta cũng có th trích các khung hình t m t nh nhi u khung hình . Ch ng h n , n uể ừ ộ ả ề ẳ ạ ế
ta có m t nh nhi u khung hình MULTI , l nh sau đây s trích ra khung hình th 3 ộ ả ề ệ ẽ ứ
FRM3=MULTI( : , : , : , 3 )
- Ghi nh r ng , trong m t m ng nh nhi u khung hình , m i nh ph i có cùng kíchớ ằ ộ ả ả ề ỗ ả ả
th c và có cùng s m t ph ng . Trong m t nh ch s nhi u khung , m i nh ph i sướ ố ặ ẳ ộ ả ỉ ố ề ỗ ả ả ử
d ng cùng m t b n đ màu ụ ộ ả ồ
S tr giúp gi i h n v i nh nhi u khungự ợ ớ ạ ớ ả ề
- Nhi u hàm trong toolbox ho t đ ng ch trên 2 ho c 3 chi u đ u tiên . Ta có th sề ạ ộ ỉ ặ ề ầ ể ử
d ng chi u th 4 v i nh ng hàm này nh ng ta ph i x lý m i khung hình m t cáchụ ề ứ ớ ữ ư ả ử ỗ ộ
đ c l p . Ch ng h n , l i g i hàm sau s hi n th khung hình th 7 trong m t m ngộ ậ ẳ ạ ờ ọ ẽ ể ị ứ ộ ả
MULTI
imshow(MULTI(: , : , : , 7 ))
- N u ta truy n m t m ng vào hàm và m ng có nhi u chi u h n s chi u mà hàm đãế ề ộ ả ả ề ề ơ ố ề
đ c thi t k đ ho t đ ng , k t qu có th không đoán tr c đ c . Trong m t sượ ế ế ể ạ ộ ế ả ể ướ ượ ộ ố
tr ng h p , hàm đ n gi n ch x lý khung hình đ u tiên nh ng trong các tr ng h pườ ợ ơ ả ỉ ử ầ ư ườ ợ
khác , s ho t đ ng không t o ra k t qu nào có ý nghĩa . ự ạ ộ ạ ế ả

ả- Các hàm chuy n đ i ki u nh ể ổ ể ả
- V i các thao tác nh t đ nh , s th t h u ích khi có th chuy n đ i nh t d ng nàyớ ấ ị ẽ ậ ữ ể ể ổ ả ừ ạ
sang d ng khác . Ch ng h n , n u ta mu n l c m t màu nh đ c l u tr d i d ngạ ẳ ạ ế ố ọ ộ ả ượ ư ữ ướ ạ
nh ch s , đ u tiên , ta nên chuy n đ i nó thành d ng nh RGB . Khi ta áp d ng phépả ỉ ố ầ ể ổ ạ ả ụ
4
l c t i nh RGB , Matlab s l c giá tr c ng đ trong nh t ng ng . N u ta cọ ớ ả ẽ ọ ị ườ ộ ả ươ ứ ế ố
g ng l c nh ch s , Matlab đ n gi n ch áp đ t phép l c t i ma tr n nh ch s vàắ ọ ả ỉ ố ơ ả ỉ ặ ọ ớ ậ ả ỉ ố
k t qu s không có ý nghĩa ế ả ẽ
Chú ý : Khi convert m t nh t d ng này sang d ng khác , nh k t qu có th khácộ ả ừ ạ ạ ả ế ả ể
nh ban đ u . Ch ng h n , n u ta convert m t nh màu ch s sang m t nh c ng đả ầ ẳ ạ ế ộ ả ỉ ố ộ ả ườ ộ
, k t qu ta s thu đ c m t nh đen tr ng .ế ả ẽ ượ ộ ả ắ
- Danh sách sau đây s li t kê các hàm đ c s d ng trong vi c convert nh :ẽ ệ ượ ử ụ ệ ả
+ dither : T o m t nh nh phân t m t nh c ng đ đen tr ng b ng cách tr n , t oạ ộ ả ị ừ ộ ả ườ ộ ắ ằ ộ ạ
m t nh ch s t m t nh RGB b ng cách tr ng (dither )ộ ả ỉ ố ừ ộ ả ằ ộ
+ gray2id : T o m t nh ch s t m t nh c ng đ đen tr ng .ạ ộ ả ỉ ố ừ ộ ả ườ ộ ắ
+ grayslice : T o m t nh ch s t m t nh c ng đ đen tr ng b ng cách đ tạ ộ ả ỉ ố ừ ộ ả ườ ộ ắ ằ ặ
ng ng ưỡ
+ im2bw : T o m t nh nh phân t m t nh c ng đ , nh ch s hay nh RGBạ ộ ả ị ừ ộ ả ườ ộ ả ỉ ố ả
trên c s c a ng ng ánh sáng .ơ ở ủ ưỡ
+ ind2gray : T o m t nh c ng đ đen tr ng t m t nh ch s ạ ộ ả ườ ộ ắ ừ ộ ả ỉ ố
+ ind2rgb : T o m t nh RGB t m t nh ch s ạ ộ ả ừ ộ ả ỉ ố
+ mat2gray : T o m t nh c ng đ đen tr ng t d li u trong m t ma tr n b ngạ ộ ả ườ ộ ắ ừ ữ ệ ộ ậ ằ
cách l y t l gi li u ấ ỉ ệ ữ ệ
+ rgb2gray : T o m t nh c ng đ đen tr ng t m t nh RGBạ ộ ả ườ ộ ắ ừ ộ ả
+ rgb2ind : T o m t nh ch s t m t nh RGBạ ộ ả ỉ ố ừ ộ ả
- Ta cũng có th th c hi n các phép chuy n đ i ki u ch s d ng cú pháp c a Matlab .ể ự ệ ể ổ ể ỉ ử ụ ủ
Ch ng h n , ta có th convert m t nh c ng đ sang nh RGB b ng cách ghép n i 3ẳ ạ ể ộ ả ườ ộ ả ằ ố
ph n copy c a ma tr n nh g c gi a 3 chi u :ầ ủ ậ ả ố ữ ề
RGB=cat(3,I,I,I );
- nh RGB thu đ c có các ma tr n đ ng nh t cho các m t ph ng R,G,B vì v y nhẢ ượ ậ ồ ấ ặ ẳ ậ ả

hi n th gi ng nh bóng xám .ể ị ố ư
- Thêm vào nh ng công c chuy n đ i chu n đã nói trên , cũng có m t s hàm màữ ụ ể ổ ẩ ở ộ ố
tr l i ki u nh khác nh m t ph n trong thao tác mà chúng th c hi n . Xem thêmả ạ ể ả ư ộ ầ ự ệ
Help Online
Chuy n đ i không gian màu ể ổ
- Toolbox x lý nh bi u di n màu s c nh các giá tr RGB ( tr c ti p trong nh RGBử ả ể ễ ắ ư ị ự ế ả
ho c gián ti p trong nh ch s ) . Tuy nhiên , có các ph ng pháp khác cho vi c bi uặ ế ả ỉ ố ươ ệ ể
5
di n màu s c . Ch ng h n , m t màu có th đ c đ i di n b i các giá tr ễ ắ ẳ ạ ộ ể ượ ạ ệ ở ị hue ,
saturation và các giá tr thành ph n (HSV ) . Các ph ng pháp khác cho vi c bi u di nị ầ ươ ệ ể ễ
màu đ c g i là không gian màu .ượ ọ
- Toolbox cung c p m t t p các th t c đ chuy n đ i gi a các không gian màu . Cácấ ộ ậ ủ ụ ể ể ổ ữ
hàm x lý nh t chúng coi d li u màu s c d i d ng RGB tuy nhiên , ta có th x lýử ả ự ữ ệ ắ ướ ạ ể ử
m t nh mà s d ng các không gian màu khác nhau b ng cách chuy n đ i nó sangộ ả ử ụ ằ ể ổ
RGB sau đó chuy n đ i nh đã đ c x lý tr l i không gian màu ban đ u . ể ổ ả ượ ử ở ạ ầ
ầ- Đ c và ghi d li u nh ọ ữ ệ ả
- Ph n này s gi i thi u cách đ c và ghi d li u nh ầ ẽ ớ ệ ọ ữ ệ ả
1. Đ c m t nh đ ho ọ ộ ả ồ ạ
- Hàm imread đ c m t nh t b t kì đ nh d ng nào đ c tr giúp trong b t kì chi uọ ộ ả ừ ấ ị ạ ượ ợ ấ ề
sâu bit nào đ c tr giúp . H u h t các file nh s d ng 8 bít đ ch a giá tr c aượ ợ ầ ế ả ử ụ ể ứ ị ủ
pixel . Khi chúng đ c đ c vào b nh , Matlab ch a chúng d i d ng uint8 . V i cácượ ọ ộ ớ ứ ướ ạ ớ
file tr giúp 16 bít d li u , PNG và TIFF , Matlab ch a chúng d i d ng uint16ợ ữ ệ ứ ướ ạ
Chú ý : V i nh ch s , imread luôn luôn đ c b n đ màu vào trong m t chu i thu cớ ả ỉ ố ọ ả ồ ộ ỗ ộ
l p double , th m chí m ng nh t nó thu c l p uint8 hay uint16ớ ậ ả ả ự ộ ớ
- Ch ng h n , đo n mã sau s đ c m t nh RGB vào không gian làm vi c c a Matlabẳ ạ ạ ẽ ọ ộ ả ệ ủ
l u trong bi n RGBư ế
RGB=imread(‘football.jpg’);
- Trong ví d này , imread s nh n ra đ nh d ng file đ s d ng t tên file . Ta cũng cóụ ẽ ậ ị ạ ể ử ụ ừ
th ch ra đ nh d ng file nh m t tham s trong hàm imread . Matlab tr giúp r t nhi uể ỉ ị ạ ư ộ ố ợ ấ ề
đ nh d ng đ ho thông d ng ch ng h n : BMP , GIF , JPEG , PNG , TIFF … Đ bi tị ạ ồ ạ ụ ẳ ạ ể ế

thêm các ki u g i hàm và tham s truy n vào , xem tr giúp online c a Matlab .ể ọ ố ề ợ ủ
Đ c nhi u nh t m t file đ ho ọ ề ả ừ ộ ồ ạ
- Matlab tr giúp m t s đ nh d ng file đ ho ch ng h n nh : HDF và TIFF , chúngợ ộ ố ị ạ ồ ạ ẳ ạ ư
ch a nhi u nh . Theo m c đ nh , imread ch tr giúp nh đ u tiên trong file . Đ nh pứ ề ả ặ ị ỉ ợ ả ầ ể ậ
thêm các nh t file , s d ng cú pháp đ c tr giúp b i đ nh d ng file . Ch ng h n ,ả ừ ử ụ ượ ợ ở ị ạ ẳ ạ
khi đ c s d ng v i TIFF , ta có th s d ng m t giá tr ch s v i imread đ ch raượ ử ụ ớ ể ử ụ ộ ị ỉ ố ớ ể ỉ
nh mà ta mu n nh p vào . Ví d sau đây đ c m t chu i 27 nh t m t file TIFF vàả ố ậ ụ ọ ộ ố ả ừ ộ
l u nh ng nh anỳ trong m t m ng 4 chi u . Ta có th s d ng hàm ư ữ ả ộ ả ề ể ử ụ iminfo đ xemể
bao nhiêu nh đã đ c l u tr trong file :ả ượ ư ữ
mri = uint8(zeros(128,128,1,27)); % preallocate 4-D array
6
for frame=1:27
[mri(:,:,:,frame),map] = imread('mri.tif',frame);
end
- Khi file ch a nhi u nh theo m t s ki u nh t đ nh ch ng h n theo th t th i gian ,ứ ề ả ộ ố ể ấ ị ẳ ạ ứ ự ờ
ta có th l u nh trong Matlab d i d ng m ng 4 chi u . T t c các nh ph i có cùngể ư ả ướ ạ ả ề ấ ả ả ả
kích th c . ướ
2. Ghi m t nh đ ho ộ ả ồ ạ
- Hàm imwrite s ghi m t nh t i m t file đ ho d i m t trong các đ nh d ng đ cẽ ộ ả ớ ộ ồ ạ ướ ộ ị ạ ượ
tr giúp . C u trúc c b n nh t c a imwrite s yêu c u m t bi n nh và tên file . N uợ ấ ơ ả ấ ủ ẽ ầ ộ ế ả ế
ta g p m t ph n m r ng trong tên file , Matlab s nh n ra đ nh d ng mong mu n tộ ộ ầ ở ộ ẽ ậ ị ạ ố ừ
nó . Ví d sau t i m t nh ch s X t m t file Mat v i b n đ màu k t h p v i nóụ ả ộ ả ỉ ố ừ ộ ớ ả ồ ế ợ ớ
map sau đó ghi nh xu ng m t file bitmap .ả ố ộ
load clown
whos
Name Size Bytes Class
X 200x320 512000 double array
caption 2x1 4 char array
map 81x3 1944 double array
Grand total is 64245 elements using 513948 bytes

imwrite(X,map,'clown.bmp')
Ch ra đ nh d ng ph - Tham s đ c bi t ỉ ị ạ ụ ố ặ ệ
- Khi s d ng imwrite v i m t s đ nh d ng đ ho , ta có th ch ra các tham s ph .ử ụ ớ ộ ố ị ạ ồ ạ ể ỉ ố ụ
Ch ng h n , v i đ nh d ng PNG ta có th ch ra đ sâu bít nh m t tham s ph . Víẳ ạ ớ ị ạ ể ỉ ộ ư ộ ố ụ
d sau s chi m t nh c ng đ I v i m t file nh 4 bít PNG ụ ẽ ộ ả ườ ộ ớ ộ ả
imwrite(I,'clown.png','BitDepth',4 );
- Đ bi t thêm các c u trúc khác c a hàm xem ph n tr giúp tr c tuy n c a Matlab .ể ế ấ ủ ầ ợ ự ế ủ
Đ c và ghi nh nh phân theo đ nh d ng 1 bítọ ả ị ị ạ
7
- Trong m t s đ nh d ng file , m t nh nh phân có th đ c l u trong m t đ nh d ngộ ố ị ạ ộ ả ị ể ượ ư ộ ị ạ
1 bít . N u đ nh d ng file tr giúp nó ,Matlab ghi nh nh phân nh nh 1 bít theo m cế ị ạ ợ ả ị ư ả ặ
đ nh . Khi ta đ c m t nh nh phân v i đ nh d ng 1 bít , Matlab đ i di n nó trongị ọ ộ ả ị ớ ị ạ ạ ệ
không gian làm vi c nh m t m ng lôgíc .ệ ư ộ ả
- Ví d sau đ c m t nh nh phân và ghi nó d i d ng file TIFF . B i vì đ nh d ngụ ọ ộ ả ị ướ ạ ở ị ạ
TIFF tr giúp nh 1 bít , file đ c ghi lên đĩa theo đ nh d ng 1 bít :ợ ả ượ ị ạ
BW = imread('text.png');
imwrite(BW,'test.tif');
Đ ki m tra chi u sâu bít c a file test.tif , g i hàm iminfo và ki m tra tr ng BitDepthể ể ề ủ ọ ể ườ
c a nó :ủ
info = imfinfo('test.tif');
info.BitDepth
ans =
1
Chú ý : Khi gi file nh phân , Matlab thi t l p tr ng ColorType thành ‘grayscale’ị ế ậ ườ
Xem l p l u tr c a file ớ ư ữ ủ
- Hàm imwrite s d ng lu t sau đây đ quy t đ nh l p l u tr đ c s d ng trong nhử ụ ậ ể ế ị ớ ư ữ ượ ử ụ ả
k t qu :ế ả
+ logical : N u đ nh d ng nh ra ( Output Image ) đ c ch rõ là tr giúp nh 1 bít ,ế ị ạ ả ượ ỉ ợ ả
hàm imwrite t o m t file nh 1 bít . N u đ nh d ng nh ra đ c ch rõ là không trạ ộ ả ế ị ạ ả ượ ỉ ợ
giúp nh 1 bít ( nh JPEG ) , hàm imwrite chuy n nh t i m t nh thu c l p uint8ả ư ể ả ớ ộ ả ộ ớ

+ uint8 : N u đ nh d ng nh ra đ c ch rõ là tr giúp nh 8 bít , hàm imwrite t o m tế ị ạ ả ượ ỉ ợ ả ạ ộ
nh 8 bít ả
+uint16 : N u đ nh d ng nh ra đ c ch rõ tr giúp nh 16 bít ( PNG ho c TIFF ) ,ế ị ạ ả ượ ỉ ợ ả ặ
hàm imwrite t o m t nh 16 bít . N u đ nh d ng nh ra không tr giúp nh 16 bít ,ạ ộ ả ế ị ạ ả ợ ả
hàm chuy n đ i d li u nh t i l p uint8 và t o m t nh 8 bít .ể ổ ữ ệ ả ớ ớ ạ ộ ả
+double : Matlab chuy n d li u nh t i d ng uint8 và t o m t nh 8 bít b i vì h uể ữ ệ ả ớ ạ ạ ộ ả ở ầ
h t các file nh s d ng đ nh d ng 8 bít . ế ả ử ụ ị ạ
2. Truy v n m t file đ ho ấ ộ ồ ạ
8
- Hàm iminfo cho phép ta có th nh n đ c thông tin v m t file nh đ c tr giúpể ậ ượ ề ộ ả ượ ợ
b i toolbox . Thông tin mà ta nh n đ c ph thu c vào ki u c a file nh ng nó luônở ậ ượ ụ ộ ể ủ ư
bao g m nh ng thông tin sau :ồ ữ
+ Tên c a file nh ủ ả
+ Đ nh d ng file nhị ạ ả
+ S version c a đ nh d ng fileố ủ ị ạ
+ Ngày s a đ i file g n nh t ử ổ ầ ấ
+ Kích th c file tính theo byteướ
+ Chi u r ng nh tính theo pixelề ộ ả
+ Chi u cao nh tính theo pixelề ả
+ S l ng bít trên m t pixelố ượ ộ
+ Ki u nh : RGB, ch s …ể ả ỉ ố
ố- Chuy n đ i đ nh d ng các file nh ể ổ ị ạ ả
- Đ thay đ i đ nh d ng đ ho c a m t nh , s d ng hàm imread đ đ c m t nh vàể ổ ị ạ ồ ạ ủ ộ ả ử ụ ể ọ ộ ả
sau đó l u nó v i hàm imwrite đ ng th i ch ra đ nh d ng t ng ng .ư ớ ồ ờ ỉ ị ạ ươ ứ
- Đ minh ho , ví d sau đây s d ng hàm imread đ đ c m t file BMP vào khôngể ạ ụ ử ụ ể ọ ộ
gian làm vi c .Sau đó , hàm imwrite l u nh này d i đ nh d ng PNG ệ ư ả ướ ị ạ
bitmap = imread('mybitmap.bmp','bmp');
imwrite(bitmap,'mybitmap.png','png');
i - Đ c và ghi nh DICOMọ ả
- Toolbox x lý nh bao g m tr giúp cho vi c thao tác v i nh s ( Digital Imaging )ử ả ồ ợ ệ ớ ả ố

và nh y h c (Communication in Medicine ) .ả ọ
1. Đ c d li u nh t m t file DICOMọ ữ ệ ả ừ ộ
- Đ đ c m t d li u nh t m t file DICOM , s d ng hàm đicomread . Hàm nàyể ọ ộ ữ ệ ả ừ ộ ử ụ
đ c các file tuân theo đ c tr ng DICOM nh ng có th đ c đ c các file không theoọ ặ ư ư ể ọ ượ
chu n chung nào ẩ
- Ví d sau đây đ c m t nh t m t file DICOM m u đi kèm v i toolbox .ụ ọ ộ ả ừ ộ ẫ ớ
I = dicomread('CT-MONO2-16-ankle.dcm');
Đ xem d li u nh , s d ng hàm hi n th c a toolbox – imshow ho c imview ( Doể ữ ệ ả ử ụ ể ị ủ ặ
d li u nh là s 16 bít có d u , ta ph i s d ng c u trúc t chuy n đ i v i m i hàmữ ệ ả ố ấ ả ử ụ ấ ự ể ổ ớ ỗ
hi n th )ể ị
imview(I,[])
9
2. Đ c Metadata t m t file DICOMọ ừ ộ
- Các file DICOM bao g m các thông tin đ c g i là Metadata . Nh ng thông tin nàyồ ượ ọ ữ
mô t t c tính c a d li u nh nó n m gi nh : kích th c , chi u , chi u sâu bít .ả ặ ủ ữ ệ ả ắ ữ ư ướ ề ề
Thêm vào đó , đ c tr ng DICOM đ nh nghĩa nhi u các tr ng metadata khác đ mô tặ ư ị ề ườ ể ả
các đ c tính khác c a d li u nh : cách th c đ c s d ng đ t o d li u , thi t l pặ ủ ữ ệ ư ứ ượ ử ụ ể ạ ữ ệ ế ậ
thi t b dùng đ ch p nh , thông tin v vi c nghiên c u …Hàm dicomread có th xế ị ể ụ ả ề ệ ứ ể ử
lý h u h t t t c các tr ng metadata đ c đ nh nghĩa b i đ c tr ng DICOM ( hayầ ế ấ ả ườ ượ ị ở ặ ư
chu n DICOM ) ẩ
- Đ đ c metadata t m t file DICOM , s d ng hàm dicominfo . Hàm này tr v m tể ọ ừ ộ ử ụ ả ề ộ
c u trúc metadata mà m i tr ng trong c u trúc là m t ph n đ c tr ng c a metadataấ ọ ườ ấ ộ ầ ặ ư ủ
trong file DICOM đó .
info = dicominfo('CT-MONO2-16-ankle.dcm');
info =
Filename: [1x47 char]
FileModDate: '24-Dec-2000 19:54:47'
FileSize: 525436
Format: 'DICOM'
FormatVersion: 3

Width: 512
Height: 512
BitDepth: 16
ColorType: 'grayscale'
SelectedFrames: []
FileStruct: [1x1 struct]
StartOfPixelData: 1140
MetaElementGroupLength: 192
FileMetaInformationVersion: [2x1 double]
MediaStorageSOPClassUID: '1.2.840.10008.5.1.4.1.1.7'
MediaStorageSOPInstanceUID: [1x50 char]
TransferSyntaxUID: '1.2.840.10008.1.2'
10
ImplementationClassUID: '1.2.840.113619.6.5'
.
.
.
Ta có th s d ng c u trúc metadata đ c tr l i b i hàm dicominfo đ ch đ nh fileể ử ụ ấ ượ ả ạ ở ể ỉ ị
DICOM ta mu n đ c s d ng hàm dicomread . Ch ng h n , ta có th s d ng đo nố ọ ử ụ ẳ ạ ể ử ụ ạ
mã sau đây đ đ c metadata t m t file DICOM m u và sau đó truy n metadata đó t iể ọ ừ ộ ẫ ề ớ
hàm dicomread đ đ c nh t file :ể ọ ả ừ
info = dicominfo('CT-MONO2-16-ankle.dcm');
I = dicomread(info);
3. Ghi d li u lên m t file DICOMữ ệ ộ
- Đ ghi d li u lên m t file DICOM , s d ng hàm dicomwrite . Ví d sau ghi m tể ữ ệ ộ ử ụ ụ ộ
nh I t i file DICOM ankle.dcmả ớ
dicomwrite(I,'h:\matlab\tmp\ankle.dcm')
Ghi metadata lên m t file DICOMộ
Khi ta ghi d li u nh lên m t file DICOM , hàm dicomwrite bao g m m t t p h pữ ệ ả ộ ồ ộ ậ ợ
nh nh t c a các tr ng trong metadata đ c yêu c u b i ki u c a đ i t ng thôngỏ ấ ủ ườ ượ ầ ở ể ủ ố ượ

tin DICOM ( IOD ) mà ta đang t o . dicomwrite tr giúp 3 ki u DICOM IOD :ạ ợ ể
+ Secondary capture ( m c đ nh )ặ ị
+ Magnetic resonance
+ Computed tomography
- Ta có th ch rõ matadata nào ta mu n ghi lên file b ng cách truy n t i hàmể ỉ ố ằ ề ớ
dicomwrite m t c u trúc metadata nh n đ c t hàm dicominfo ộ ấ ậ ượ ừ
info = dicominfo('CT-MONO2-16-ankle.dcm');
I = dicomread(info);
dicomwrite(I,'h:\matlab\tmp\ankle.dcm',info)
- Trong tr ng h p này , hàm dicomwrite ghi thông tin trong c u trúc metadata info lênườ ợ ấ
m t file DICOM m i . Khi ghi d li u t i file , có m t s tr ng mà dicomwrite ph iộ ớ ữ ệ ớ ộ ố ườ ả
c p nh t . Ch ng h n , dicomwrite ph i c p nh t ngày tháng s a đ i c a file m i . Đậ ậ ẳ ạ ả ậ ậ ử ổ ủ ớ ể
minh ho , so sánh ngày s a đ i c a metadata g c v i ngày s a đ i file trong file m i :ạ ử ổ ủ ố ớ ử ổ ớ
info.FileModDate
11
ans =
24-Dec-2000 19:54:47
S d ng dicominfo , đ c metadata t m t file m i đ c ghi , ki m tra ngày s a đ iử ụ ọ ừ ộ ớ ượ ể ử ổ
file :
info2 = dicominfo('h:\matlab\tmp\ankle.dcm');
info2.FileModDate
ans =
16-Mar-2003 15:32:43
1- S h c nh ố ọ ả
- S h c nh s ng d ng c a các phép toán s h c chu n nh : c ng , tr , nhân ,ố ọ ả ự ứ ụ ủ ố ọ ẩ ư ộ ừ
chia lên nh . S h c nh đ c s d ng nhi u trong x lý nh trong c các b c banả ố ọ ả ượ ử ụ ề ử ả ả ướ
đ u l n các thao tác ph c t p h n . Ch ng h n , tr nh có th đ c s d ng đ phátầ ẫ ứ ạ ơ ẳ ạ ừ ả ể ượ ử ụ ể
hi n s khác nhau gi a hai ho c nhi u nh c a cùng m t c nh ho c m t v t .ệ ự ữ ặ ề ả ủ ộ ả ặ ộ ậ
- Ta có th th c hi n s h c nh s d ng các toán t s h c c a Matlab . Toolbox xể ự ệ ố ọ ả ử ụ ử ố ọ ủ ử
lý nh bao g m m t t p h p các hàm ng d ng các phép toán s h c trên t t c cácả ồ ộ ậ ợ ứ ụ ố ọ ấ ả

con s không l p đ y . Hàm s h c c a toolbox ch p nh n b t kì ki u d li u s nàoố ấ ầ ố ọ ủ ấ ậ ấ ể ữ ệ ố
bao g m uint8 , uint16 hay double và tr l i nh k t qu trong cùng đ nh d ng . Cácồ ả ạ ả ế ả ị ạ
hàm th c hi n các phép toán v i đ chính xác kép trên t ng ph n t nh ng khôngự ệ ớ ộ ừ ầ ử ư
chuy n đ i nh t i giá tr chính xác kép trong không gian làm vi c c a Matlab . S trànể ổ ả ớ ị ệ ủ ự
s đ c đi u khi n t đ ng . Hàm s c t b giá tr tr v đ v a v i ki u d li u . ố ượ ề ể ự ộ ẽ ắ ỏ ị ả ề ể ừ ớ ể ữ ệ
1 . Lu t c t b trong s h c nh ậ ắ ỏ ố ọ ả
- K t qu c a s h c nguyên có th d dàng tràn s dùng cho l u tr . Ch ng h n , giáế ả ủ ố ọ ể ễ ố ư ữ ẳ ạ
tr c c đ i ta có th l u tr trong uint8 là 255 . Các phép toán s h c có th tr v giáị ự ạ ể ư ữ ố ọ ể ả ề
tr phân s - không đ c bi u di n b i m t chu i s nguyên .ị ố ượ ể ễ ở ộ ỗ ố
- Các hàm s h c nh s d ng nh ng lu t này cho s h c nguyên :ố ọ ả ử ụ ữ ậ ố ọ
+ Giá tr v t quá kho ng c a ki u s nguyên b c t b t i kho ng đó ị ượ ả ủ ể ố ị ắ ỏ ớ ả
+ Giá tr phân s đ c làm trònị ố ượ
12
Ch ng h n , n u d li u có ki u uint8 , k t qu tr v n u l n h n 255 ( bao g mẳ ạ ế ữ ệ ể ế ả ả ề ế ớ ơ ồ
Inf ) thì đ c gán là 255 . ượ
2. L i g i l ng nhau t i hàm s h c nh ờ ọ ồ ớ ố ọ ả
- Ta có th s d ng các hàm s h c nh k t h p đ th c hi n m t chu i các phép toánể ử ụ ố ọ ả ế ợ ể ự ệ ộ ỗ
. Ch ng h n đ tính giá tr trung bình c a hai nẳ ạ ể ị ủ ả h :
C=(A+B) /2
Ta có th nh p vào nh sau :ể ậ ư
I = imread('rice.png');
I2 = imread('cameraman.tif');
K = imdivide(imadd(I,I2), 2); % not recommended
- Khi đ c s d ng v i ki u uint8 hay uint16 , m i hàm s h c c t k t qu c a nóượ ử ụ ớ ể ỗ ố ọ ắ ế ả ủ
tr c khi truy n nó cho hàm thi p theo . S c t b này có th gi m đáng k l ngướ ề ế ự ắ ỏ ể ả ể ượ
thông tin trong nh cu i cùng . M t cách làm t t h n đ th c hi n m t chu i các tínhả ố ộ ố ơ ể ự ệ ộ ỗ
toán là s d ng hàm ử ụ imlincomb . Hàm này thi hành t t c các phép toán s h c trongấ ả ố ọ
s k t h p tuy n tính c a đ chính xác kép và ch c t b k t qu cu i cùng :ự ế ợ ế ủ ộ ỉ ắ ỏ ế ả ố
K = imlincomb(.5,I,.5,I2); % recommended
K- H th ng to đệ ố ạ ộ

- V trí trong m t nh có th đ c bi u di n trong các h th ng to đ khác nhau phị ộ ả ể ượ ể ễ ệ ố ạ ộ ụ
thu c vào ng c nh . Có hai h th ng to đ trong Matlab là : h th ng to đ pixelộ ữ ả ệ ố ạ ộ ệ ố ạ ộ
và h th ng to đ không gian .ệ ố ạ ộ
1. To đ pixel ạ ộ
- Nhìn chung , ph ng pháp thu n ti n nh t cho vi c bi u di n v trí trong m t nh làươ ậ ệ ấ ệ ể ễ ị ộ ả
s d ng to đ pixel . Trong h to đ này , nh đ c x lý nh m t l i c a cácử ụ ạ ộ ệ ạ ộ ả ượ ử ư ộ ướ ủ
ph n t riêng bi t đ c đánh th t t đ nh t i đáy và t trái sang ph i .ầ ử ệ ượ ứ ự ừ ỉ ớ ừ ả
- V i to đ pixel , thành ph n đ u tiên r ( hàng ) đ c tăng t khi đi t trên xu ngớ ạ ộ ầ ầ ượ ừ ừ ố
d i trong khi c ( c t ) đ c tăng khi đi t trái sang ph i . H to đ pixel là giá trướ ộ ượ ừ ả ệ ạ ộ ị
nguyên và kho ng gi a 1 và chi u dài c a hàng hay c t ả ữ ề ủ ộ
- Có m t t ng ng 1-1 gi a to đ pixel và to đ Matlab s d ng đ mô t maộ ươ ứ ữ ạ ộ ạ ộ ử ụ ể ả
tr n . S t ng ng này t o m t quan h g a ma tr n d li u nh và cách nh đ cậ ự ươ ứ ạ ộ ệ ữ ậ ữ ệ ả ả ượ
hi n th . Ch ng h n , d li u cho pixel trên hàng th 5 , c t th 2 đ c l u tr t iể ị ẳ ạ ữ ệ ứ ộ ứ ượ ư ữ ạ
ph n t (5,2) c a ma tr n .ầ ừ ủ ậ
2. To đ không gian ạ ộ
13
- Trong h to đ pixel , m t pixel đ c x lý nh m t đ n v riêng r đ c phân bi tệ ạ ộ ộ ượ ử ư ộ ơ ị ẽ ượ ệ
duy nh t b i m t c p to đ ch ng h n (5,2 ) . T quan đi m này , m t v trí ch ngấ ở ộ ặ ạ ộ ẳ ạ ừ ể ộ ị ẳ
h n (5,2) không có ý nghĩa . Tuy nhiên , s h u ích khi nghĩ đ n m t pixel nh m tạ ẽ ữ ế ộ ư ộ
mi ng vá hình vuông . T quan đi m này , m t v trí ch ng h n (5.3,2.2) là có nghĩa vàế ừ ể ộ ị ẳ ạ
đ c phân bi t v i (5,2) . Trong to đ không gian này , v trí trong m t nh đ cượ ệ ớ ạ ộ ị ộ ả ượ
đ nh v trên m t m t ph ng và chúng đ c mô t b ng m t c p x và y ( không ph i rị ị ộ ặ ẳ ượ ả ằ ộ ặ ả
và c nh to đ pixel ) . ư ạ ộ
- H to đ không gian này g n t ng ng v i h to đ pixel trong m t ch ng m cệ ạ ộ ầ ươ ứ ớ ệ ạ ộ ộ ừ ự
nào đó . Ch ng h n , to đ không gian c a đi m g a c a b t kì pixel nào đ c phânẳ ạ ạ ộ ủ ể ữ ủ ấ ượ
bi t v i to đ pixel c a pixel đó . Cũng có m t vài khác bi t , tuy nhiên , trong toệ ớ ạ ộ ủ ộ ệ ạ
đ pixel , góc trên trái c a m t nh là (1,1 ) trong khi trong to đ không gian , v tríộ ủ ộ ả ạ ộ ị
này m c đ nh là (0.5,0.5 ) . S khác nhau này là do h to đ pixel là r i r c trong khiặ ị ự ệ ạ ộ ờ ạ
to đ không gian là liên t c . Cũng v y , góc trên trái luôn là (1,1 ) trong h pixel ,ạ ộ ụ ậ ệ
nh ng ta có th ch ra m t đi m g c không chính quy cho h to đ không gian . M tư ể ỉ ộ ể ố ệ ạ ộ ộ

s khác bi t d gây nh m l n n a là quy c : th t c a các thành ph n n m ngangự ệ ễ ầ ẫ ữ ướ ứ ự ủ ầ ằ
và th ng đ ng đ c ph c v cho kí hi u c a hai h th ng . Nh đã đ c p tr c đây ,ẳ ứ ượ ụ ụ ệ ủ ệ ố ư ề ậ ướ
to đ pixel đ c đ i di n b i m t c p (r,c ) trong khi to đ không gian đ c bi uạ ộ ượ ạ ệ ở ộ ặ ạ ộ ượ ể
di n b i (x,y) . Khi cú pháp cho m t hàm s d ng r và c , nó tham chi u đ n h to đễ ở ộ ử ụ ế ế ệ ạ ộ
pixel . Khi cú pháp s d ng x, y nó đang ng m đ nh s d ng h to đ không gian . ử ụ ầ ị ử ụ ệ ạ ộ
S d ng h to đ không gian không chính quy ử ụ ệ ạ ộ
- Theo m c đ nh , to đ không gian c a m t nh t ng ng v i to đ pixel . Ch ngặ ị ạ ộ ủ ộ ả ươ ứ ớ ạ ộ ẳ
h n , đi m gi a c a pixel t i (5,3) có m t to đ không gian là x=3, y=5 ( nh r ngạ ể ữ ủ ạ ộ ạ ộ ớ ằ
th t c a to đ b đ o ng c ) . S t ng ng này làm đ n gi n nhi u hàm trongứ ự ủ ạ ộ ị ả ượ ự ươ ứ ơ ả ề
toolbox . M t vài hàm ban đ u làm vi c v i to đ không gian h n là to đ pixelộ ầ ệ ớ ạ ộ ơ ạ ộ
nh ng khi ta đang s d ng to đ không gian theo m c đ nh , ta có th ch ra v tríư ử ụ ạ ộ ặ ị ể ỉ ị
trong to đ pixel ạ ộ
- Trong m t s tình hu ng , tuy nhiên , ta có th mu n s d ng to đ không gianộ ố ố ể ố ử ụ ạ ộ
không chính quy ( không m c đ nh ) . Ch ng h n , ta có th ch ra góc trên trái c a m tặ ị ẳ ạ ể ỉ ủ ộ
nh t i đi m (19.0,7.5 ) thay cho (0.5,0,5 ) . N u ta g i m t hàm mà tr v to đ choả ạ ể ế ọ ộ ả ề ạ ộ
nh này , to đ đ c tr l i s là giá tr trong h to đ không chính quy .ả ạ ộ ượ ả ạ ẽ ị ệ ạ ộ
- Đ thành l p to đ không chính quy , ta có th ch ra Xdata và Ydata c a m t nhể ậ ạ ộ ể ỉ ủ ộ ả
khi hi n th nó . Nh ng thu c tính này là véc t 2 ph n t đ đi u khi n kho ng c aể ị ữ ộ ơ ầ ử ể ề ể ả ủ
14
góc quay c a m t nh . Theo m c đ nh , m t nh A , Xdata là [1 size(A,2)] , và Ydataủ ộ ả ặ ị ộ ả
là [1 size(A,1)] . Ch ng h n , n u A là 100 hàng x 200 c t , giá tr Xdata m c đ nh là [1ẳ ạ ế ộ ị ặ ị
200] và Ydata là [1 100] . Nh ng giá tr trong nh ng véc t này th c là to đ c aữ ị ữ ơ ự ạ ộ ủ
đi m gi a c a pixel đ u tiên và cu i cùng vì v y , kho ng to đ th c đ c quay làể ữ ủ ầ ố ậ ả ạ ộ ự ượ
l n h n , ch ng h n , n u Xdata là [ 1 200] thì kho ng c a x là [0.5 200.5] . Nh ngớ ơ ẳ ạ ế ả ủ ữ
l nh sau hi n th m t nh s d ng các giá tr không m c đ nh Xdata và Ydata :ệ ể ị ộ ả ử ụ ị ặ ị
A = magic(5);
x = [19.5 23.5];
y = [8.0 12.0];
image(A,'XData',x,'YData',y), axis image, colormap(jet(25))
i - Hi n th nhể ị ả

1. Dùng hàm imview
- Đ hi n th m t nh s d ng hàm imview , dùng hàm imview , ch rõ nh mà ta mu nể ể ị ộ ả ử ụ ỉ ả ố
hi n th . Ta có th s d ng imview đ hi n th m t nh mà đã đ c nh p vào trongể ị ể ử ụ ể ể ị ộ ả ượ ậ
không gian làm vi c c a Matlab ệ ủ
moonfig = imread('moon.tif');
imview(moonfig);
Ta cũng có th ch đ nh tên c a file nh nh trong ví d sau :ể ỉ ị ủ ả ư ụ
imview('moon.tif');
- File nh ph i có m t trong th m c hi n t i ho c trong đ ng d n c a Matlab . C uả ả ặ ư ụ ệ ạ ặ ườ ẫ ủ ấ
trúc này có th h u ích cho vi c quét qua nhi u nh . Tuy nhiên , l u ý , khi s d ngể ữ ệ ề ả ư ử ụ
c u trúc này , d li u nh không đ c l u trong không gian làm vi c c a Matlab . ấ ữ ệ ả ượ ư ệ ủ
- N u ta g i hàm imview mà không ch ra m t kì tham s nào , nó s hi n th m t h pế ọ ỉ ấ ố ẽ ể ị ộ ộ
ch n file cho phép ta ch ra tên file mu n hi n th .ọ ỉ ố ể ị
Xem nhi u nh ề ả
- N u ta ch ra m t file mà ch a nhi u nh , hàm imview ch hi n th nh đ u tiênế ỉ ộ ứ ề ả ỉ ể ị ả ầ
trong file đó . Đ xem t t c các nh trong file , s d ng hàm imread đ nh p m i nhể ấ ả ả ử ụ ể ậ ỗ ả
vào trong không gian làm vi c c a Matlab sau đó g i hàm imview nhi u l n đ hi nệ ủ ọ ề ầ ể ể
th m i nh riêng bi tị ỗ ả ệ
2. Dùng hàm imshow
- Đ xem nh , ta có th s d ng hàm imshow thay cho imview . Ta s d ng imshowể ả ể ử ụ ử ụ
đ hi n th m t nh đã đ c nh p vào trong không gian làm vi c nh ví d sau :ể ể ị ộ ả ượ ậ ệ ư ụ
15
moon = imread('moon.tif');
imshow(moon);
Ta cũng có th ch ra tên c a file nh nh m t tham s truy n vào cho hàm nh ví dể ỉ ủ ả ư ộ ố ề ư ụ
sau :
imshow('moon.tif');
Khi s d ng c u trúc này thì d li u nh không đ c nh p vào trong không gian làmử ụ ấ ữ ệ ả ượ ậ
vi c . Tuy nhiên ,ta có th mang nh vào trong không gian làm vi c b ng cách s d ngệ ể ả ệ ằ ử ụ
hàm getimage . Hàm này s nh n d li u nh t handle c a m t đ i t ng nh hi nẽ ậ ữ ệ ả ừ ủ ộ ố ượ ả ệ

t i . Ch ng h n :ạ ẳ ạ
moon = getimage;
S gán d li u nh t moon.tif vào bi n moon . ẽ ữ ệ ả ừ ế
II . Xử lý trên cơ sở vùng chọn ( Region – Based Processing )
- Trong ph n này , ta s xem xét nh ng khía c nh sau :ầ ẽ ữ ạ
+ B ng thu ng : Cung c p các thu t ng đ c s d ng trong các phép x lýả ậ ữ ấ ậ ữ ượ ử ụ ử
+ Ch đ nh rõ m t vùng ta quan tâm : Mô t làm sao đ ch ra m t vùng quan tâm sỉ ị ộ ả ể ỉ ộ ử
d ng hàm ụ roipoly
+ L c m t vùng : Di n t làm sao đ áp đ t m t phép l c lên m g vùng nh t đ nh c aọ ộ ễ ả ể ặ ộ ọ ộ ấ ị ủ
nh s d ng hàm ả ử ụ roifilt2
+ Tô đ y m t vùng : S d ng hàm roifill đ tô đ y m t vùng đã ch n ầ ộ ử ụ ể ầ ộ ọ
1. B ng các thu t ng :ả ậ ữ
Tên thu t ngậ ữ Di n tễ ả
Binary mask nh nh phân v i cùng kích th c nhẢ ị ớ ướ ư
nh ta mu n x lý . M t n ch a giá tr 1ả ố ử ặ ạ ứ ị
cho t t c các pixel thu c trong vùng taấ ả ộ
quan tâm và ch a giá tr 0 cho các vùngứ ị
khác
Filling a region Là quá trình x lý đi n đ y ( hay tô màu )ử ề ầ
m t vùng nh t đ nh b ng cách n i suy giáộ ấ ị ằ ộ
tr pixel t vi n c a vùng . Quá trình x lýị ừ ề ủ ử
16
này có th đ c s d ng đ t o m t đ iể ượ ử ụ ể ạ ộ ố
t ng trong m t nh d ng nh bi nượ ộ ả ườ ư ế
m t khi chúng đ c thay th v i giá trấ ượ ế ớ ị
đ c tr n v i vùng n n ượ ộ ớ ề
Filtering a region Áp đ t m t phép l c lên m t vùng nh tặ ộ ọ ộ ấ
đ nh . Ch ng h n , ta có th áp đ t m t sị ẳ ạ ể ặ ộ ự
phép l c đi u ch nh c ng đ lên m tọ ề ỉ ườ ộ ộ
vùng c a nhủ ả

N i suyộ Ph ng pháp đ c s d ng đ cươ ượ ử ụ ể ướ
l ng m t giá tr nh m t v trí nh tượ ộ ị ả ở ộ ị ấ
đ nh gi a các pixel c a nhị ữ ủ ả
Masked filtering Thao tác ch áp đ t m t phép l c lên m tỉ ặ ộ ọ ộ
vùng quan tâm trong m t nh đ c phânộ ả ượ
bi t b ng m t n nh phân . Giá tr đ cệ ằ ặ ạ ị ị ượ
l c đ c tr l i cho các pixel mà m t nọ ượ ả ạ ặ ạ
nh phân ch a giá tr 1 , giá tr không đ cị ứ ị ị ượ
l c đ c tr v cho các pixel mà m t nọ ượ ả ề ặ ạ
nh phân ch a giá tr 0ị ứ ị
2. Ch đ nh m t vùng quan tâm trên nh ỉ ị ộ ả
- M t vùng quan tâm là m t ph n c a nh mà ta mu n l c ho c thi hành các thao tácộ ộ ầ ủ ả ố ọ ặ
khác trên nó . Ta đ nh nghĩa m t vùng quan tâm b ng cách t o ra m t m t n nh phân ,ị ộ ằ ạ ộ ặ ạ ị
đó là m t nh nh phân có cùng kích th c v i nh ta mu n x lý . M t n ch a giá trộ ả ị ướ ớ ả ố ử ặ ạ ứ ị
1 cho t t c các pixel n m trong vùng quan tâm và ch a giá tr 0 cho các pixel nh ngấ ả ằ ứ ị ở ữ
vùng khác .
a - Ch n m t hình đa giácọ ộ
- Ta có th s d ng hàm ể ử ụ roipoly đ ch ra m t vùng hình đa giác quan tâm . N u ta g iể ỉ ộ ế ọ
hàm roipoly không có tham s , con tr thay đ i thành hình ch th p khi nó đi qua nhố ỏ ổ ữ ậ ả
đang đ c hi n th trên tr c hi n t i . Sau đó , ta có th ch ra đ nh c a đa giác b ngượ ể ị ụ ệ ạ ể ỉ ỉ ủ ằ
cách kích tr chu t trên nh . Khi th c hi n xong vi c ch n các đ nh , nh n phím Enterỏ ộ ả ự ệ ệ ọ ỉ ấ
đ k t thúc . hàm roipoly tr v m t nh nh phân có cùng kích th c v i nh g cể ế ả ề ộ ả ị ứơ ớ ả ố
ch a giá tr 1 trong vùng đ c ch n và 0 ph n còn l i .ứ ị ượ ọ ở ầ ạ
17
I = imread('pout.tif');
imshow(I)
BW = roipoly;
- Ta cũng có th s d ng hàm roipoly mà không t ng tác . Cú pháp c a hàm này nhể ử ụ ươ ủ ư
sau :
BW = roipoly(I,c,r)

BW = roipoly(I)
BW = roipoly(x,y,I,xi,yi)
[BW,xi,yi] = roipoly(...)
[x,y,BW,xi,yi] = roipoly(...)
Di n gi iễ ả
+ BW=roipoly(I,c,r) tr l i m t vùng quan tâm đ c l a ch n b i hình đa giác đ cả ạ ộ ượ ự ọ ở ượ
mô t b i véc t c và r . BW là m t nh nh phân có cùng kích th c v i nh ban đ u .ả ở ơ ộ ả ị ướ ớ ả ầ
+ BW=roipoly(I) : Hi n th nh I trên màn hình và đ ta ch ra vùng ch n v i trể ị ả ể ỉ ọ ớ ỏ
chu t . N u b qua I , roipoly ho t đ ng trên nh tr c hi n t i . S d ng click chu tộ ế ỏ ạ ộ ả ở ụ ệ ạ ử ụ ộ
đ thêm các đ nh t i đa giác . B ng cách nh n Backspace ho c Delete đ xoá các đ nhể ỉ ớ ằ ấ ặ ể ỉ
đã ch n tr c đó . Khi ch n xong , nh n Enter đ k t thúc vi c ch n ọ ướ ọ ấ ể ế ệ ọ
+BW=roipoly(x,y,I,xi,yi) : S d ng véc t x và y đ t o l p h to đ không gianử ụ ơ ể ạ ậ ệ ạ ộ
không m c đ nh . xi ,yi là véc t có cùng chi u dài ch ra các đ nh c a đa giác nh cácặ ị ơ ề ỉ ỉ ủ ư
v trí trong h to đ này .ị ệ ạ ộ
+ [BW , xi,yi] = roipoly(…) tr l i to đ c a đa giác trong xi , yi . Chú ý r ng roipolyả ạ ạ ộ ủ ằ
luôn luôn t o ra m t đa giác kín . ạ ộ
+ [x,y,BW,xi,yi]=roipoly(…) tr l i XData và Ydata trong x và y , m t n nh trongả ạ ặ ạ ả
BW và đ nh c a đa giác trong xi và yi ỉ ủ
- N u roipoly đ c g i không có tham s ra , nh k t qu s đ c hi n th trên m tế ượ ọ ố ả ế ả ẽ ượ ể ị ộ
hình m i .ớ
L p tr giúpớ ợ
- nh đ u vào I có th thu c l p uint8 , uint16 ho c double . Ả ầ ể ộ ớ ặ nh ra BW thu c l pẢ ộ ớ
logical . T t c các đ u vào và ra khác thu c l p double ấ ả ầ ộ ớ
Ví d ụ
I = imread('eight.tif');
c = [222 272 300 270 221 194];
18
r = [21 21 75 121 121 75];
BW = roipoly(I,c,r);
imshow(I)

figure, imshow(BW)
b – Các ph ng pháp l a ch n khácươ ự ọ
- Hàm roipoly cung c p m t cách d dàng đ t o m t m t n nh phân . Tuy nhiên , taấ ộ ễ ể ạ ộ ặ ạ ị
có th s d ng b t c nh nh phân nào làm m t n mi n là nh đó có cùng kíchể ử ụ ấ ứ ả ị ặ ạ ễ ả
th c v i nh đang đ c l c . Ch ng h n , gi s ta mu n l c nh c ng đ I , chướ ớ ả ượ ọ ẳ ạ ả ử ố ọ ả ườ ộ ỉ
l c nh ng pixel mà giá tr c a nó l n h n 0.5 . Ta có th t o m t m t n t ng ngọ ữ ị ủ ớ ơ ể ạ ộ ặ ạ ươ ứ
v i l nh :ớ ệ
BW = (I > 0.5);
- Ta cũng có th s d ng hàm poly2mask đ t o m t m t n nh phân . Không gi ngể ử ụ ể ạ ộ ặ ạ ị ố
hàm roipoly , poly2mask không yêu c u m t nh vào . Ngoài ra , ta còn có th s d ngầ ộ ả ể ử ụ
hàm roicolor đ đ nh nghĩa m t vùng quan tâm trên c s m t màu ho c m t vùngể ị ộ ơ ở ộ ặ ộ
c ng đ nào đó . Cú pháp c a hàm này nh sau :ườ ộ ủ ư
BW = roicolor(A,low,high)
BW = roicolor(A,v)
Di n gi i ễ ả
- Hàm roicolor l a ch n m t vùng quan tâm trong m t nh ch s ho c nh c ng đự ọ ộ ộ ả ỉ ố ặ ả ườ ộ
và tr v m t nh nh phân ả ề ộ ả ị
+ BW=roicolor(A,low,high) : tr v m t vùng quan tâm đ c l a ch n v i nh ng pixelả ề ộ ượ ự ọ ớ ữ
n m trong kho ng gi a low và high trong b n đ màu s c ằ ả ữ ả ồ ắ
BW = (A >= low) & (A <= high)
BW là m t nh nh phân ộ ả ị
+BW = roicolor(A,v): Tr v m t vùng quan tâm đ c l a ch n v i nh ng pixel trongả ề ộ ượ ự ọ ớ ữ
A mà h p v i các giá tr trong véc t v . BW là m t nh nh phân .ợ ớ ị ơ ộ ả ị
L p tr giúpớ ợ
- nh vào A ph i thu c l p numeric . nh ra BW thu c l p logical Ả ả ộ ớ Ả ộ ớ
Ví d ụ
I = imread('rice.png');
BW = roicolor(I,128,255);
imshow(I);
19

figure, imshow(BW)
2. L c m t vùngọ ộ
- Ta có th s d ng hàm roifilt2 đ x lý m t vùng quan tâm . Khi ta g i hàm roifilt2 ,ể ử ụ ể ử ộ ọ
ta ch ra m t nh c ng đ , m t m t n nh phân và m t b l c . Hàm roifilt2 l c nhỉ ộ ả ườ ộ ộ ặ ạ ị ộ ộ ọ ọ ả
vào và tr v m t nh mà ch a các giá tr đã đ c l c cho các pixel mà m t n nhả ề ộ ả ứ ị ượ ọ ặ ạ ị
phân ch a 1 và các giá tr cho các pixel mà m t n nh phân ch a 0 . Ki u l c này đ cứ ị ặ ạ ị ứ ể ọ ượ
g i là l c có m t n . Cú pháp c a hàm roifilt2 nh sau :ọ ọ ặ ạ ủ ư
J = roifilt2(h,I,BW)
J = roifilt2(I,BW,fun)
J = roifilt2(I,BW,fun,P1,P2,...)
Di n gi i ễ ả
+ J=roifilt2(h,I,BW ) : L c d li u trong I v i b l c tuy n tính hai chi u h . BW làọ ữ ệ ớ ộ ọ ế ề
m t nh nh phân có cùng kích th c v i nh g c và đ c s d ng nh m t m t nộ ả ị ướ ớ ả ố ượ ử ụ ư ộ ặ ạ
cho vi c l c . Hàm roifilt2 tr v m t nh ch a các giá tr đ c l c trong vùng ch nệ ọ ả ề ộ ả ứ ị ượ ọ ở ọ
( hay các pixel mà BW có giá tr 1 ) ị
+ J=roifilt2(I,BW,fun) : X lý d li u trong I s d ng hàm fun . K t qu , J ch a cácử ữ ệ ử ụ ế ả ứ
giá tr đã đ c tính toán cho các pixel mà t i đó BW ch a 1 và giá tr th c trong I choị ượ ạ ứ ị ự
các pixel mà t i đó BW ch a giá tr 0 .ạ ứ ị
+ J=roifilt2(I,BW,fun,P1,P2…) Truy n thêm các tham s P1,P2 cho hàm funề ố
L p tr giúpớ ợ
- V i c u trúc mà có ch a b l c h , nh vào I có th thu c l p uint ,uint16 ho cớ ấ ứ ộ ọ ả ể ộ ơ ặ
double và nh ra J có cùng l p v i nh vào . ả ớ ớ ả
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)

Đ hi u rõ h n v áp d ng b l c cho m t vùng , ta hãy xem xét c th m t ví dể ể ơ ề ụ ộ ọ ộ ụ ể ộ ụ
sau :
20
1. Đ c m t nh :ọ ộ ả
I = imread('pout.tif');
2. T o m t n : S d ng chu t đ t o vùng ch n và l y m t n tr v qua BWạ ặ ạ ử ụ ộ ể ạ ọ ấ ặ ạ ả ề
3. T o b l c ạ ộ ọ
h = fspecial('unsharp');
4. G i hàm roifilt2 , ch ra nh c n l c , m t n và b l c ọ ỉ ả ầ ọ ặ ạ ộ ọ
I2 = roifilt2(h,I,BW);
imshow(I)
figure, imshow(I2)
Ch đ nh thao tác l cỉ ị ọ
- Hàm roifilt2 cũng cho phép ta ch đ nh m t hàm riêng đ tao tác trên vùng quan tâm .ỉ ị ộ ể
Ví d sau s d ng hàm imadjust đ làm sáng m t ph n c a nhụ ử ụ ể ộ ầ ủ ả
1. Đ c m t nh ọ ộ ả
I = imread('cameraman.tif');
2. T o m t n : Trong ví d này , m t n là m t nh nh phân ch a ch . nh m t nạ ặ ạ ụ ặ ạ ộ ả ị ứ ữ Ả ặ ạ
ph i đ c c t đ có cùng kích th c v i nh đ c l c ả ượ ắ ể ướ ớ ả ượ ọ
BW = imread('text.png');
mask = BW(1:256,1:256);
3. T o b l cạ ộ ọ
f = inline('imadjust(x,[],[],0.3)');
4. G i hàm roifilt2 , ch ra nh đ c l c , m t n và b l c . nh k t qu I2 có chọ ỉ ả ượ ọ ặ ạ ộ ọ Ả ế ả ữ
nh b kh c trên nó ư ị ắ
I2 = roifilt2(I,mask,f);
imshow(I2)
3. Đi n đ y m t vùngề ầ ộ
- Ta có th s d ng hàm roifill đ đi n đ y m t vùng quan tâm , tuy n tính hóa t biênể ử ụ ể ề ầ ộ ế ừ
c a vùng . Hàm này s h u ích cho vi c ch nh s a nh , bao g m xoá các chi ti t ngoàiủ ẽ ữ ệ ỉ ử ả ồ ế

ho c gi t oặ ả ạ
- Hàm roifill th c thi vi c đi n đ y s d ng m t ph ng pháp tuy n tính hoá trên cự ệ ề ầ ử ụ ộ ươ ế ơ
s c a ph ng trình Laplace . Ph ng pháp này d n đ n vùng đ c đi n m t nh tở ủ ươ ươ ẫ ế ượ ề ượ ấ
có th .ể
21
- V i roifill , ta l a ch n m t vùng quan tâm b ng tr chu t . Khi l a ch n xong , hàmớ ự ọ ộ ằ ỏ ộ ự ọ
roifill tr l i m t nh v i vùng đ c ch n đã b đi n đ y ả ạ ộ ả ớ ượ ọ ị ề ầ
- Ví d sau s d ng hàm roifill đ s a nh . Đ ng vi n c a vùng đ c ch n đ cụ ử ụ ể ử ả ườ ề ủ ượ ọ ượ
hi n th là màu đ trên nh g c ể ị ỏ ả ố
load trees
I = ind2gray(X,map);
imshow(I)
I2 = roifill;
imshow(I2)
Cú pháp c a hàm roifillủ
J = roifill(I,c,r)
J = roifill(I)
J = roifill(I,BW)
[J,BW] = roifill(...)
J = roifill(x,y,I,xi,yi)
[x,y,J,BW,xi,yi] = roifill(...)
Di n gi iễ ả
- Hàm roifill đi n đ y trong m t vùng đa giác trong m t nh c ng đ . Nó tuy n tínhề ầ ộ ộ ả ườ ộ ế
m t cách m t mà các giá tr pixel t phía vi n c a đa giác vào phía trong đa giác b ngộ ượ ị ừ ề ủ ằ
cách gi i ph ng trình Laplace . Hàm roifill có th đ c s d ng , ch ng h n đ xoáả ươ ể ượ ử ụ ẳ ạ ể
m t đ i t ng nh trong m t nh ộ ố ượ ỏ ộ ả
+ J=roifill(I,c,r) : Đi n đ y m t đa giác đ c ch ra b i các véc t có cùng chi u dài cề ầ ộ ượ ỉ ở ơ ề
và r . Chúng ch a to đ hàng - c t c a các pixel trên các đ nh c a đa giác . ứ ạ ộ ộ ủ ỉ ủ
+ J=roifill(I) : Hi n th nh I trên màn hình và đ ta l a ch n vùng đa giác b ng trể ị ả ể ự ọ ằ ỏ
chu t . N u b qua I , hàm thao tác trên nh đang ch n . S d ng phím Backspaceộ ế ỏ ả ọ ử ụ

ho c Delete đ xoá các đ nh tr c đó đã ch n . Khi ch n xong , dùng phím Enter đặ ể ỉ ướ ọ ọ ể
k t thúc ch n ế ọ
+ J=roifill(I,BW) : S d ng BW ( m t nh nh phân cùng kích th c v i I ) nh m tử ụ ộ ả ị ướ ớ ư ộ
m t n . Hàm roifill s đi n đ y vùng trong I t ng ng v i các pixel khác 0 trong BWặ ạ ẽ ề ầ ươ ứ ớ
. N u có nhi u vùng , roifill thi hành tuy n tính hoá trên m i vùng đ c l p ế ề ế ỗ ộ ậ
22
+[J , BW ]=roifill(…) : tr v m t n nh phân đ c s d ng đ tính toán pixel nào Iả ề ặ ạ ị ượ ử ụ ể
s đi n đ y . BW là m t nh nh phân có cùng kích th c v i I ẽ ề ầ ộ ả ị ướ ớ
+ J=roifill(x,y,I,xi,yi) : S d ng véc t x và y đ thành l p m t h to đ không gianử ụ ơ ể ậ ộ ệ ạ ộ
không m c đ nh . xi , yi có cùng đ dài ch ra đ nh c a đa giác ặ ị ộ ỉ ỉ ủ
+ [x,y,J,BW,xi,yi]=roifill(…) : tr l i Xdata và Ydata trong x và y , nh ra J , m t nả ạ ả ặ ạ
nh BW và đ nh đa giác trong hai véc t xi , yi .ả ỉ ơ
L p tr giúpớ ợ
- nh vào I – uint8 , uint16 ho c double . BW có th là b t c ki u s ho c 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);
imshow(I)
figure, imshow(J)
III – Xử lý ảnh mờ
1. B ng thu t ngả ậ ữ
Tên thu t ngậ ữ Di n gi iễ ả
deconvolution X lý ng c l i v i hi u ng xoáy , cu nử ượ ạ ớ ệ ứ ố
Distortion operator Toán t mô t m t quá trình nh nh nử ả ộ ả ậ
đ c khác v i nh ban đ u . Distortionượ ớ ả ầ
đ c gây ra b i m t hàm PSF ch là m tượ ở ộ ỉ ộ
trong nh ng ki u distortionữ ể
Optical transfer function(OTF) Trong vùng t n s , OTF mô t đáp ngầ ố ả ứ

c a m t h th ng tuy n tính , v trí khôngủ ộ ệ ố ế ị
bi n đ i v i m t xung vào . ế ổ ớ ộ OTF là m tộ
bi n đ i Fourier c a hàm PSFế ổ ủ
Point spread function ( PSF) Trong mi n không gian , PSF di n t c pề ễ ả ấ
b c mà m t h th ng quang h c làm mậ ộ ệ ố ọ ờ
m t đi m sáng . ộ ể PSF là bi n đ i Fourierế ổ
ng c c a OTFượ ủ
23
2. Th nào là làm m ?ế ờ
a - Nguyên nhân c a s m ủ ự ờ
- S làm m hay s phai nh t c a m t nh có th gây ra b i nhi u tác nhân :ự ờ ự ạ ủ ộ ả ể ở ề
+ Chuy n đ ng trong khi capture nh - b i camera ho c khi th i gian l sáng nhi uể ộ ả ở ặ ờ ộ ề
đ c s d ng - b i v tượ ử ụ ở ậ
+ Ngoài vùng tiêu c c a ng kính , s d ng m t ng kính có góc m r ng , s h nự ủ ố ử ụ ộ ố ở ộ ự ỗ
lo n c a môi tr ng , th i gian l sáng ng n … s làm gi m s l ng phôtôn đ cạ ủ ườ ờ ộ ắ ẽ ả ố ượ ượ
b t gi (captured) ắ ữ
b - Các ch đ ch ng m nhế ộ ố ờ ả
- M t nh b m hay b phai nh t có th đ c mô t v n t t b i ph ng trình g=Hf+nộ ả ị ờ ị ạ ể ượ ả ắ ắ ở ươ
trong đó
+ g : nh b m Ả ị ờ
+ H : Tác nhân làm méo cũng đ c g i là PSF .ượ ọ
+ f : nh g c Ả ố
+ n : Nhi u ph , đ c t o ra trong quá trình nh n nh , nó làm h ng nh ễ ụ ượ ạ ậ ả ỏ ả
Chú ý : nh f th c t không t n t i . nh này đ i di n cho b c nh mà ta có n u tìnhẢ ự ế ồ ạ Ả ạ ệ ứ ả ế
tr ng thu nh n nh là hoàn h o ạ ậ ả ả
T m quan tr ng c a PSFầ ọ ủ
- D a trên ch đ này , tác v chính c a vi c ch ng làm m là ự ế ộ ụ ủ ệ ố ờ Deconvolve nh b mả ị ờ
v i PSF . Đ minh ho , ví d này s l y 3 nh không b m và c ý làm m chúngớ ể ạ ụ ẽ ấ ả ị ờ ố ờ
b ng cách ằ convolve nó v i PSF . Ví d s d ng hàm fspecial đ t o m t PSF môớ ụ ử ụ ể ạ ộ
ph ng m t chuy n đ ng m , ch ra chi u dài c a m tính b ng pixel ( LEN=31 ) vàỏ ộ ể ộ ờ ỉ ề ủ ờ ằ

góc m tính theo đ ( THETA=11) . M t khi PSF đ c t o , ví d s d ng hàmờ ộ ộ ượ ạ ụ ử ụ
imfilter đ ể convolve PSF v i nh g c I đ t o nh b làm 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');
24
figure; imshow(Blurred); title('Blurred Image');
3. S d ng các hàm khôi ph c nh m ử ụ ụ ả ờ
- Toolbox x lý nh c a Matlab g m có 4 hàm khôi ph c nh m bao g m :ử ả ủ ồ ụ ả ờ ồ
+deconvwnr : S d ng b l c Wienerủ ụ ộ ọ
+ deconvreg : S d ng b l c đ c quy t c hoá ử ụ ộ ọ ượ ắ
+ deconvlucy : S d ng gi i thu t Lucy-Richardsonử ụ ả ậ
+ đeconvblind : S d ng gi i thu t ử ụ ả ậ blind deconvolution
- T t c nh ng hàm này ch p nh n m t PSF và m t nh b m nh là các tham sấ ả ữ ấ ậ ộ ộ ả ị ờ ư ố
chính c a nó .V i hai hàm đ u tiên , ta cung c p m t s thông tin v nhi u đ gi m sủ ớ ầ ấ ộ ố ề ễ ể ả ự
khu ch đ i nhi u đ n m c có th trong quá trình khôi ph c .ế ạ ễ ế ứ ể ụ
- Hàm deconvlucy thi hành m t cách nhanh chóng gi i thu t Lucy-Richardson . Hàmộ ả ậ
này th c hi n nhi u vòng l p , s d ng kĩ thu t t i u và th ng kê Poisson . V i hàmự ệ ề ặ ử ụ ậ ố ư ố ớ
này , ta không c n ph i cung c p thông tin v nhi u ph trong nh b “b n”ầ ả ấ ề ễ ụ ả ị ẩ
- Hàm deconvblind thi hành gi i thu t blind deconvolution mà không c n nh n ra PSF .ả ậ ầ ậ
Khi ta g i hàm deconvblind , ta truy n m t tham s nh là gía tr đoán bi t ban đ u ọ ề ộ ố ư ị ế ầ ở
PSF . Hàm deconvblind tr l i m t PSF đã đ c khôi ph c đ khôi ph c nh . S thiả ạ ộ ượ ụ ể ụ ả ự
hành s d ng cùng ch đ suy gi m và l p nh hàm deconvlucy .ử ụ ế ộ ả ặ ư
Chú ý : Ta có th c n ph i thi hành nhi u quá trình kh m l p đi l p l i , m i l nể ầ ả ề ử ờ ặ ặ ạ ỗ ầ
thay đ i tham s truy n vào hàm kh m cho t i khi thu đ c m t nh g n x p x v iổ ố ề ử ờ ớ ượ ộ ả ầ ấ ỉ ớ
nh g c .ả ố

- Đ tránh b rung đ ng trong nh đ c kh nhi u , ta có th s d ng hàm edgetaperể ị ộ ả ượ ử ễ ể ử ụ
đ ti n x lý nh tr c khi truy n nó cho hàm kh m .ể ề ử ả ướ ề ử ờ
a - Kh m v i b l c Wienerử ờ ớ ộ ọ
- S d ng hàm deconvwnr đ kh m m t nh s d ng b l c Wiener . B l c này cóử ụ ể ử ờ ộ ả ử ụ ộ ọ ộ ọ
th đ c s d ng r t hi u qu khi đ c tính t n s c a nh và nhi u ph là đã bi t ítể ượ ử ụ ấ ệ ả ặ ầ ố ủ ả ễ ụ ế
nh t là vài b c . Trong tr ng h p không có nhi u , b l c Wiener gi m t i b l cấ ậ ườ ợ ễ ộ ọ ả ớ ộ ọ
đ o lý t ng .ả ưở
- Ví d sau kh nhi u trong m t nh b m đ c t o tr c đây , ch ra cùng m t hàmụ ử ễ ộ ả ị ờ ượ ạ ướ ỉ ộ
PSF đ c s d ng đ t o m . Ví d này cũng minh ho t m quan tr ng c a vi c bi tượ ử ụ ể ạ ờ ụ ạ ầ ọ ủ ệ ế
v PSF – hàm gây ra m . Khi chúng ta bi t chính xác v PSF , k t qu c a vi c khề ờ ế ề ế ả ủ ệ ử
m có th khá hi u qu .ờ ể ệ ả
25

×