Những yếu tố nào tôi nên xem xét trong việc lựa chọn một thuật toán phát hiện cạnh?


33

Tôi đã tìm hiểu về một số thuật toán phát hiện cạnh, bao gồm các thuật toán như phương pháp Sobel, Laplacian và Canny. Dường như đối với tôi, máy dò cạnh phổ biến nhất là máy dò cạnh Canny, nhưng có trường hợp nào đây không phải là thuật toán tối ưu để sử dụng không? Làm thế nào tôi có thể quyết định sử dụng thuật toán nào? Cảm ơn!


7
Bạn đang phát hiện điều gì?
endolith

Câu trả lời:


29

Có rất nhiều khả năng phát hiện cạnh, nhưng 3 ví dụ bạn đề cập xảy ra thuộc 3 loại khác nhau.

Sobel

Điều này gần đúng một đạo hàm bậc nhất. Cung cấp extrema tại các vị trí gradient, 0 trong đó không có gradient. Trong 1D, nó là = [101]

  • cạnh mịn => tối thiểu cục bộ hoặc tối đa, tùy thuộc vào tín hiệu tăng hoặc giảm.
  • Dòng 1 pixel => 0 tại chính dòng đó, với cực trị cục bộ (có dấu khác nhau) ngay bên cạnh. Trong 1D, nó là = [121]

Có những lựa chọn thay thế khác cho Sobel, có +/- các đặc điểm tương tự. Trên trang Roberts Cross trên wikipedia bạn có thể tìm thấy một so sánh của một vài trong số họ.

Laplace

Điều này gần đúng một đạo hàm bậc hai. Cho 0 tại các vị trí gradient và cũng 0 khi không có độ dốc. Nó cung cấp cho extrema nơi một gradient (dài hơn) bắt đầu hoặc dừng lại.

  • cạnh mịn => 0 dọc theo cạnh, đùn cục bộ tại điểm bắt đầu / dừng của cạnh.
  • Dòng 1 pixel => một cực "kép" tại dòng, với điểm cực "bình thường" với một dấu hiệu khác ngay bên cạnh nó

Hiệu quả của 2 cái này trên các loại cạnh khác nhau có thể được nhìn thấy rõ nhất bằng mắt thường:

So sánh Sobel vs Laplace

Khôn ngoan

Đây không phải là một toán tử đơn giản, nhưng là một cách tiếp cận nhiều bước, sử dụng Sobel như một trong những bước. Trong đó Sobel và Laplace cung cấp cho bạn một kết quả thang độ xám / dấu phẩy động mà bạn cần tự vượt qua, thuật toán Canny có ngưỡng thông minh là một trong những bước của nó, vì vậy bạn chỉ nhận được kết quả có / không nhị phân. Ngoài ra, trên một cạnh mịn, bạn có thể sẽ tìm thấy chỉ 1 dòng ở đâu đó ở giữa gradient.


18

Trong khi Sobel và Laplacian chỉ đơn giản là các bộ lọc, Canny còn đi xa hơn thế theo hai cách.

Đầu tiên, nó không triệt tiêu tối đa để loại bỏ nhiễu do tất cả các loại đối tượng và độ dốc màu trong ảnh tạo ra. Thứ hai, nó thực sự bao gồm một bước cho phép bạn phân biệt giữa các hướng cạnh khác nhau và để điền vào các điểm còn thiếu của một dòng.

Nói cách khác, máy dò cạnh Canny thuộc một lớp hoàn toàn khác với Sobel và Laplacian. Nó thông minh hơn nhiều ở chỗ nó bao gồm cả một loạt xử lý bài trong khi Sobel và Laplacian chỉ đơn giản là các đầu ra bộ lọc thông cao theo sau là ngưỡng nhị phân tuyến tính.


Có phiên bản 1-D của canny về vấn đề này không? Nó chỉ đơn giản là một ứng dụng chuyển tiếp thẳng của phiên bản 2 chiều?
Spacey

9

Hai quyết định quan trọng nhất khi cố gắng phát hiện các cạnh là, đối với tôi thường là:

  1. Tôi có thể phân đoạn các đối tượng thay vào đó, và sau đó sử dụng toán tử hình thái để tìm cạnh của hình ảnh nhị phân (phân đoạn) không? Với dữ liệu ồn ào, điều này có xu hướng mạnh mẽ hơn.

  2. Tôi nên sử dụng bộ lọc làm mịn bảo tồn cạnh nào để giảm nhiễu hình ảnh? Bộ lọc cạnh dựa trên sự khác biệt, sẽ chịu đựng dữ liệu ồn ào. Sự lựa chọn đơn giản nhất là bộ lọc trung vị, nhưng bộ lọc khuếch tán không đẳng hướng hoặc phương tiện không tiêu điểm sẽ cung cấp hiệu suất tốt hơn với chi phí có nhiều tham số để điều chỉnh.

Để tự phát hiện cạnh, tôi không thể nghĩ ra một lý do chính đáng để không sử dụng Canny.


7

Phương pháp tiếp cận SUSAN

Một cách tiếp cận khác để phát hiện cạnh và góc là cách tiếp cận SUSAN .

Trong phương pháp này, thay vì xấp xỉ đạo hàm, một cách tiếp cận gần đúng tích phân được sử dụng. Điều này có lợi thế là không chỉ có khả năng phát hiện các cạnh mà còn có thể phát hiện "các tính năng hai chiều" (tức là các góc).

Một ưu điểm khác của phương pháp gần đúng tích phân là nhiễu có xu hướng ít ảnh hưởng đến kết quả.


6

Canny mang lại một hình ảnh nhị phân và phụ thuộc vào các ngưỡng được đưa ra bên ngoài (phụ thuộc vào hình ảnh / ứng dụng).
Các bộ lọc dựa trên kết hợp mang lại hình ảnh "cường độ cạnh". Điều này rất hữu ích nếu trọng lượng cạnh hoặc sức mạnh là quan trọng (ví dụ: trong Hough Transform có trọng số).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.