Thuật toán Canny là một trong những thuật toán phổ biến nhất được sử dụng trong xử lý ảnh để phát hiện cạnh. Nó được phát triển bởi John F. Canny vào năm 1986 và nhanh chóng trở thành một công cụ quan trọng trong thị giác máy tính và xử lý ảnh. Thuật toán Canny bao gồm nhiều bước:
1. Làm mịn ảnh (Smoothing): Sử dụng bộ lọc Gaussian để giảm nhiễu trong ảnh.
2. Tính độ dốc và hướng gradient: Sử dụng bộ lọc Sobel hoặc Prewitt để tính độ dốc của ảnh theo chiều ngang và chiều dọc. Từ đó, tính được độ dốc và hướng gradient.
3. Chuẩn hóa gradient: Chuẩn hóa độ dốc để có giá trị gradient nằm trong khoảng [0, 1].
4. Phát hiện cạnh: Sử dụng hysteresis thresholding để phát hiện cạnh và loại bỏ các pixel không quan trọng.
Dưới đây là một ví dụ về cách thực hiện thuật toán Canny trong ngôn ngữ C++ sử dụng thư viện OpenCV
Trong ví dụ trên, cv::Sobel được sử dụng để tính độ dốc theo chiều ngang và chiều dọc, cv::convertScaleAbs để chuẩn hóa gradient, và cv::Canny để thực hiện phát hiện cạnh. Hysteresis thresholding được sử dụng để loại bỏ các điểm không chắc chắn là cạnh. Hãy nhớ rằng bạn cần cài đặt thư viện OpenCV để sử dụng mã nguồn trên.
1. Làm mịn ảnh (Smoothing): Sử dụng bộ lọc Gaussian để giảm nhiễu trong ảnh.
2. Tính độ dốc và hướng gradient: Sử dụng bộ lọc Sobel hoặc Prewitt để tính độ dốc của ảnh theo chiều ngang và chiều dọc. Từ đó, tính được độ dốc và hướng gradient.
3. Chuẩn hóa gradient: Chuẩn hóa độ dốc để có giá trị gradient nằm trong khoảng [0, 1].
4. Phát hiện cạnh: Sử dụng hysteresis thresholding để phát hiện cạnh và loại bỏ các pixel không quan trọng.
Dưới đây là một ví dụ về cách thực hiện thuật toán Canny trong ngôn ngữ C++ sử dụng thư viện OpenCV
Trong ví dụ trên, cv::Sobel được sử dụng để tính độ dốc theo chiều ngang và chiều dọc, cv::convertScaleAbs để chuẩn hóa gradient, và cv::Canny để thực hiện phát hiện cạnh. Hysteresis thresholding được sử dụng để loại bỏ các điểm không chắc chắn là cạnh. Hãy nhớ rằng bạn cần cài đặt thư viện OpenCV để sử dụng mã nguồn trên.
Sửa lần cuối: