Ultralytics YOLO27: Đăng ký vào danh sách chờ.
Cấp phép YOLO
Quay lại Bảng thuật ngữ Ultralytics

Canny Edge Detection

Phát hiện biên Canny là thuật toán nhiều giai đoạn giúp giảm nhiễu, phát hiện những thay đổi độ sáng đột ngột và tạo bản đồ biên mảnh cho thị giác máy tính.

Phát hiện biên Canny là thuật toán xử lý ảnh nhiều giai đoạn, xác định những thay đổi độ sáng đột ngột rồi chuyển chúng thành bản đồ biên nhị phân mảnh. Thuật toán giảm nhiễu, định vị các điểm chuyển tiếp cường độ và liên kết những pixel biên đáng tin cậy thành các đường bao. Trong thị giác máy tính, các đường bao này mô tả cấu trúc ảnh để phân tích hình dạng và đo lường.

John Canny phát triển phương pháp này vào năm 1983 và trình bày trong bài báo năm 1986, Phương pháp tính toán để phát hiện biên. Thiết kế của phương pháp cân bằng ba mục tiêu: phát hiện biên thực, định vị biên chính xác và tạo một phản hồi cho mỗi biên. "Bộ phát hiện biên Canny" là tên gọi khác của thuật toán.

Cách hoạt động của phát hiện biên Canny#

Thuật toán kết hợp tiền xử lý dữ liệu với lọc và phân tích tính liên thông. Năm giai đoạn của thuật toán đảm nhiệm các chức năng riêng:

  • Giảm nhiễu: Làm trơn Gaussian lấy trung bình các pixel lân cận với trọng số phụ thuộc vào khoảng cách, nhờ đó triệt tiêu những dao động có thể tạo ra biên không mong muốn.
  • Ước lượng gradient: Đạo hàm theo chiều ngang và chiều dọc đo tốc độ thay đổi độ sáng. Kết hợp hai đạo hàm cho biết độ mạnh của biên và hướng vuông góc với ranh giới. OpenCV dùng đạo hàm Sobel ở giai đoạn này.
  • Làm mảnh biên: Khử cực đại cục bộ chỉ giữ lại các đỉnh gradient theo hướng gradient, tạo ra các đường gờ hẹp thay vì các dải rộng.
  • Ngưỡng kép: Ngưỡng cao xác định biên mạnh; ngưỡng thấp loại bỏ các phản hồi yếu. Pixel nằm giữa hai ngưỡng được xem là ứng viên.
  • Liên kết bằng hysteresis: Pixel ứng viên được giữ lại nếu nối với một biên mạnh thông qua các pixel ứng viên khác. Các pixel ứng viên cô lập sẽ bị loại bỏ.

Ngưỡng, làm mượt và các chế độ lỗi#

Các ngưỡng tác động lên độ mạnh của gradient, thay vì độ sáng thô hoặc độ tin cậy của model. Giảm ngưỡng sẽ giữ lại nhiều chi tiết và nhiễu hơn; tăng ngưỡng sẽ loại bỏ các đường biên yếu. Tăng ngưỡng cao cũng làm giảm số điểm biên mạnh có thể dùng để liên kết bằng thuật toán trễ.

Mức độ làm mượt Gaussian kiểm soát một sự đánh đổi riêng. Làm mượt nhiều hơn sẽ khử nhiễu nhưng loại bỏ các cấu trúc nhỏ. Trong ví dụ hình vuông nhiễu của scikit-image, thay đổi độ lệch chuẩn Gaussian sẽ làm thay đổi lượng nhiễu còn sót lại quanh hình vuông.

Trong kiểm tra vết nứt, bề mặt bê tông gồ ghề tạo ra các cạnh kết cấu không mong muốn và đường viền vết nứt không liền mạch. Tăng ngưỡng sẽ loại bỏ một số cạnh giả, đồng thời làm mất các đoạn vết nứt thực sự.

Sobel ước tính các đạo hàm cường độ; Canny kết hợp ước tính gradient với làm mượt, làm mảnh và lựa chọn dựa trên tính liên thông. Giai đoạn làm mảnh của Canny so sánh các pixel lân cận, trong khi NMS trong phát hiện đối tượng so sánh các hộp dự đoán chồng lấp.

Phát hiện cạnh Canny bằng Python#

Cài đặt các dependency bằng pip install opencv-python numpy. Ví dụ này dùng OpenCV để lưu bản đồ cạnh của ảnh mẫu xe buýt:

from urllib.request import urlopen

import cv2
import numpy as np

with urlopen("https://ultralytics.com/images/bus.jpg") as response:
    encoded = np.frombuffer(response.read(), dtype=np.uint8)
gray = cv2.imdecode(encoded, cv2.IMREAD_GRAYSCALE)

# Làm mượt ảnh trước khi tính các gradient cường độ.
smoothed = cv2.GaussianBlur(gray, (5, 5), 1.4)
edges = cv2.Canny(smoothed, 50, 150, L2gradient=True)
cv2.imwrite("canny_edges.png", edges)

PNG đã lưu hiển thị các cạnh được giữ lại bằng màu trắng trên nền đen. Trong quy trình phát hiện cạnh của OpenCV, đối số thứ hai và thứ ba của Canny xác định ngưỡng thấp và ngưỡng cao. L2gradient=True sử dụng độ lớn gradient Euclid; mặc định sử dụng tổng các đạo hàm ngang và dọc lấy giá trị tuyệt đối. Các lựa chọn này làm thay đổi giá trị gradient và do đó ảnh hưởng đến cách hoạt động của ngưỡng.

Canny hỗ trợ trích xuất đặc trưng hình học: ví dụ phát hiện đường thẳng của scikit-image áp dụng phương pháp này lên ảnh chụp người quay phim, sau đó biến đổi Hough xác suất trích xuất các đoạn thẳng. Canny cung cấp các pixel cạnh; phép bỏ phiếu Hough nhóm chúng thành các đường thẳng. Phát hiện đối tượng gán danh mục và hộp, trong khi phân đoạn đối tượng gán pixel cho từng đối tượng.

Phân đoạn của YOLO26 từ Ultralytics trả về các mask để tách riêng đối tượng, qua đó có thể chọn các vùng ảnh để xử lý Canny riêng. Phương pháp này kết hợp lựa chọn đối tượng bằng mô hình học được với trích xuất đường biên cổ điển.

Trong AI tạo sinh, ControlNet sử dụng bản đồ Canny làm điều kiện không gian cho model khuếch tán. Triển khai có điều kiện Canny hướng dẫn quá trình tạo ảnh bằng Stable Diffusion 1.5, sử dụng các đường nét trích xuất cùng với prompt văn bản.

Khám phá các giải pháp

Thị giác máy tính trong thể thao

Thị giác máy tính trong thể thao

Khám phá cách Ultralytics YOLO thúc đẩy thị giác máy tính trong thể thao với khả năng theo dõi cầu thủ và bóng, phân tích hiệu suất, cung cấp thông tin chuyên sâu cho huấn luyện và hỗ trợ phục hồi cho vận động viên.
Tìm hiểu thêm
Thị giác máy tính cho ảnh hàng không

Thị giác máy tính cho ảnh hàng không

Chuyển hình ảnh từ drone và ảnh hàng không thành thông tin chuyên sâu theo thời gian thực cho nông nghiệp, nuôi trồng thủy sản, bảo tồn và phân tích không gian địa lý với Ultralytics YOLO.
Tìm hiểu thêm
Thị giác máy tính trong hàng không vũ trụ

Thị giác máy tính trong hàng không vũ trụ

Ứng dụng computer vision trong ngành hàng không vũ trụ với Ultralytics YOLO cho kiểm tra máy bay, phát hiện dị vật trên đường băng (FOD), vận hành mặt đất tại sân bay và phát hiện lỗi vật liệu composite.
Tìm hiểu thêm
Computer vision trong lĩnh vực an ninh

Computer vision trong lĩnh vực an ninh

Bảo vệ mọi địa điểm bằng model Ultralytics YOLO. Vision AI hỗ trợ giám sát vành đai, phát hiện mối đe dọa, nhận dạng biển số và an toàn nơi làm việc.
Tìm hiểu thêm
Computer vision trong robotics

Computer vision trong robotics

Tăng cường năng lực cho máy móc thông minh bằng model Ultralytics YOLO. Vision AI trong lĩnh vực robotics hỗ trợ điều hướng tự động, nhận thức, theo dõi đối tượng và điều khiển theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong logistics

Thị giác máy tính trong logistics

Tinh giản hoạt động logistics với các model Ultralytics YOLO. Vision AI hỗ trợ kiểm tra kiện hàng, phân loại, theo dõi phương tiện và giám sát an toàn kho hàng theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong bán lẻ

Thị giác máy tính trong bán lẻ

Định hình lại hoạt động bán lẻ với các model Ultralytics YOLO. Vision AI hỗ trợ theo dõi hàng tồn kho, giám sát kệ hàng, quản lý hàng chờ và phân tích khách hàng thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong chăm sóc sức khỏe

Thị giác máy tính trong chăm sóc sức khỏe

Xây dựng các giải pháp chăm sóc sức khỏe với model Ultralytics YOLO. Vision AI trong chăm sóc sức khỏe hỗ trợ xử lý hình ảnh y tế nhanh hơn, chẩn đoán thông minh hơn và theo dõi bệnh nhân.
Tìm hiểu thêm
Thị giác máy tính trong sản xuất

Thị giác máy tính trong sản xuất

Tối ưu hóa sản xuất bằng các model Ultralytics YOLO. Vision AI thúc đẩy kiểm soát chất lượng, phát hiện lỗi, tuân thủ PPE và tự động hóa dây chuyền lắp ráp.
Tìm hiểu thêm
Thị giác máy tính trong ngành ô tô

Thị giác máy tính trong ngành ô tô

Ứng dụng thị giác máy tính trong ngành ô tô với các model Ultralytics YOLO. Vision AI nâng cao an toàn giao thông, hỗ trợ người lái và tự động hóa phương tiện để tạo nên những tuyến đường thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong nông nghiệp

Thị giác máy tính trong nông nghiệp

Ứng dụng AI thị giác vào nông nghiệp thông minh với các model Ultralytics YOLO. Hỗ trợ giám sát cây trồng, theo dõi vật nuôi và canh tác chính xác để nâng cao năng suất một cách thông minh hơn.
Tìm hiểu thêm

Hãy cùng nhau kiến tạo tương lai của AI!

Bắt đầu hành trình hướng đến tương lai của machine learning