Các kiểu ảnh , các thao tác ảnh cơ bản trong Toolbox
Trang 16 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ạ ệ ở
Trang 2s 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ữ ộ ặ ẳ ạ ị ủ ị ạ ồ ạ ư ữ ả
Trang 3RGB 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ủ ạ ộ ả ỗ ặ ẳ ủ ể
Trang 45 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 ự ạ ộ ạ ế ả
Trang 5l 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ộ ắ ằ ặ
Trang 6di 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 ử ở ạ ầ
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à
Trang 7for 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 ử ụ ớ ộ ố ị ạ ồ ạ ể ỉ ố ụ
Trang 8- 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 :ị ạ
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 ấ ộ ồ ạ
Trang 9- 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 ạ
- Đ đ 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 theochu n chung nào ẩ
Trang 102 Đ 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 đó
Trang 113 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ôngtin DICOM ( IOD ) mà ta đang t o dicomwrite tr giúp 3 ki u DICOM IOD :ạ ợ ể
Trang 12hi 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
Trang 13Ch 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ề ế ự ắ ỏ ể ả ể ượ ngthô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ấ ả ố ọ
- 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ừ ả ệ ạ ộ ị
Trang 14- 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
Trang 15gó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à
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ế ỉ ộ ứ ề ả ỉ ể ị ả ầ
Trang 16Khi 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ỉ ị ộ ả ể ỉ ộ ử
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ýị ừ ề ủ ử
Trang 17nà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 ọ ộ
Trang 18+ 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 ớ
Trang 19thướ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) : 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 ợ ớ ị ơ ộ ả ị
Trang 20figure, 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
+ 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ề ố
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 :
Trang 212 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
Trang 22- 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
- 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 ế ề ế ỗ ộ ậ
Trang 23+[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
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ủ ộ ệ ố ế ị
Trang 242 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ể ộ ả ở ặ ờ ộ ề
+ 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');
Trang 25figure; 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ợ ễ ộ ọ ả ớ ộ ọ
Trang 261 Đ c m t nh vào không gian làm vi c ( đ tăng t c quá trình kh m , ví d nàyọ ộ ả ệ ể ố ử ờ ụcũng c t nh ) ắ ả
Trang 27wnr1 = deconvwnr(Blurred,PSF);
figure;imshow(wnr1);
title('Restored, True PSF');
Tinh ch k t qu ế ế ả
- Ta có th tác đ ng lên k t qu b ng cách cung c p các giá tr cho các tham s tuỳể ộ ế ả ằ ấ ị ố
ch n đọ ược tr giúp b i hàm deconvwnr ợ ở
b - Kh m v i b l c đ ử ờ ớ ộ ọ ượ c quy t c hoá ắ
- S d ng hàm deconvreg đ kh m m t nh s d ng b l c đử ụ ể ử ờ ộ ả ử ụ ộ ọ ược quy t c hoá M tắ ộ
b l c ki u này có th độ ọ ể ể ượ ử ục s d ng hi u qu khi thông tin v nhi u ph đệ ả ề ễ ụ ược bi tế
m t cách h n ch ộ ạ ế
- Đ minh ho , ví d này mô ph ng vi c làm m m t nh s d ng m t hàm PSF l cể ạ ụ ỏ ệ ờ ộ ả ử ụ ộ ọ Gaussian v i m t nh ( s d ng imfilter ) Nhi u ph trong nh đớ ộ ả ử ụ ễ ụ ả ược mô ph ng b ngỏ ằ cách thêm vào m t nhi u Gaussian c a bi n V vào nh b m ( s d ng hàm imnoise ) ộ ễ ủ ế ả ị ờ ử ụ
1 Đ c m t nh vào trong không gian làm vi c Ví d này s c t nh đ gi m kíchọ ộ ả ệ ụ ẽ ắ ả ể ả
thướ ủ ảc c a nh
I = imread('tissue.png');
Trang 29C - Kh m v i gi i thu t Lucy- Richardson ử ờ ớ ả ậ
- S d ng hàm deconvlucy đ kh m m t nh b ng cách s d ng gi i thu t Lucy-ử ụ ể ử ờ ộ ả ằ ử ụ ả ậRichardson Hàm này có th để ược s d ng hi u qu khi bi t đử ụ ệ ả ế ược hàm PSF nh ngư
bi t ít v nhi u tác đ ng ph lên nh ế ề ễ ộ ụ ả
- Hàm deconvlucy thi hành vài s đi u h p t i gi i thu t Lucy-Richardson S d ngự ề ợ ớ ả ậ ử ụ
nh ng đi u h p này ta có th :ữ ề ợ ể
+ Gi m tác đ ng c a s m r ng nhi u trên m t nh khôi ph c ả ộ ủ ự ở ộ ễ ộ ả ụ
+ Gi i thích đả ược tính không đ ng nh t c a ch t lồ ấ ủ ấ ượng nh ả
+ Đi u khi n camera đ c h t nhi u n n ề ể ọ ế ễ ề
+ C i thi n đ phân gi i c a nh ph c h i b ng cách l y m u phả ệ ộ ả ủ ả ụ ồ ằ ấ ẫ ụ
Gi m tác đ ng c a s m r ng nhi u ả ộ ủ ự ở ộ ễ
- S m r ng nhi u là m t v n đ thự ở ộ ễ ộ ấ ề ường g p c a phặ ủ ương pháp gi ng c c đ iố ự ạ ( maximum likelihood ) c g ng l p đ y d li u g n nh t có th Sau m t s vòngố ắ ấ ầ ữ ệ ầ ấ ể ộ ố
l p , nh đặ ả ược khôi ph c có th có hình l m đ m , đ c bi t v i m t đ i tụ ể ố ố ặ ệ ớ ộ ố ượng ph ngẳ
được quan sát t i t s tín hi u / nhi u nh Nh ng đ m này không đ i di n cho b tạ ỉ ố ệ ễ ỏ ữ ố ạ ệ ấ
Trang 30- Damping cũng đượ ử ục s d ng đ gi m rung ( ringing ) – hình d ng c a c u trúc t nể ả ạ ủ ấ ầ
s cao trong nh khôi ph c Ringing không c n thi t đ n k t qu c a m r ngố ả ụ ầ ế ế ế ả ủ ở ộ nhi u ễ
Tính không đ ng nh t c a ch t l ồ ấ ủ ấ ượ ng nh ả
- B t kì s bi n th nào c a nh khôi ph c th c là do d li u có th ch a nh ng pixelấ ự ế ể ủ ả ụ ự ữ ệ ể ứ ữ
h ng ho c ch t lỏ ặ ấ ượng c a pixel nh n đủ ậ ược bi n đ i theo th i gian và v trí B ngế ổ ờ ị ằ cách ch ra tham s m ng WEIGHT v i hàm deconvlucy , ta có th ch ra r ng nh ngỉ ố ả ớ ể ỉ ằ ữ pixel nào đó trong nh b b qua Đ b qua m t pixel , gán m t tr ng lả ị ỏ ể ỏ ộ ộ ọ ượng 0 t iớ
m t ph n t trong m ng WEIGHT tộ ầ ừ ả ương ng v i pixel trong nh ứ ớ ả
- Gi i thu t h i t trên các giá tr đã đoán bi t đả ậ ộ ụ ị ế ược v i các pixel h ng trên c s c aớ ỏ ơ ở ủ thông tin t các pixel lân c n S bi n đ i trong đáp ng phát hi n t pixel t i pixel cóừ ậ ự ế ổ ứ ệ ừ ớ
th để ược đi u ti t b i m ng WEIGHT Thay cho vi c gán m t giá tr tr ng lề ế ở ả ệ ộ ị ọ ượng 1
t i các pixel t t , ta có th ch ra các giá tr và tr ng lớ ố ể ỉ ị ọ ượng mà các pixel tuỳ thu c vàoộ
lượng các flat-field correction
Đi u khi n camera đ c h t nhi u ề ể ọ ế ễ
- Nhi u trong thi t b CCD có hai thành ph n chính :ễ ế ị ầ
+ Phôton k đ n nhi u v i m t phân b Poissonể ế ễ ớ ộ ố
+ Đ c toàn b nhi u v i phân b Gaussọ ộ ễ ớ ố
- Vòng l p Lucy-Richardson th c ch t nh n ra ki u nhi u đ u tiên Ta ph i nh n raặ ự ấ ậ ể ễ ầ ả ậ
ki u nhi u th hai , n u không nó có th là nguyên nhân các pixel v i các phôton t i ể ễ ứ ế ể ớ ớ ở
m c th p s nh n giá tr âm ứ ấ ẽ ậ ị
- Hàm deconvlucy s d ng tham s vào READOUT đ đi u khi n camera đ c toàn bử ụ ố ể ề ể ọ ộ nhi u Giá tr c a tham s này đi n hình là t ng c a nhi u t ng c ng và nhi u n n ễ ị ủ ố ể ổ ủ ễ ổ ộ ễ ề Giá tr c a tham s READOUT ch ra m t đ l ch đ m b o r ng t t c các giá tr đ uị ủ ố ỉ ộ ộ ệ ả ả ằ ấ ả ị ề
dương
Ví d : S d ng hàm deconvlucy đ kh m m t nh ụ ử ụ ể ử ờ ộ ả
- Đ minh ho , ví d này s d ng hàm deconvlucy , nó mô ph ng m t nh b m vàể ạ ụ ử ụ ỏ ộ ả ị ờnhi u b ng cách convolve m t b l c Gauss v i m t nh ( s d ng hàm imfilter ) vàễ ằ ộ ộ ọ ớ ộ ả ử ụsau đó thêm nhi u Gauss ( s d ng hàm imnoise ) ễ ử ụ
1 Đ c m t nh vào không gian làm vi c ọ ộ ả ệ
I = imread('board.tif');
I = I(50+[1:256],2+[1:256],:);
Trang 32th i , s d ng m t quá trình l p tờ ử ụ ộ ặ ương t nh gi i thu t Lucy-Richardson ự ư ả ậ
- Hàm deconvblind ch gi ng nh hàm deconvlucy , thi hành m t vài s đi u h p t iỉ ố ư ộ ự ề ợ ớ
Trang 33figure; imshow(PSF,[],'notruesize'); title('Original PSF');
Trang 34- Đ quy t đ nh kích thể ế ị ướ ủc c a PSF , ki m tra nh m và đo chi u r ng c a m ( theoể ả ờ ề ộ ủ ờpixel ) xung quanh m t v t có hình d ng nh t đ nh Trong nh m m u , ta có th đoộ ậ ạ ấ ị ả ờ ẫ ể
m g n v i đờ ầ ớ ường vi n tà áo c a ngề ủ ười đàn ông B i vì kích thở ước c a PSF là quanủ
tr ng h n giá tr c a nó , ta có th ch ra m t m ng toàn s 1 nh là PSF ban đ u ọ ơ ị ủ ể ỉ ộ ả ố ư ầ
- Hình sau đây ch ra m t s khôi ph c mà s ph ng đoán ban đ u v kích thỉ ộ ự ụ ự ỏ ầ ề ước c aủ PSF là gi ng v i kích thố ớ ước c a PSF đã gây ra m Trong ng d ng th c , ta có thủ ờ ứ ụ ự ể
c n ch y l i hàm deconvblind , ki m tra PSF v i các kích thầ ạ ạ ể ớ ước khác nhau cho t i khiớ
nh n đậ ược m t k t qu n đ nh PSF độ ế ả ổ ị ược khôi ph c tr l i b i m i l nụ ả ạ ở ỗ ầ deconvolution có th cung c p m t ch d n có giá tr cho kích thể ấ ộ ỉ ẫ ị ướ ố ưc t i u c a PSF ủ
Trang 35+ Tránh vùng tương ph n cao t s x lýả ừ ự ử
+ Ch ra m t giá tr PSF t t h n ỉ ộ ị ố ơ
5 T o m t m ng WEIGHT đ lo i tr vùng tạ ộ ả ể ạ ừ ương ph n cao t thao tác kh m ả ừ ử ờ
Đi u này có th làm gi m rung do tề ể ả ương ph n nh trong k t qu ả ư ế ả
Đ lo i tr m t pixel t s x lý , ta t o m t m ng có cùng kích thể ạ ừ ộ ừ ự ử ạ ộ ả ước v i nh g cớ ả ố
và gán giá tr 0 cho các pixel trong m ng tị ả ương ng v i pixel trong nh g c mà taứ ớ ả ố
mu n lo i b Đ t o m t m ng WEIGHT , ví d s d ng m t s k t h p c a vi cố ạ ỏ ể ạ ộ ả ụ ử ụ ộ ự ế ợ ủ ệ phát hi n c nh và x lý hình thái h c đ phát hi n vùng có đ tệ ạ ử ọ ể ệ ộ ương ph n cao trongả
nh Do m trong nh là tuy n tính , ví d m r ng nh ra 2 l n Đ lo i tr các
pixel thu c vùng biên c a nh ( m t vùng có đ tộ ủ ả ộ ộ ương ph n cao ) t quá trình x lý ,ả ừ ử
ví d này s d ng padarray đ gán giá tr 0 t i t t c các pixel trên biên nh :ụ ử ụ ể ị ớ ấ ả ả
Trang 36P1 = P;
P1(find(P1 < 0.01))=0;
7 Tr l i deconvolution , ch ra m ng WEIGHT và s a giá tr PSF Chú ý , nh ph cả ạ ỉ ả ử ị ả ụ
h i có ít rung xung quanh vùng có cồ ường đ tộ ương ph n l n h n k t qu trả ớ ơ ế ả ước đây :[J2 P2] = deconvblind(Blurred,P1,50,[],WEIGHT);
Trang 37đ ng nh t và lồ ấ ượng t hoá v i bi n đ ngử ớ ế ộ
nh nh t ỏ ấ
Indexed image Ảnh mà các giá tr pixel c a nó đị ủ ược đánh
s tr c ti p trong m t b n đ màu Trongố ự ế ộ ả ồMatlab , m t nh ch s độ ả ỉ ố ược đ i di nạ ệ
b i m t m ng thu c l p uint8 , uint16ở ộ ả ộ ớ
ho c double B n đ màu luôn là m tặ ả ồ ộ
m ng mx3 thu c l p double ả ộ ớ
Intensity image Ảnh bao g m các giá tr cồ ị ường đ Trongộ
Matlab , nh cả ường đ độ ược đ i di n b iạ ệ ở
m t m ng thu c l p uint8 ,uint16 ho cộ ả ộ ớ ặ double Trong khi nh cả ường đ khôngộ
đượ ưc l u tr v i b n đ màu , Matlab sữ ớ ả ồ ử
d ng b n đ màu h th ng đ hi n thụ ả ồ ệ ố ể ể ị chúng
RGB image Ảnh mà trong đó m i pixel đỗ ược ch đ nhỉ ị
rõ 3 màu R,G,B Trong Matlab , m t nhộ ả RGB được đ i di n b i m t ma tr nạ ệ ở ộ ậ mxnx3 thu c l p uint8 , uint16 ho cộ ớ ặ double
Screen bit depth S lố ượng bít trên m t pixel màn hìnhộ
Screen color resolution S lố ượng các màu riêng bi t có th đệ ể ượ c
t o ra b i màn hìnhạ ở
2 Làm vi c v i các chi u sâu bít màn hình khác nhau ệ ớ ề
Trang 38- B t ch p s lấ ấ ố ượng màu s c h th ng có th hi n th , Matlab có th l u tr và x lýắ ệ ố ể ể ị ể ư ữ ử các nh v i đ sâu bít r t cao Nh ng nh này đả ớ ộ ấ ữ ả ược hi n th t t nh t trên h th ng 24ể ị ố ấ ệ ốbít màu nh ng thư ường khá t t trên h th ng 16 bít màu ố ệ ố
a – Tính đ sau bít màn hình ộ
- Đ tính đ sâu bít c a màn hình , s d ng l nh sau đây :ể ộ ủ ử ụ ệ
get(0,'ScreenDepth');
Giá tr nguyên tr v chính là s bít trên m t pixel màn hìnhị ả ề ố ộ
+ 8 : 8 bít hi n th tr giúp 256 màu M t màn hình 8 bít có th s n sinh ra b t kì màuể ị ợ ộ ể ả ấ
s c nào có trên màn hình 24 bít nh ng ch 256 màu có th xu t hi n cùng lúc ắ ư ỉ ể ấ ệ
+ 16 :Ch đ hi n th 16 bít thế ộ ể ị ường s d ng 5 bít cho m i thành ph n màu d n đ nử ụ ỗ ầ ẫ ế
32 m c cho m i màu R,G,B Do đó , nó tr giúp 32768 màu riêng bi t M t vài hứ ỗ ợ ệ ộ ệ
th ng s d ng các bít ph đ tăng s lố ử ụ ụ ể ố ượng m c c a màu G Trong trứ ủ ường h p này ,ợ
s lố ượng màu khác nhau được tr giúp là 64536 ợ
+ 24 : Ch đ hi n th 24 bít s d ng 8 bít cho m i màu R, G,B d n đ n 256 m c choế ộ ể ị ử ụ ỗ ẫ ế ứ
m i màu này , do đó , nó tr giúp 16777216 màu khác nhau ỗ ợ
+ 32 : S d ng 24 bít đ l u thông tin màu và s d ng 8 bít còn l i đ l u d li uử ụ ể ư ử ụ ạ ể ư ữ ệ trong su t ( kênh anpha ) ố
b - Ch n đ sâu bít màn hình ọ ộ
- Ph thu c vào h th ng , ta có th ch n đ sâu bít màn hình ta mu n Nhìn chung ,ụ ộ ệ ố ể ọ ộ ố
ch đ hi n th 24 bít t o ra k t qu t t nh t N u ta mu n s d ng m t đ sâu th pế ộ ể ị ạ ế ả ố ấ ế ố ử ụ ộ ộ ấ
h n 16 bít thơ ường được s d ng h n là 8 bít Tuy nhiên , hi n th 16 bít có m t sử ụ ơ ể ị ộ ố
gi i h n ( Xem thêm help online ) ớ ạ
3 Gi m s l ả ố ượ ng màu trong m t nh ộ ả
- Ta s xem xét làm cách nào đ gi m s lẽ ể ả ố ượng màu trong m t nh ch s ho c nhộ ả ỉ ố ặ ả RGB Ta cũng xem xét đ n kĩ thu t tr n ( dithering ) Dithering đế ậ ộ ượ ử ục s d ng đ tăngể
s lố ượng màu c a m t nhủ ộ ả
- Toolbox cung c p cho ta m t s hàm sau đây đ gi m màu :ấ ộ ố ể ả
+ imapprox : Gi m s lả ố ượng màu đượ ử ục s d ng b i nh ch s , cho phép ta ch ra sở ả ỉ ố ỉ ố
lượng màu trong b n đ màu m i ả ồ ớ
+ rgb2ind : Convert m t nh RGB thành m t nh ch s , cho phép ta ch ra s lộ ả ộ ả ỉ ố ỉ ố ượ ngmàu ch a trong b n đ màu m i ứ ả ồ ớ
Trang 39- Tên các h th ng v i hi n th 24 bít màu , nh RGB ( true-color ) có th hi n th t iệ ố ớ ể ị ả ể ể ị ớ
16777216 màu khác nhau Trên các h th ng v i đ sâu bít màn hình th p h n , nhệ ố ớ ộ ấ ơ ả RGB v n đẫ ược hi n th khá t t b i vì Matlab t đ ng s d ng ph i tr n và x p xể ị ố ở ự ộ ử ụ ố ộ ấ ỉ màu n u th y c n thi t ế ấ ầ ế
- nh ch s tuy nhiên , có th gây ra v n đ n u chúng có m t s lẢ ỉ ố ể ấ ề ế ộ ố ượng màu l n ớ Nhìn chung , ta nên gi i h n nh ch s t i 256 màu vì các lý do sau đây :ớ ạ ả ỉ ố ớ
+ Trên h th ng v i ch đ hi n th 8 bít , nh ch s v i nhi u h n 256 màu s c nệ ố ớ ế ộ ể ị ả ỉ ố ớ ề ơ ẽ ầ
được ph i tr n ( dithered ) ho c ánh x ( mapped ) và do đó có th không hi n th t t ố ộ ặ ạ ể ể ị ố+ Trên m t s h đi u hành ( platform ) , b n đ màu không th vộ ố ệ ề ả ồ ể ượt quá 256 màu + N u m t nh ch s có nhi u h n 256 màu , Matlab không th l u d li u nh trongế ộ ả ỉ ố ề ơ ể ư ữ ệ ả
m t m ng thu c l p uint8 tuy nhiên , nhìn chung s d ng m t m ng thu c l p doubleộ ả ộ ớ ử ụ ộ ả ộ ớthay th làm cho kích thế ướ ủ ảc c a nh l n h n ớ ơ
+ [Y,newmap]=imapprox(X,map,n) : X p x các màu trong m t nh ch s X đấ ỉ ộ ả ỉ ố ược k tế
h p v i b n đ màu map b ng cách s d ng lợ ớ ả ồ ằ ử ụ ượng t bi n đ i nh nh t ( minumumử ế ổ ỏ ấvariance quantization ) Hàm imapprox tr v nh ch s Y v i b n đ màu newmapả ề ả ỉ ố ớ ả ồ
có nhi u nh t n màu ề ấ
Trang 40+ Y=imapprox(…,dither_option ) : cho phép ho c c m tr n dither_option là m t chu iặ ấ ộ ộ ỗ
có m t ho c nhi u giá tr Giá tr m c đ nh độ ặ ề ị ị ặ ị ược đ t trong d u ({}) N uặ ấ ế dither_option là {‘dither’} - s tr n n u c n thi t đ thu đẽ ộ ế ầ ế ể ược m t đ phân gi i màuộ ộ ả
t t h n N u dither_option là (‘nodither’) – ánh x m i màu trong nh g c t i màuố ơ ế ạ ỗ ả ố ớ
g n nh t trong b n đ màu m i Không có phép tr n nào đầ ấ ả ồ ớ ộ ược th c hi n ự ệ
- Hàm rgb2ind convert nh RGB thành nh ch s s d ng m t trong 3 cách khác nhau :ả ả ỉ ố ử ụ ộ
lượng t đ u , lử ề ượng t bi n đ i c c ti u và ánh x b n đ màu V i t t c cácử ế ổ ự ể ạ ả ồ ớ ấ ả
phương pháp này , rgb2ind cũng tr n nh tr khi ta ch ra nodither trong dither_option ộ ả ừ ỉ+ [X,map]=rgb2ind(RGB,tol) : Convert nh RGB thành m t nh ch s X s d ngả ộ ả ỉ ố ử ụ
lượng t đ u map ch a nhi u nh t (floor(1/tol)+1)^3 màu tol có giá tr t 0 đ n 1 ử ề ứ ề ấ ị ừ ế+ [X,map]=rgb2ind(RGB,n) : Convert nh RGB thành nh ch s X s d ng lả ả ỉ ố ử ụ ượng tử
bi n đ i c c ti u , map ch a nhi u nh t n màu , n ph i nh h n ho c b ng 65536ế ổ ự ể ứ ề ấ ả ỏ ơ ặ ằ+ X=rgb2ind(RGB,map ) : Convert nh RGB thành nh ch s X v i b n đ màu mapả ả ỉ ố ớ ả ồ
b ng cách h p các màu trong RGB v i các màu g n nh t trong b n đ màu map ,ằ ợ ớ ầ ấ ả ồsize(map,1) ph i nh h n ho c b ng 65536ả ỏ ơ ặ ằ
+[…]=rgb2ind(…,dither_option ) : Cho phép ho c c m tr n , dither_option là m tặ ấ ộ ộ chu i Các giá tr c a dither_option gi ng nh trong hàm imapprox ỗ ị ủ ố ư