Tách biên là phương pháp thông dụng nhất để tách theo nghĩa gián đoạn trong các 
giá trị cường độ. Sự gián đoạn được tách sử dụng đạo hàm bậc nhất và bậc hai. 
Đạo hàm bậ c nhất lựa chọn trong xử ly ảnh là gradient (độ dốc). Gradient của hàm 
2-D ) , ( y x f được định nghĩa dưới dạng vectơ
              
                                            
                                
            
 
            
                 19 trang
19 trang | 
Chia sẻ: luyenbuizn | Lượt xem: 1456 | Lượt tải: 1 
              
            Nội dung tài liệu Tách biên ảnh màu, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
TÁCH BIÊN ẢNH MÀU 
 1 
TÁCH BIÊN ẢNH MÀU 
I. Cơ sở lý thuyết tách biên 
Tách biên là phương pháp thông dụng nhất để tách theo nghĩa gián đoạn trong các 
giá trị cường độ. Sự gián đoạn được tách sử dụng đạo hàm bậc nhất và bậc hai. 
Đạo hàm bậc nhất lựa chọn trong xử lý ảnh là gradient (độ dốc). Gradient của hàm 
2-D ),( yxf được định nghĩa dưới dạng vectơ 
y
f
x
f
G
G
f
y
x 
Biên độ của vectơ này: 
        2/1222/122 //)( yfxfGGfmagf yx  
Để tính toán đơn giản, con số này được xấp xỉ bằng cách sử dụng giá trị tuyệt đối 
 yx GGf  
Xấp xỉ này vẫn còn dưới dạng các đạo hàm: đó là, chúng bằng 0 trong các vùng có 
cường độ không đổi, và giá trị chúng tỷ lệ với bậc của sự thay đổi cường độ trong 
vùng có các giá trị pixel biến thiên. Nó được xem là biên độ của gradient hoặc xấp 
xỉ đơn giản của nó dưới dạng “gradient”. 
Đặc tính cơ bản của vectơ gradient là các điểm của nó là hướng có tỷ lệ thay đổi 
hàm f tại tọa độ ),( yx lớn nhất. Góc xảy ra tỷ lệ thay đổi lớn nhất là: 
 
 
x
y
G
G
yx 1tan),( 
Một trong những phương pháp then chốt đưa ra là ước đoán đạo hàm xG và yG 
theo phương pháp số. Các phương pháp khác nhau được dùng bởi hàm edge được 
thảo luận sau trong phần này. 
Đạo hàm bậc hai trong xử lý ảnh được tính sử dụng toán tử Laplace. Toán tử 
Laplace của hàm 2-D ),( yxf được cho dưới dạng vi phân bậc hai như sau: 
 2
2
2
2
2 ),(),(),(
y
yxf
x
yxfyxf
 
Toán tử Laplace ít khi được dùng để tách biên vì, vi phân bậc hai, dễ bị ảnh hưởng 
bởi nhiễu, biên độ của nó sinh ra các biên kép, và không thể tách hướng biên. Tuy 
nhiên , toán tử Laplace có thể là phần bổ sung mạnh khi sử dụng kết hợp với kỹ 
thuật tách biên khác. Ví dụ, mặc dù các biên kép không thích hợp để tách biên trực 
tiếp, đặc tính này có thể dùng để định vị biên. 
Ý tưởng cơ bản đằng sau tách biên là tìm các nơi trong ảnh có cường độ thay đổi 
nhanh, sử dụng một trong hai tiêu chuẩn tổng quát sau: 
TÁCH BIÊN ẢNH MÀU 
 2 
 Tìm các nơi đạo hàm bậc nhất của cường độ sáng có biên độ hơn một 
ngưỡng. 
 Tìm các nơi đạo hàm bậc hai của cường độ sáng có chỗ chéo 0. 
Các hàm biên của IPT (Image Processing Toolbox) cung cấp một số ước lượng đạo 
hàm dựa trên các tiêu chuẩn mới nói tới. Đối với một số trong những ước lượng 
này, có thể xác định bộ tách biên có nhạy với các biên ngang hay biên dọc hay 
không hoặc cả hai. Cấu trúc tổng quát của hàm này là 
 [g, t] = edge (f, ‘method’, parameters) 
Trong đó f là ảnh đầu vào, method là một trong các phương pháp được liệt kê trong 
bảng 1, và parameters là các tham số thêm vào được giải thích sau. Trong ngõ ra, g 
là mảng logic với các giá trị 1 tại các vị trí các điểm biên được tách và 0 khi không 
được tách. Tham số t là tùy chọn, nó cho ngưỡng được dùng bởi biên để xác định 
các giá trị gradient đủ mạnh để được gọi là các điểm biên. 
Bảng 1 
Bộ tách biên Các đặc tính cơ bản 
Sobel 
Tìm biên dùng xấp xỉ Sobel với đạo hàm cho trong hình 
1(b) 
Prewitt Tìm biên dùng xấp xỉ Prewitt với đạo hàm cho trong 
hình 1(c) 
Roberts Tìm biên dùng xấp xỉ Roberts với đạo hàm cho trong 
hình 1(d) 
Laplacian of a 
Gaussian (LoG) 
Tìm biên bằng cách tìm điểm chéo 0 sau khi lọc qua bộ 
lọc Gauss 
Zero crossings Tìm biên bằng cách tìm điểm chéo 0 sau khi lọc qua bộ 
lọc được xác định bởi người sử dụng 
Canny Tìm biên bằng cách tìm các cực đại địa phương của 
gradient ),( yxf . Gradient được tính toán dùng đạo hàm 
của bộ lọc Gauss. Phương pháp dùng hai ngưỡng để 
tách các biên mạnh và yếu, và gộp các biên yếu ở ngõ 
ra chỉ khi chúng được kết nối với các biên mạnh. Do đó, 
phương pháp này thích hợp hơn để tách các biên yếu 
thật sự. 
TÁCH BIÊN ẢNH MÀU 
 3 
I.1.Bộ tách biên Sobel 
Bộ tách biên Sobel sử dụng các mặt nạ trong hình 1(b) để xấp xỉ đạo hàm bậc nhất 
xG và yG . Nói cách khác, gradient tại điểm tâm trong một lân cận được tính theo 
bộ tách Sobel: 
  2/1274196323219872/122 })]2()2[()]2()2{[( zzzzzzzzzzzzGGg yx  
Khi đó, ta nói rằng vị trí (x,y) là pixel biên nếu Tg  tại vị trí đó, trong đó T là 
một ngưỡng được chỉ định. 
z1
z4
z7
z2 z3
z6
z9z8
z5
Image neighborhood
-1 2 -1
0 0 0
111
-1 0 1
-2 0 2
10-1
Sobel
)2()2( 321987 zzzzzzGx  )2()2( 741963 zzzzzzGy  
-1 -1
0 0 0
111
-1 0 1
-1 0 1
10-1
-1
Prewitt
 )()( 321987 zzzzzzGx  )()( 741963 zzzzzzGy  
0
0
-1
1
0
01
-1
Roberts 
 59 zzGx  68 zzGy  
Hình 1. Một số mặt nạ tách biên và đạo hàm bậc nhất chúng hiện thực 
TÁCH BIÊN ẢNH MÀU 
 4 
Bộ tách biên Sobel có thể được thực hiện bằng cách lọc một ảnh, f, (dùng imfilter) 
với mặt nạ bên trái trong hình 1(b), lọc lại f với mặt nạ khác, bình phương các giá 
trị pixel với mỗi ảnh được lọc, cộng hai kết quả, và tính căn bậc hai. Các chú thích 
tương tự đối với các phần thứ 2 và thứ 3 trong bảng 1. Hàm edge đơn giản các gói 
toán tử trước thành một hàm gọi và thêm vào các dặc tính khác, chẳng hạn như 
chấp nhận một giá trị ảnh ngưỡng hoặc xác định ngưỡng một cách tự động. Thêm 
vào đó, edge chứa các kỹ thuật tách biên không hiện thực trực tiếp được bằng 
imfilter 
Cú pháp gọi bộ tách Sobel tổng quát là 
 [g , t ] = edge(f, ‘sobel’, T, dir) 
Trong đó f là ảnh đầu vào, T là ngưỡng được chỉ định và dir xác định hướng cần 
tính tách biên: ‘ngang’, ‘dọc’ hoặc cả hai. Như đã nói, g là ảnh logic chứa giá trị 1 
tại những nơi biên được tách và giá trị 0 tại những nơi biên được tách. Tham số t 
trong ngõ ra là tùy chọn. Nó là giá trị ngưỡng được dùng bởi edge. Nếu T dược chỉ 
định thì t = T. Mặt khác nếu T không được chỉ định (hoặc để rỗng []), f sẽ đặt t 
bằng với ngưỡng do nó tự động xác định và sau đó sử dụng cho việc tách biên. một 
trong những lý do cơ bản cho việc gộp t trong tham số ngõ ra là để nhận giá trị khởi 
tạo cho ngưỡng. Hàm edge sử dụng bộ tách Sobel mặc định nếu cú pháp 
g = edge (f), hoặc là [g, t] = edge(f). 
I.2.Bộ tách biên Prewitt 
Bộ tách biên Prewitt sử dụng mặt nạ trong hình 1(c) để xấp xỉ theo phương pháp số 
đạo hàm bậc nhất xG và yG . Cú pháp gọi tổng quát là: 
 [g , t ] = edge(f, ‘prewitt’, T, dir) 
Tham số hàm này đồng nhất với tham số Sobel. Bộ tách Prewitt hơi đơn giản hơn 
để hiện thực bằng máy tính so với bộ tách Sobel, nhưng nó có khuynh hướng sinh 
ra một chút nhiễu. (Nó có thể được thể hiện qua hệ số 2 trong bộ tách biên làm 
trơn) 
I.3.Bộ tách biên Roberts 
Bộ tách biên Roberts sử dụng mặt nạ trong hình 1(d) để xấp xỉ theo phương pháp 
số đạo hàm bậc nhất xG và yG . Cú pháp gọi tổng quát là: 
 [g , t ] = edge(f, ‘roberts’, T, dir) 
Tham số hàm này đồng nhất với tham số Sobel. Bộ tách Roberts là một trong 
những bộ tách biên xưa nhất trong xử lý ảnh số và theo hình 1(d), nó cũng đơn giản 
nhất. Bộ tách biên này được dùng ít hơn đáng kể các bộ tách khác do chức năng 
giới hạn của nó (ví dụ, nó không đối xứng và không thể được tổng quát hóa để tách 
TÁCH BIÊN ẢNH MÀU 
 5 
biên là thừa số của 450). Tuy nhiên, nó vẫn được dùng thường xuyên trong hiện 
thực phần cứng khi tính đơn giản và tốc độ là các yếu tố chi phối. 
I.4.Bộ tách biên Laplace của hàm Gauss (LoG) 
Xét hàm Gauss 
 2
2
2)( 
r
erh
 
Trong đó 222 yxr  và  là độ lệch chuẩn. Đây là hàm trơn, nếu nó chập với 
một ảnh, sẽ làm mờ ảnh. Độ mờ được xác định bởi giá trị  . Toán tử Laplace của 
hàm này (đạo hàm bậc 2 theo r): 
 2
2
2
4
22
2 )( 
r
errh
  
Với những lý do rõ ràng, hàm này gọi là toán tử Laplace của hàm Gauss (LoG). Vì 
đạo hàm bậc hai là toán tử tuyến tính, chập (lọc) với một ảnh bằng )(2 rh giống 
như đầu tiên chập ảnh với hàm trơn và sau đó tính kết quả của toán tử Laplace. 
Đây là chìa khóa khái niệm cơ bản của bộ tách LoG. Chúng ta chập ảnh bằng 
)(2 rh biết nó có 2 tác động: nó làm mịn ảnh (do đó giảm nhiễu) và nó tính toán 
tử Laplace, làm cong một ảnh biên kép. Định vị các biên sau đó tìm các điểm giao 
zero giữa các biên kép. Cú pháp gọi tổng quát là: 
 [g , t ] = edge(f, ‘log’, T, sigma) 
Trong đó sigma là độ lệch chuẩn và các tham số còn lại giống phần trước. Giá trị 
mặc định của sigma là 2. Như đã nói, bỏ qua bất cứ biên nào không lớn hơn T. Nếu 
T không được cho, hoặc rỗng [ ], edge chọn giá trị một cách tự động. Đặt T từ 0 tạo 
các biên là các đường viền kín, một đặc tính quen thuộc của phương pháp LoG. 
I.5.Bộ tách biên điểm giao zero 
Bộ tách biên này dựa trên khái niệm giống phương pháp LoG, nhưng phép chập 
được thực hiện sử dụng hàm lọc được chỉ định H. Cú pháp gọi hàm 
 [g , t ] = edge(f, ‘zerocross’, T, H) 
Các tham số khác được giải thích như bộ tách LoG 
TÁCH BIÊN ẢNH MÀU 
 6 
I.6.Bộ tách biên Canny 
Bộ tách biên Canny (Canny [1986]) là bộ tách biên mạnh nhất cung cấp bởi hàm 
edge. Có thể tóm tắt phương pháp này như sau: 
1. Ảnh được làm trơn sử dụng một bộ lọc Gauss với độ lệch chuẩn  , để 
giảm nhiều 
2. Gradient cục bộ,   2/122),( yx GGyxg  và hướng biên 
)(tan),( 1
x
y
G
G
yx  , được tính toán tại mỗi điểm. Một trong 3 kỹ thuật 
đầu trong bảng 10.1 để tính xG và yG . Một điểm biên được định nghĩa là 
điểm có độ dài là cực đại địa phương theo hướng của gradient. 
3. Điểm biên được xác định (2) tăng lên đến các đỉnh trong gradient biên độ 
ảnh. Sau đó thuật toán tìm đỉnh của các đỉnh này và đặt giá trị 0 vào tất cả 
pixel không thật sự nằm trên đỉnh vì vậy tạo ra một đường mỏng ở ngõ ra, 
một quá trình được biết là sự nén lại không cực đại. Các pixel đỉnh được 
đặt ngưỡng dùng hai ngưỡng, 1T và 2T . Các pixel đỉnh lớn hơn 2T được gọi 
là các pixel biên “mạnh”. Các pixel đỉnh nằm giữa 1T và 2T được gọi là 
các pixel biên “yếu”. 
4. Cuối cùng, thuật toán thực hiện biên kết nối bằng cách kết hợp các pixel 
yếu mà có dạng kết nối-8 với các pixel mạnh. 
Cú pháp bộ tách biên Canny là: 
 [g , t ] = edge(f, ‘canny’, T, sigma) 
Trong đó T là một vectơ,  21 TTT  là 2 ngưỡng được giải thích trong bước 
3 của thủ tục trước và sigma là độ lệch chuẩn của bộ lọc làm trơn. Nếu t gộp 
vào thông số ngõ ra, nó là vectơ 2 phần tử chứa 2 giá trị ngưỡng được dùng 
bởi thuật toán. Cú pháp đơn giản được giải thích như các phương pháp khác, 
bao gồm việc tự động tính toán T nếu nó không được cung cấp. Giá trị mặc 
định của sigma là 1. 
TÁCH BIÊN ẢNH MÀU 
 7 
II.Cơ sở tách biên ảnh màu 
II.1. Đặc tính ảnh màu trong Matlab 
Công cụ xử lí ảnh màu trong Matlab thực hiện hai kiểu ảnh màu hoặc là indexed 
images hoặc là RGB images. 
II.1.1 Ảnh RGB 
Ảnh RGB là một mảng pixel màu M x N x 3. Mỗi pixel màu là sự kết hợp của ba 
thành màu red, green và blue của ảnh màu tại một vị trí không gian bất kì (xem 
hình 2). 
Hình 2. Cách mà những pixels của một ảnh RGB được hình thành từ 
các pixels của ba ảnh thành phần 
Một ảnh RGB có thể được xem như là sự sắp xếp của ba ảnh mức xám mà khi cho 
vào các ngõ vào red, green và blue của một màn hình màu sẽ tạo ra một ảnh màu 
trên màn hình. Ba ảnh được hình thành từ một ảnh màu RGB là các ảnh thành phần 
red, green và blue. Lớp dữ liệu của các ảnh thành phần xác định miền giá trị của 
chúng. Nếu một ảnh RGB thuộc lớp double thì miền giá trị là [0, 1]. Tương tự ta có 
miền giá trị là [0, 255] hoặc [0, 65535] tương ứng với các ảnh màu RGB thuộc lớp 
uint8 hoặc uint16. Số lượng bit được sử dụng để đại diện cho các giá trị pixel của 
những ảnh thành phần xác định chiều sâu bit của một ảnh RGB. Ví dụ mỗi ảnh 
thành phần là một ảnh 8 bit suy ra ảnh RGB tương ứng sẽ là 24 bit. Nói chung số 
bit trong các ảnh thành phần là như nhau. Số màu có thể có trong một ảnh RGB là 
TÁCH BIÊN ẢNH MÀU 
 8 
3)2( b , trong đó b là số bit trong mỗi ảnh thành phần. Ví dụ trường hợp 8 bit thì số 
màu là 16,777,216. 
Giả sử fR, fG và fB đại diện cho ba ảnh thành phần RGB. Một ảnh RGB được hình 
thành từ những ảnh này bằng cách sử dụng toán tử cat (concatenate) để sắp xếp 
các ảnh này: 
 rgb_image = cat(3, fR,fG,fB) 
Không gian màu RGB thường được biểu diễn dưới dạng hình học như là một khối 
màu RGB (nó được mô tả hình 2). Các màu sơ cấp (red, green, và blue) và các màu 
thứ cấp ( cyan, magenta, và yellow) đựơc bố trí tại các đỉnh như hình 3. 
Hình 3. Sơ đồ nguyên lý của hình hộp màu RGB biểu diễn các màu sơ 
cấp và thứ cấp tại các đỉnh. Các điểm dọc theo đường chéo chính 
có giá trị xám từ đen tại gốc tọa độ đến trắng tại điểm (1,1,1) 
II.1.2. Ảnh Index 
Ảnh index có hai thành phần : một ma trận dữ liệu số nguyên, X, và một ma trận 
bản đồ màu, map. Ma trận map là một mảng m x 3 của lớp double chứa các giá trị 
trong miền [0 1]. Chiều dài, m, của map bằng với số màu mà nó định có. Mỗi hàng 
của map xác định các thành phần red, green và blue của từng màu đơn. Màu của 
mỗi pixel được xác định bằng cách sử dụng giá trị nguyên tương ứng của ma trận X 
chỉ đến map (bản đồ màu). Nếu X thuộc lớp double thì tất cả những thành phần của 
nó với những giá trị nhỏ hơn hoặc bằng 1 sẽ chỉ đến hàng đầu của map, tất cả 
những thành phần với giá trị 2 chỉ đến hàng thứ 2 và vân vân. Nếu X thuộc lớp 
TÁCH BIÊN ẢNH MÀU 
 9 
uint8 hoặc uint16 thì tất cả những thành phần với giá trị 0 chỉ đến hàng đầu của 
map, tất cả những thành phần với giá trị 1 chỉ đến hàng 2 và vân vân. Những khái 
niệm này được mô tả trong hình 4. 
Hình 4. Các phần tử của một ảnh index. Chú ý rằng giá trị của một 
phần tử của mảng số nguyên X xác định thứ tự hàng trong bản đồ 
màu. Mỗi hàng chứa một bộ ba RGB và L là tổng số hàng. 
Để hiển thị một ảnh index ta có thể viết: 
 >> imshow(X,map) 
hoặc cách khác: 
 >> image(X) 
 >> colormap(map) 
Một bản đồ màu được lưu trữ với một ảnh index và tự động được load với ảnh khi 
hàm imread được sử dụng để load ảnh. 
Đôi khi rất cần thiết để xấp xỉ một ảnh index thành ảnh index với ít số màu hơn. 
Để thực hiện nó ta có thể dùng hàm imapprox: 
 [Y, newmap] = imapprox(X, map, n) 
Hàm này trả về mảng Y với bản đồ màu mới newmap mà có nhiều nhất là n màu. 
Mảng đầu vào X có thể thuộc lớp uint8, uint16, hoặc double. Ngõ ra Y thuộc lớp 
uint8 nếu n nhỏ hơn hoặc bằng 256. Nếu n lớn hơn 256, Y thuộc lớp double. 
Khi số hàng trong bản đồ màu nhỏ hơn số giá trị nguyên phân biệt trong X, nhiều 
giá trị khác nhau trong X sẽ được hiển thị với cùng màu trong bản đồ màu. Một ảnh 
TÁCH BIÊN ẢNH MÀU 
 10 
lung tung cũng sẽ được hiển thị nếu chiều dài của bản đồ màu vựơt quá tầm cho 
phép của những giá trị của các thành phần của X. 
Có vài cách để xác định một bản đồ màu. Có thể sử dụng lệnh sau: 
 >> map(k , : ) = [r(k) g(k) b(k)] 
trong đó, [r(k) g(k) b(k)] là những giá trị RGB tại vị trí hàng thứ k của bản đồ màu. 
Bảng 2 cho những giá trị RGB đối với một số màu cơ bản. Bất cứ ba định dạng nào 
trong bảng đều có thể được sử dụng để xác định màu. Ví dụ, màu nền có thể được 
thay đổi thành xanh lụcbằng cách dùng một trong ba câu lệnh sau: 
 >> whitebg(‘g’) 
 >> whitebg(‘green’) 
 >> whitebg([0 1 0]) 
Các màu thêm vào thể hiện trong bảng 2 liên quan đến các giá trị thập phân. Ví dụ 
[0.5 0.5 0.5] là màu xám, [0.5 0 0] là màu đỏ tối, [0.49 1 0.83] là màu ngọc xanh 
biển. 
Matlab cung cấp một số bảng đồ màu được định nghĩa trước, truy cập sử dụng câu 
lệnh 
 >> colormap( map_name) 
trong đó nó sẽ đặt bản đồ màu thành ma trận map_name. Ví dụ: 
 >> colormap(copper) trong đó copper là một trong số bản đồ màu được 
Matlab định nghĩa trước. Màu trong bản đồ này thay đổi rất mịn từ đen đến màu 
đồng sáng. Nếu ảnh cuối cùng được hiển thị là một ảnh index, lệnh này sẽ thay đổi 
bản đồ màu của nó thành copper. Theo một lựa chọn ảnh có thể hiển thị trực tiếp 
với bản đồ màu mong muốn: 
 >>imshow( X, copper) 
Một số bản đồ màu có sẵn trong Matlab. Chiều dài (số màu) của các bản đồ này có 
thể được xác định bằng cách gửi kèm theo trong dấu ngoặc. Ví dụ: gray(16) tạo 
một bản đồ màu với 16 mức xám. 
Bảng 2. Các giá trị RGB của một số màu cơ bản 
Tên đầy đủ Tên viết tắt Giá trị RGB 
Black 
Blue 
Green 
Cyan 
Red 
Magenta 
Yellow 
White 
k 
b 
g 
c 
r 
m 
y 
w 
[0 0 0] 
[0 0 1] 
[0 1 0] 
[0 1 1] 
[1 0 0] 
[1 0 1] 
[1 1 0] 
[1 1 1] 
TÁCH BIÊN ẢNH MÀU 
 11 
II.2. Tách biên ảnh màu dùng phương pháp Gradient 
Phương pháp thường dùng để xấp xỉ các đạo hàm là sai số giữa các pixel trong 
cáclân cận nhỏ trong một ảnh. Hình 1 biểu diễn một lân cận kích thước 3 x3 trong 
đó z là giá trị pixel. Một xấp xỉ của đạo hàm riêng phần theo x (phương dọc) tại 
tâm điểm của vùng (z5) được cho bởi độ chênh lệch: 
    321987 22 zzzzzzGx  
Tương tự đạo hàm theo phương y được xấp xỉ bởi độ chênh lệch 
    741963 22 zzzzzzGy  
Các con số này được tính dễ dàng tại mọi điểm trong ảnh bằng phép chập (sử dụng 
hàm imfilter) ảnh lần lượt với từng mặt nạ trong hình 1. Sau đó xấp xỉ của đáp ứng 
gradient ảnh thu được bằng cách cộng hai trị tuyệt đối của hai ảnh được chập. Các 
mặt nạ được nói tới là các mặt nạ Sobel, có thể được tạo ra dùng hàm fspecial. 
Gradient được tính toán theo cách được mô tả là một trong những phương pháp 
thường dùng để tách biên ảnh xám, đã được thảo luận trong phần I. Quan tâm của 
ta lúc này là tính gradient trong không gian màu RGB. Tuy nhiên phương pháp vừa 
mới đưa ra có thể ứng dụng được trong không gian 2D nhưng không mở rộng được 
cho không gian có chiều lớn hơn. Cách duy nhất để sử dụng nó đối với các ảnh 
RGB là tính gradient của mỗi thành phần màu rồi sau đó kết hợp các kết quả. 
Không may thay, theo phần sau, điều này không giống như việc tính toán các 
không gian vectơ RGB một cách trực tiếp. 
Do đó vấn đề là định nghĩa gradient ( biên độ và hướng) của vectơ c được định 
nghĩa: 
),(
),(
),(
),(
),(
),(
),(
yxB
yxG
yxR
yxc
yxc
yxc
yxc
B
G
R
Theo sau là một trong những cách mà khái niệm gradient được mở rộng với các 
hàm vectơ. Lại nói hàm vô hướng f(x,y) gradient là một vectơ mà nó chỉ hướng của 
tỉ lệ thay đổi cực đại tại tọa độ (x,y). 
Lấy r, g và b là các vectơ đơn vị theo các trục R, G và B của không gian màu RGB 
và định nghĩa các vectơ : 
 b
x
Bg
x
Gr
x
Ru
 
 b
y
Bg
y
Gr
y
Rv
 
TÁCH BIÊN ẢNH MÀU 
 12 
Đặt các số xxg , xyg và yyg được định nghĩa như sau: 
222
x
B
x
G
x
Ruuuug Txx 
 
222
y
B
y
G
y
Rvvvvg Tyy 
 
y
B
x
B
y
G
x
G
y
R
x
Rvuvug Txy 
 
Nhớ rằng R, G và B và các giá trị g là các hàm của x và y. Dùng chú ý này như 
được thể hiện trong Di Zenzo [1986] nói rằng hướng của tỉ lệ thay đổi cực đại của 
c(x,y) là một hàm (x,y) 
    
 
yyxx
xy
gg
g
yx
2
tan
2
1, 1 
và giá trị của tỉ lệ thay đổi (biên độ của gradient) theo các hướng được cho bởi các 
phần tử của 
Chú ý rằng ),( yx và ),( yxF là các ảnh có cùng kích cỡ với ảnh đầu vào. Các 
phần tử ),( yx là các góc tại mỗi điểm gradient được tính va ),( yxF ølà ảnh 
gradient . 
       
2/1
222cos
2
1,
   sìngggggyxF xyyyxxyyxx 
Vì )tan(tan   nếu 0 là một nghiệm của phương trình tan
-1 trước, vì vậy 
2/0   . Thêm vào đó ),(),( yxFyxF   , vì thế F cần được tính chỉ với các 
giá trị của  trong nửa khoảng ),0[  . Sự thật là phương trình tan-1 cho hai giá trị 
lệch nhau 900 nghĩa là phương trình này nghiệm đúng với mỗi cặp (x,y) có hướng 
vuông góc nhau. Dọc theo một trong những hướng này F là cực đại, và nó sẽ là cực 
tiểu nếu theo hướng còn lại, vì vậy kết quả nhận được bằng cách chọn giá trị lớn 
nhất tại mỗi điểm. Đạo hàm của các kết quả này hơi dài, và chúng ta sẽ ít đạt được 
mục đích cơ bản của thảo luận hiện tại của chúng tabằng cách chi tiết nó ở đây. 
Đạo hàm riêng phần có thể được tính toán bằng toán tử Sobel đã thảo luận trước. 
Hàm theo sau sẽ tính gradient của ảnh RGB: 
 [VG, A, PPG] = colorgrad(f,T) 
trong đó f là ảnh RGB, T là ngưỡng tự chọn nằm trong khoảng [0 1] (Mặc định là 
0); VG là một vecto gradient RGB ),( yxF ; A là ảnh góc ),( yx tính bằng rad; và 
PPG là gradient được tính bằng các lấy tổng các gradient 2D của các không gian 
màu riêng biệt. Các gradient này la  yxR , ,  yxG , ,  yxB , trong đó toán tử 
 được định nghĩa trong phần trước. Tất cả đạo hàm cần để thực hiện phương trình 
TÁCH BIÊN ẢNH MÀU 
 13 
trên được thực hiện trong hàm colorgrad sử dụng toán tử Sobel. Các ngõ ra VG và 
PPG được chuẩn hóa trong khoảng [0 1] bởi colorgrad và chúng được đặt ngưỡng 
để VG(x,y) =0 đối với những giá trị nhỏ hơn hoặc bằng T và VG(x,y) = VG(x,y) 
đối với những trường hợp khác. Chú thích tương tự đối với PPG. 
III. Thuật toán tách biên ảnh màu 
Tính các đạo hàm x và y 
của 3 thành phần ảnh với 
mặt nạ được chọn 
Tính các tham số vector gradient 
gxx, gyy, gxy ==> 21, 
Tính  ),(),,(max),(
21
yxFyxFyxF   
và chuẩn hóa trong khoảng [0,1] 
So sánh với ngưỡng T ta 
được ảnh tách biên 
Ảnh RGB 
TÁCH BIÊN ẢNH MÀU 
 14 
IV. Chương trình M_File 
IV.1. Hàm colorgrad 
function[VG,A,PPG]=colorgrad(f,dec,T) 
%COLORGRAD TINH VECTO GRADIENT CUA MOT ANH MAU RGB. 
%function[VG,A,PPG]=colorgrad(f,T) tinh vector gradient,VG, va mang goc 
%tuong ung,VA, (don vi radians) cua anh RGB f. No cung tinh PPG, gradient 
%ket hop tu cac vung mau ma co duoc bang cach cong cac gradient hai chieu 
%cua cac vung mau don. Ngo vao T la muc nguong trong tam [0 1]. Neu no duoc 
%xac dinh trong bien ngo vao thi gia tri cua VG va PPG duoc lay nguong bang 
%cach tao ra VG(x,y)=0 khi gia tri <=T va VG(x,y) =VG(x,y)doi voi gia tri 
%khac.Nhung lenh tuong tu cung duoc ung dung cho PPG. Neu T khong xac dinh 
%trong doi so vao thi T duoc set = 0. Ca hai gradient ngo ra duoc xac dinh 
%trong tam [0 1] 
%dec la loai mat na 
if (ndims(f)~=3)| (size(f,3)~=3) 
 error('Input image must be RGB'); 
end 
%Tinh toan vi phan theo phuong x va y cua ba anh thanh phan su dung toan tu 
%Mat na 
sh=fspecial(dec); 
sv=sh'; 
Rx=imfilter(double(f(:,:,1)),sh,'replicate'); 
Ry=imfilter(double(f(:,:,1)
            Các file đính kèm theo tài liệu này:
 _tachbienanhmau.pdf _tachbienanhmau.pdf