Thuật toán phát hiện cạnh Canny

Một phần của tài liệu Ứng dụng dobot magician trong hệ thống phân loại sản phẩm (Trang 28 - 29)

Hình 2. 11 Xử lý cạnh dùng hàm Canny

Trong hình ảnh, thường tồn tại các thành phần chính đó là vùng trơn, góc/cạnh và nhiễu. Một điểm ảnh có thể được coi là điểm biên nếu như ở đó có sự thay đổi nhanh hoặc thay đổi đột ngột về mức xám. 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. Tập hợp các điểm biên liên tiếp tạo thành đường biên ảnh. Cạnh trong ảnh (đường biên ảnh) mang đặc trưng quan trọng thường là thuộc đối tượng ảnh, là những điểm mà tại đó cường độ sáng, bề mặt, màu sắc của ảnh liên tục có bước nhảy hoặc biến thiên nhanh (thay đổi đột ngột). Phát hiện biên là một công cụ quan trọng trong xử lý ảnh số, nó làm nổi bật lên những điểm ảnh mà tại đó có sự biến đổi lớn về giá trị mức sáng so với các điểm xung quanh, thực chất là tìm các đường bao quanh của đối tượng trong ảnh. Ngoài ra, nó làm giảm một cách đáng kể khối lượng dữ liệu cần tính toán do chỉ giữ lại những thông tin cần thiết đồng thời vẫn bảo toàn được những cấu trúc quan trọng trong ảnh. Để có thể phát hiện đường biên trong ảnh, giải thuật Canny là phương pháp phổ biến nhất do ít bị tác động bởi nhiễu, tạo ra được các đường biên mỏng, đều nhau và có khả năng phát hiện được cái đường biên yếu. Thuật toán phát hiện biên Canny được phát triển bởi John F. Canny tại phòng thí nghiệm MIT (Mỹ) vào năm 1986. Nó được sử dụng rộng rãi trong ngành công nghiệp xử lý ảnh hiện nay với tỉ lệ sai sót thấp (tìm ra tất cả các biên mà không biên nào bị bỏ sót), các điểm biên được xác định chính xác (khoảng cách giữa các điểm biên được tìm thấy và biên trong thực tế phải càng nhỏ càng tốt) và đáp ứng điểm đơn biên (không được phép chỉ ra nhiều biên trong khi chỉ có một biên tồn tại). John F. Canny đã giả thiết rằng một phương

12

Khoa ĐT CLC – ĐHSPKT TP.HCM

pháp tìm biên thực tế là một bộ lọc nhân xoắn có khả năng làm mịn nhiễu và định vị được cạnh. Công thức hàm Canny được viết trên ngôn ngữ lập trình Python là:

cv2.Canny(image, lower, upper)

trong đó, image là ảnh đầu vào mà ta cần xử lý, lowerupper lần lượt là các ngưỡng số nguyên do ta thiết lập, sẽ được trình bày trong phần lọc ngưỡng. Phát hiện cạnh Canny chỉ hoạt động trên nền ảnh xám vì vậy trước khi áp dụng giải thuật này ta cần phải chuyển đổi ảnh màu sang ảnh xám. Thuật toán Canny bao gồm 5 bước:

Một phần của tài liệu Ứng dụng dobot magician trong hệ thống phân loại sản phẩm (Trang 28 - 29)