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

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ẽ ươ ứ ớ ị ứ ủ ả ồ ế ầ ử ủ

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ượ ộ ớ ặ ẽ ả ỉ ị ủ

ả- 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Ả ượ ậ ồ ấ ặ ẳ ậ ả

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

+ 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 )ử ả ồ ợ ệ ớ ả ố

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ỏ ấ ủ ườ ượ ầ ở ể ủ ố ượ

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 đệ ố ạ ộ

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ể ị ả

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ủ ả

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)
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)

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ộ ế ỏ ả ọ ử ụ

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àỏ ộ ể ộ ờ ỉ ề ủ ờ ằ

- Đ 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


Nhờ tải bản gốc
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status