Chơng 2: cảI thiện ảnh 67 Hình 2.23: Ví dụ về làm giảm nhiễu muối -tiêu bằng phép làm trơn pixel ngoại cỡ. ảnh trên Hình 2.22(a) đợc xử lý bằng phép làm trơn pixel ngoại cỡ với giá trị ngỡng là 50 và cửa sổ 3 x 3 điểm. 3. phát hiện biên Biên trong ảnh là một đờng biên giới hay một đờng bao (contour) mà ở đó xuất hiện sự thay đổi đáng kể một vài tính chất vật lý của ảnh, nh độ phản xạ bề mặt, độ chiếu sáng hoặc khoảng cách từ những bề mặt nhìn thấy đợc đến vị trí ngời xem. Thay đổi tính c hất vật lý biểu hiện bằng nhiều cách, bao gồm thay đổi cờng độ, màu, kết cấu bề mặt. ở đây, ta chỉ xét về sự thay đổi cờng độ ảnh. Phát hiện đờng biên rất có lợi trong một số bối cảnh, chẳng hạn trong nhiệm vụ lý giải ảnh nh nhận dạng đối tợng, một bớc quan trọng là phân đoạn ảnh thành từng vùng khác nhau, ứng với những đối tợng khác nhau trong cảnh. Phát hiện đờng biên thờng là bớc đầu tiên trong phân đoạn ảnh. Một ví dụ khác, là phơng pháp mã hoá ảnh với nhịp bít thấp bằng cách chỉ mã hoá nh ững đờng biên phát hiện ra. Ta biết rằng, khi một ảnh chỉ gồm toàn đờng biên thì độ dễ hiểu rất cao. ý nghĩa của sự thay đổi tính chất vật lý trong ảnh phụ thuộc vào ứng dụng: điểm thay đổi cờng độ đợc coi là điểm biên ở ứng dụng này, nhng trong ứ ng dụng khác không phải là điểm biên. Trong hệ nhận dạng đối tợng, đờng bao toàn bộ đối tợng đã đủ cho việc nhận dạng , còn những đờng bao khác đại biểu những chi tiết trên đối tợng cũng có thể không coi là đờng biên. Nh vậy, không thể định nghĩa đờng biên ngoài bối cảnh của ứng dụng. Tuy nhiên những alg orit phát hiện đờng biên có ích trong nhiều tập ứng dụng lớn đã đợc phát triển. Trong tiết này ta thảo luận về một số algorit phát hiện đờng biên tiêu biểu. Chơng 2: cảI thiện ảnh 68 3.1. phơng pháp gradient Xét một hàm tơng tự f(x) biểu diễn đờng biên 1 -D nh trên Hình 2.24(a). Trong những bài toán điển hình, coi giá trị x 0 trong hình là một điểm biên. Một cách để xác định x 0 là tính đạo hàm bậc nhất f(x) hoặc đạo hàm bậc hai f(x). Các Hình 2.24(b) và 1.24(c) bi ểu diễn f(x) và f(x). Từ hình vẽ có thể xác định giá trị x 0 bằng cách tìm cực trị cục bộ (min hoặc max) của f(x) hoặc bằng cách tìm điểm f(x) đi qua giá trị không, ở đó f(x) đổi dấu. Trong tiết này ta chỉ thảo luận về những phơng pháp khai thác các đặc tính của f(x). Trong tiết sau, thảo luận về những phơng pháp khai thác các đặc tính của f(x). Ngoài việc xác định điểm biên x 0 , f(x) cũng có thể sử dụng để ớc lợng cờng độ và hớng của đờng biên. Nếu |f(x)| là lớn thì f(x) biến thiên rất nhanh đồng thời cờng độ cũng thay đổi nhanh. Nếu |f(x)| dơng thì f(x) tăng. Dựa trên những nhận xét trên suy ra một cách tiếp cận để phát hiện đờng biên là sử dụng hệ ở Hình 2.25. Trong hệ này trớc hết từ f(x) tính |f(x)|. Nếu |f(x)| lớn hơn m ột ngỡng nào đó thì nó có thể là một ứng viên điểm biên. Nếu tất cả các giá trị của x sao cho |f(x)| lớn hơn một ngỡng nào đó đợc phát hiện là điểm biên thì biên sẽ xuất hiện dới dạng một đờng chứ không phải một điểm. Để tránh vấn đề này ta y êu cầu thêm là |f(x)| có giá trị cực đại cục bộ ở những điểm biên. Cũng cần xác định xem f(x) là tăng hoặc giảm tại x=x 0 . Thông tin cần thiết chứa đựng trong f(x) tại x=x 0 . Việc chọn ngỡng phụ thuộc vào ứng dụng. Khi ngỡng tăng chỉ những giá trị củ a x ở đấy f(x) tăng nhanh mới đợc ghi lại làm ứng viên điểm biên. Việc chọn ngỡng tối u không phải dễ, cho nên phải thử mò mẫm một số lần. Cũng có thể chọn ngỡng theo phơng pháp thích nghi. Hệ trên Hình 2.25 dựa vào loại biên đặc biệt cho trong Hìn h 2.24(a), nhng vẫn có thể ứng dụng để phát hiện các loại biên khác. Dạng suy rộng f(x) vào trờng hợp hàm hai chiều f(x,y) là gr adient yx i y y,xf i x y,xf y,xf (2.6) trong đó x i là vector đơn vị theo hớng x, y i là vector đơn vị theo hớng y . Việc dựa vào f(x,y) để suy rộng hệ phát hiện đờng biên trên Hình 2.25 đợc biểu diễn trên Hình 2.26. Thoạt tiên tính biên độ của f(x,y) sau đó đem so sánh với một ngỡng để Chơng 2: cảI thiện ảnh 69 xác định các ứng viên điểm biên. Nếu tất cả giá trị (x,y) sao cho f(x,y) lớn hơn một ngỡng nào đó đều đợc phát hiện là những điểm biên thì biên sẽ xuất hiện dới dạng dải chứ không chỉ là đờng. Quá trình xác định ra một đờng biên từ một dải các ứng viên điểm biên đợc gọi là làm mảnh dải biên. Trong một algorit làm mảnh biên đơn giản, điểm biên đợc chọn bằng cách kiểm tra xem có phải f(x,y) là giá trị cực đại cục bộ, - ít ra cũng là cực đại trên một hớng. Thuộc tính f(x,y) đạt đợc giá trị cực đại cục bộ ít nhất là trên một hớng thờng đợc kiểm tra theo một vài hớng xác định. Trong phần lớn trờng hợp chỉ cần kiểm tra theo hớng nằm ngang và hớng thẳng đứng. Nếu f(x,y) là một giá trị cực đại cục bộ theo bất kỳ một hớng xác định nào tại điểm có khả năng là điểm biên, thì điểm này đợc coi là điểm biên. Một khó khăn với algorit làm mảnh dải biên đơn giản này là nó tạo một số đờng biên giả nhỏ trong vùng lân cận đờng biên mạnh. Một phơng pháp đơn giản để khử hầu hết những đờng biên giả nhỏ này là áp đặt thêm những điều kiện ràng buộc sau đây: Hình 2.24: (a) f(x); (b) f(x); (c) f(x) cho một loại biên 1 -D điển hình. X 0 X 0 X 0 X 0 (a) (c) (b) f(x) f(x) f(x) f(x) f(x) f(x) X 0 X 0 Chơng 2: cảI thiện ảnh 70 Hình 2.25: Hệ phát hiện biên 1 -D. Hình 2.26: Hệ phát hiện biên 2 -D. ( a) nếu f(x,y) có một giá trị cực đại cục bộ ở điểm (x 0 ,y 0 ) theo phơng nằm ngang chứ không phải theo phơng thẳng đứng, thì điểm (x 0 ,y 0 ) là điểm biên khi 00 00 yy,xx yy,xx y y,xf k x y,xf với k thờng chọn cỡ bằng 2 ( b) nếu f(x,y) có giá trị cực đại cục bộ ở điểm (x 0 ,y 0 ) theo phơng thẳng chứ không phải theo phơng nằm ngang, thì điểm (x 0 ,y 0 ) là điểm biên khi 00 00 yy,xx yy,xx x y,xf k y y,xf với k thờng chọn cỡ bằng 2 x 0 là điểm biên không không phải x 0 không phải là điểm biên x 0 không phải là điểm biên phải xf xf f(x) |f(x)| là cực đại cục bộ ? > Ngỡng tại x=x 0 ? . dx .d Mép biên (x 0 ,y 0 ) không phải là một điểm biên Phải không f(x,y) |f(x,y)| |f(x,y)| > Ngỡng tại (x 0 ,y 0 ) ? . [.] Làm mảnh biên Chơng 2: cảI thiện ảnh 71 Khi f(x,y) có giá trị cực đại cục bộ tai điểm (x 0 ,y 0 ) theo phơng nằm ngang, chứ không phải theo phơng thẳng đứng, điều kiện (a) yêu cầu tốc độ biến thiên của cờng độ theo phơng nằm ngang phải lớn hơn theo phơng thẳng đứng nhiều. Điều kiện (b) cũng nh điều kiện (a) chỉ cần hoán vị x với y. Hệ phát hiện đờng biên dựa trên hàm f(x,y) gọi là bộ dò biên vô hớng bởi vì những hàm nh vậy không định thiên theo một hớng đặc biệt nào. Nếu hệ dò biên dựa trên hàm có định thiên theo một hớng đặc biệt thì đó là một bộ phát hiện có hớng. Nếu ta sử dụng f(x,y)/ x thay cho f(x,y), chẳng hạn trong hệ Hình 2.26, hệ sẽ dò biên theo phơng thẳng đứng, mà không có đáp ứng với những biên trên phơng nằm ngang. Đối với một dãy hai chiều f(n 1 ,n 2 ), đạo hàm riêng f(x,y)/x và f(x,y)/y có thể đợc thay thế b ởi một hiệu, chẳng hạn f(x,y)/x có thể đợc thay thế bởi x y,xf [f(n 1 ,n 2 ) - f(n 1 -1,n 2 )]/T, (2.7a) [f(n 1 +1,n 2 ) - f(n 1 ,n 2 )]/T, (2.7b) hoặc [f(n 1 +1,n 2 ) - f(n 1 -1,n 2 )]/(2T). (2.7c) Vì các đạo hàm tính ra đợc so sánh với một ngỡng, và ngỡng này có thể điều chỉn h, nên có thể bỏ qua các hệ số tỷ lệ xích 1/T và 1/2T. Thờng lấy giá trị trung bình các biểu thức (2.7) trên nhiều mẫu để tăng độ tin cậy và tính liên tục của giá trị ớc lợng của f(x,y)/x. Những ví dụ về các giá trị ớc lợng f(x,y)/x đã cải thiện là x y,xf [f(n 1 +1, n 2 +1) - f(n 1 -1, n 2 +1)] + [f(n 1 +1, n 2 ) - f(n 1 -1, n 2 )] + [f(n 1 +1, n 2 -1) - f(n 1 -1, n 2 -1)] (2.8a) hoặc [f(n 1 +1, n 2 +1) - f(n 1 -1, n 2 +1)] + 2[f(n 1 +1, n 2 ) - f(n 1 -1, n 2 )] + [ f(n 1 +1,n 2 -1) - f(n 1 -1, n 2 -1)] (2.8b) Trong (2.8) đã bỏ các hệ số tỷ lệ xích. Thuật toán hiệu (differencing operation) trong (2.7) và (2.8) có thể đợc xem nh là tích chập của f(n 1 , n 2 ) với đáp ứng xung của bộ lọc h(n 1 , n 2 ). Những ví dụ đáp ứng xung có thể sử dụng để phát triển các bộ dò biên có hớng đợc trình bày Hình 2.27. Các bộ lọc h(n 1 , n 2 ) ở Hình 2.27(a) và 1.27(b) phát hiện đờng biên theo phơng Chơng 2: cảI thiện ảnh 72 thẳng đứng và phơng nằm ngang theo thứ tự có thể xem nh là các phép lấy xấp xỉ f(x,y)/x và f(x,y)/y. Các bộ lọc h(n 1 , n 2 ) ở Hình 2.27(c) và 1.27(d) phát hiện đờng biên theo hớng hai đờng chéo. Gradient f(x,y) trong (2.6) cũng có thể biểu diễn dới dạng các đạo hàm riêng bậc nhất trong hệ toạ độ quay. Khi quay một góc 45 độ thì hớng các đạo hàm riêng theo hớng hai đờng chéo. (-1) (1) (1) (1) (1) ( -1) (1) (-1) (1) (-1) (-1) (-1) (1) (1) (1) (1) ( -1) (-1) (1) ( -1) (-1) (-1) (-1) (-1) Hình 2.27: Đáp ứng xung của các bộ lọc có thể dùng cho phát hiện biên định hớn g. (a) Phát hiện biên theo phơng thẳng đứng; (b) Phát hiện biên theo phơng nằm ngang; (c) và (d) phát hiện biên theo phơng đờng chéo. n 1 n 1 n 2 n 1 n 1 n 2 n 2 h(n 1 ,n 2 ) h(n 1 ,n 2 ) n 2 (a) (b) (c) (d) Chơng 2: cảI thiện ảnh 73 Có thể triển khai các bộ phát hiện vô hớng bằng cách lấy xấp xỉ rời rạc (discrete approximation) f(x,y) trong hệ ở Hình 2.26. Từ (2.6) f(x,y)= 2 2 y y,xf x y,xf (2.9) Từ (2.9) có thể triển khai các bộ dò biên vô hớng bằng cách tổ hợp phi tuyến các số hạng dùng trong triển khai bộ dò biên có hớng. Một ví dụ về lấy xấp xỉ rời rạc của (2.9) có thể đem sử dụng cho bộ dò biên có hớng là f(x,y) 2 21 2 21 n,nfn,nf yx (2.10) trong đó f x (n 1 ,n 2 )= f(n 1 ,n 2 )h x (n 1 ,n 2 ) f y (n 1 ,n 2 ) = f(n 1 ,n 2 )h y (n 1 ,n 2 ) h x (n 1 ,n 2 ) và h y (n 1 ,n 2 ) đợc biểu diễn trên Hình 2.28. Phơng pháp đợc S obel phát triển dựa trên (2.10) với h x (n 1 ,n 2 ) và h y (n 1 ,n 2 ) trong Hình 2.28. Một ví dụ khác là phơng pháp do Roberts phát triển, cũng dựa trên (2.10) với h x (n 1 ,n 2 ) và h y (n 1 ,n 2 ) vẽ trên Hình 2.29. Tuỳ theo f(x,y) đợc tính xấp xỉ chính xác nh thế nào trong miền rời rạc, có thể phát triển nhiều phơng án khác nhau. Hình 2.30 là kết quả dò biên khi sử dụng bộ dò biên có hớng. Hình 2.30(a) là ảnh gốc 512x512 pixel. Hình 2.30(b) và 1.30(c) theo thứ tự cho kết quả bộ dò theo phơng thẳng đứng và phơng nằm ngang. Các bộ dò theo phơng thẳng đứng và phơng nằm ngang dựa vào h(n 1 ,n 2 ) trong Hình 2.27(a) và 1.27(b). Hình 2.31(a) và 1.31(b) là kết quả sử dụng các bộ dò biên Sobel và Robert đối với ảnh trong Hình 2.30(a). Cả hai đều thuộc lớp các bộ dò vô hớng và các phơng pháp xác định giá trị ngỡng và cũng nh kiểm tra tính cực đại cục bộ của biên đều là những phơng pháp đã sử dụng ở Hình 2. 30. Có nhiều phơng án khác nhau của những phơng pháp phát hiện đờng biên đã thảo luận trong tiết này. Ví dụ ta có thể sử dụng một tổ hợp phi tuyến khác của f(x,y)/x và f(x,y)/y thay cho 22 y/y,xfx/y,xf . 2: cảI thiện ảnh 67 Hình 2.23: Ví dụ về làm giảm nhiễu muối -tiêu bằng phép làm trơn pixel ngoại cỡ. ảnh trên Hình 2.22(a) đợc xử lý bằng phép làm trơn pixel ngoại cỡ với giá trị ngỡng là 50 . sự thay đổi cờng độ ảnh. Phát hiện đờng biên rất có lợi trong một số bối cảnh, chẳng hạn trong nhiệm vụ lý giải ảnh nh nhận dạng đối tợng, một bớc quan trọng là phân đoạn ảnh thành từng vùng. hệ phát hiện đờng biên trên Hình 2. 25 đợc biểu diễn trên Hình 2.26. Thoạt tiên tính biên độ của f(x,y) sau đó đem so sánh với một ngỡng để Chơng 2: cảI thiện ảnh 69 xác định các ứng viên điểm