Professional Documents
Culture Documents
Chuong 3 Thigiacmaytinh
Chuong 3 Thigiacmaytinh
CHƯƠNG 3:
CÁC PHƯƠNG PHÁP PHÁT HIỆN BIÊN
TRONG ẢNH
Đặng Văn Nam
dangvannam@humg.edu.vn
Nội dung chương 3
3
Giới thiệu
• Bài toán phát hiện cạnh, biên (Edge Detection) được ứng dụng rất nhiều trong
các bài toán về thị giác máy tính. Như trong các bài toán về trích xuất thông tin,
nhận dạng đối tượng….
• Biên là nơi mã hóa nhiều thông tin ngữ nghĩa (semantics information) và hình
dạng (shape) trong một bức ảnh.
4
Giới thiệu
• Điểm biên: Một điểm ảnh được coi là điểm biên nếu có sự thay đổi nhanh
hoặc đột ngột về mức xám (hoặc màu)
v Ví dụ: trong ảnh nhị phân, điểm đen được coi là điểm biên nếu lân cận của
nó có ít nhất một điểm trắng.
• Đường biên còn được gọi là đường bao (boundary): là tập hợp các điểm
biên liên tiếp.
5
Giới thiệu
6
Giới thiệu
7
Giới thiệu
8
Giới thiệu
Chuẩn đoán y tế
9
Giới thiệu
10
Một số loại biên trong ảnh (Types of Edges)
11
2.Phương pháp phát hiện biên
12
2. Phương pháp phát hiện biên
• Theo toán học, điểm ảnh có sự biến đổi mức xám u(x) một cách đột
ngột
14
Phát hiện biên gradient
• Để đơn giản tính toán, tính toán bằng hx,hy
– Một số cặp mặt nạ tiêu biểu như Prewitt, Sobel, Robert đẳng hướng
(Isometric)
– gx, gy: Gradient theo hai hướng x,y
é ¶f ù
é g x ù ê ¶x ú
Edge normal: Ñf º grad ( f ) = ê ú = ê ú G (m, n) = Gx2 (m, n) + G y2 (m, n)
ë g y û ê ¶f ú
êë ¶y úû
Edge unit normal: Ñf / mag(Ñf )
In practice,sometimes the magnitude is approximated by
¶f ¶f æ ¶f ¶f ö
mag(Ñf )= + or mag(Ñf )=max ç | |,| | ÷
¶x ¶y è ¶x ¶y ø 15
Phát hiện biên gradient
18
Gradient base (1st order)
3.1 Sobel edge detection
20
Sobel edge detection
Ø Bước 1: Tính I ⊗ Hx và I ⊗ Hy
Ø Bước 2: Tính I ⊗ Hx + I ⊗ Hy
Sobel edge detection
Sobel edge detection
• Bộ lọc sobel theo hướng x:
Sobel edge detection
• Bộ lọc sobel theo hướng y:
Sobel edge detection
• Sử dụng phương thức Sobel của OpenCV:
cv2.Sobel(original_image,ddepth,xorder,yorder,ksize)
Trong đó:
1. original_image: Ảnh gốc (ảnh xám)
2. ddepth: Độ sâu (-1 | cv2.CV_64F)
3. xorder: Cạnh theo trục x (=1)
4. yorder: Cạnh theo trục y (=1)
5. ksize: kích thước kernel sobel (3, 5, 7..)
Sobel edge detection
• Sử dụng phương thức Sobel của OpenCV:
cv2.Sobel(original_image,ddepth,xorder,yorder,ksize)
Thực hành 3.1
27
Thực hành 3.1
28
3.2 Prewitt edge detection
29
Prewitt edge detection
• Thực hiện tương tự như với Sobel, Bộ lọc Prewitt theo hướng x, y
Ø Bước 1: Tính I ⊗ Hx và I ⊗ Hy
Ø Bước 2: Tính I ⊗ Hx + I ⊗ Hy
Prewitt edge detection
3.3 Roberts edge detection
32
Roberts edge detection
• Roberts sử dung bộ lọc có kích thước 2x2, do
Lawrence Roberts đề xuất vào năm 1963. Đây là
một trong những bộ phát hiện cạnh đầu tiên.
Thực hành 3.2
34
Thực hành 3.2
35
Thực hành 3.2
36
4. Laplacian based (2nd order)
37
4.1 Laplace edge detection
38
Laplace edge detection
• Để khắc phục hạn chế và nhược điểm của phương pháp Gradient, trong đó sử dụng đạo
hàm riêng bậc nhất người ta nghĩ đến việc sử dụng đạo hàm riêng bậc 2 hay toán tử
Laplace.
• Phương pháp dò biên theo toán tử Laplace hiệu quả hơn phương pháp toán tử Gradient
trong trường hợp mực xám biến đổi chậm, miền chuyển đổi mức xám có độ trải rộng.
• Toán tử Laplace dùng nhiều kiểu mặt nạ khác nhau để xấp xỉ rời rạc đạo hàm bậc hai. Ba
kiểu mặt nạ hay dùng với toán tử Laplace.
Laplace edge detection
• Giả sử có ảnh I, khi đó tìm biên ảnh bằng cách lấy đạo hàm bậc 2 của ảnh I, nghĩa là nhân
tích chập ảnh I với một trong 3 mặt nạ.
Laplace edge detection
Laplace edge detection
• Sử dụng phương thức Laplacian của OpenCV:
cv2.Laplacian(original_image,ddepth, ksize)
Trong đó:
1. original_image: Ảnh gốc (ảnh xám)
2. ddepth: Độ sâu (-1 | cv2.CV_64F)
3. ksize: kích thước kernel (3, 5, 7..)
Thực hành 3.3
43
Thực hành 3.3
44
Thực hành 3.3
45
4.2 Canny edge detection
46
Canny edge detection
51
Thực hành 3.4
52
53