1. Trang chủ
  2. » Công Nghệ Thông Tin

Tách biên ảnh màu doc

20 487 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 280,66 KB

Nội dung

Đố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.. Tham số t là tùy chọn, nó cho ngưỡng được dùng bởi

Trang 1

Tách biên ảnh màu

Trang 2

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 f(x,y)đượ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:

/ /

)

mag

f    xy      

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

y

G

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 độ (x,y) lớn nhất Góc xảy ra tỷ lệ thay đổi lớn nhất là:

x

y

G

G y

x , ) tan 1

(

Một trong những phương pháp then chốt đưa ra là ước đoán đạo hàm G xG y

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 f(x,y)được cho dưới dạng vi phân bậc hai như sau:

2 2

2

2

) , (

y

y x f x

y x f y

x f

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:

Trang 3

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 f(x,y) 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ự

Trang 4

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

x

GG y 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:

7 4 1 9 6 3 2 3 2 1 9 8 7 2

/ 1 2

2

} )]

2 ( ) 2

[(

)]

2 ( ) 2

G

G

Khi đó, ta nói rằng vị trí (x,y) là pixel biên nếu g  T tại vị trí đó, trong đó T là một ngưỡng được chỉ định

z1

z4

z7

z2 z3

z6

z9

z8

z5

Image neighborhood

1 1

1

1 0

-1

Sobel

) 2

( ) 2

( z7 z8 z9 z1 z2 z3

Gx       G y (z3 2z6 z9)(z12z4  z7)

1 1

1

1 0

-1

-1

Prewitt

) (

) ( z7 z8 z9 z1 z2 z3

Gx       G y (z3 z6 z9)(z1 z4  z7)

0 0

-1

1

0 0 1

-1

Roberts

Gxz9  z5 G yz8 z6

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

Trang 5

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 G xG y 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 G xG y 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

Trang 6

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

e r

h

Trong đó r2 x2  y2 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

2 2 2

)

e

r r

h

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 2h(r) 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

r

h

 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 [ ], edgechọ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

Trang 7

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 21 / 2

) , ( x y Gx Gy

g   và hướng biên

) ( tan ) ,

x

y

G

G y

x  

 , đượ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 G xG y 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, T1 và T2 Các pixel đỉnh lớn hơn T2 được gọi là các pixel biên “mạnh” Các pixel đỉnh nằm giữa T1 và T2 đượ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ơ, T T1 T2 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

Trang 8

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à

Trang 9

)

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

Trang 10

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

Trang 11

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]

Ngày đăng: 27/06/2014, 00:20

HÌNH ẢNH LIÊN QUAN

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 doc
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 (Trang 4)
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 - Tách biên ảnh màu doc
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 (Trang 8)
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 - Tách biên ảnh màu doc
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 (Trang 9)
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 - Tách biên ảnh màu doc
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 (Trang 10)
Bảng 2. Các giá trị RGB của một số màu cơ bản - Tách biên ảnh màu doc
Bảng 2. Các giá trị RGB của một số màu cơ bản (Trang 11)
Hình 5. Hai mặt nạ Sobel và Prewitt với ngưỡng T = 0 - Tách biên ảnh màu doc
Hình 5. Hai mặt nạ Sobel và Prewitt với ngưỡng T = 0 (Trang 17)
Hình 7. Hai mặt nạ Sobel và Prewitt với ngưỡng T = 0.5 - Tách biên ảnh màu doc
Hình 7. Hai mặt nạ Sobel và Prewitt với ngưỡng T = 0.5 (Trang 18)
Hình 6. Hai mặt nạ Sobel và Prewitt với ngưỡng T = 0.25 - Tách biên ảnh màu doc
Hình 6. Hai mặt nạ Sobel và Prewitt với ngưỡng T = 0.25 (Trang 18)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w