Nhận diện hình ảnh_Thuật toán Phát hiện cạnh Canny
- 23/06/2018
- Robot
No Comments
1 Thuật toán Phát hiện cạnh Canny
Bước 1: Giảm nhiễu
Thông thường để giảm nhiễu sử dụng các bộ lọc làm mờ. Có thể sử dụng bộ lọc
Gaussian để tích chập với ảnh:
Bước 2: Tính độ lớn và góc của Gradient
Roberts, Prewitt, Sobel.Tính đạo hàm ( ) và ( ) theo chiều x và y của ảnh. Một số bộ lọc như:
Bộ lọc Sobel 3×3:
Bước 3: chặn không cực đại (Non-Maximum Surpression)
Bước này chỉ giữ lại những pixel thuộc cạnh mà có độ lớn gradient lớn nhất
Xem xét 3 pixel trong vùng 3 x 3 xung quanh pixel (x,y):
Nếu θ(x, y) = 00 thì (x+1, y), (x, y) và (x-1, y) được xem xét.
Nếu θ(x, y) = 900 thì (x, y+1), (x, y) và (x, y-1).
Nếu θ(x, y) = 450 thì (x+1, y+1), (x, y) và (x-1, y-1).
Nếu θ(x, y) = 1350 thì (x-1, y+1), (x, y) và (x+1, y-1).
Nếu pixel (x, y) có gradient lớn nhất của 3 pixel xem xét thì pixel đó là cạnh.
Bước 4: Ngưỡng Hysteresis (Hysteresis Thresholding)
Hysteresis sử dụng 2 ngưỡng, ngưỡng thigh và tlow. Pixel mà có độ lớn gradient D < tlow thì được loại ngay lập tức. Những pixel tlow < D < thigh được giữ lại nếu là một cạnh liên tục với những pixel có độ lớn gradient D > thigh.
2 Cài đặt thuật toán phát hiện cạnh bằng OpenCV
Xây dựng class Canny như sau:
class Canny
{
protected:
IplImage *_srcImg, *_destImg;
int _width, _height;
int _lowThreshold, _maxThreshold;
public:
Canny(int low, int max)
{
_srcImg = NULL;
_destImg = NULL;
_lowThreshold = low;
_maxThreshold = max;
}
int CannyEdgeDetection(char *path);
};
Hàm CannyEdgedetection:
int Canny::CannyEdgeDetection(char *path)
{
_srcImg = cvLoadImage(path);
if(_srcImg == NULL)
return 0; cvNamedWindow(Image); cvShowImage(Image, _srcImg);
IplImage *grayImg, *blurImg;
grayImg = cvCreateImage(cvGetSize(_srcImg), IPL_DEPTH_8U, 1);
cvCvtColor(_srcImg, grayImg, CV_BGR2GRAY); cvNamedWindow(Gray Image); cvShowImage(Gray Image, grayImg);
blurImg = cvCreateImage(cvGetSize(_srcImg), IPL_DEPTH_8U, 1); cvSmooth(grayImg, blurImg, CV_GAUSSIAN, 5, 5); cvNamedWindow(Blur Image);
cvShowImage(Blur Image, blurImg);
_destImg = cvCreateImage(cvGetSize(_srcImg), IPL_DEPTH_8U, 1);
cvCanny(blurImg, _destImg, _lowThreshold, _maxThreshold, 3);
cvNamedWindow(Canny Edge Detection); cvShowImage(Canny Edge Detection,_destImg); return 1;
}
3 Bài tập
Viết chương trình phát hiện biên cạnh dựa vào thuật toán Canny như trong mục 1.
Tài liệu tham khảo
[1] Canny, J., A Computational Approach To Edge Detection, IEEE Trans. Pattern
Analysis and Machine Intelligence, 8(6):679698, 1986.
- Google+
Sản phẩm được quan tâm
Giới thiệu về chúng tôi
Nhận bài viết mới
Các bài viết chia sẻ đến cộng đồng rất chât lượng, mang lại rất nhiều kiến thức mới. Đừng bỏ lỡ bất kỳ bài viết nào của chung tối, hãy đăng ký để nhận bài viết mới qua Mail của bạn
Liên hệ ngay bây giờ
Đăng ký để không bỏ lỡ bài viết nào!
If you are a human and are seeing this field, please leave it blank.
Fields marked with an * are required
Bài mới
- Giáo trình Robocon
- Giới thiệu các loại board Esp8266 dành cho IoT và thiết lập cơ bản cho người mới học
- Hướng dẫn sử dụng LoraEasyV1
- Tài liệu tự học Python tiếng Việt cho người mới bắt đầu
- Tương lai của kết nối IoT (Internet of Things) tiềm năng và sự đa dạng
- HƯỚNG DẪN LẤP RÁP XE MÔ HÌNH 4 BÁNH
- HƯỚNG DẪN LẮP RÁP XE CHẠY BẰNG NĂNG LƯỢNG MẶT TRỜI
Danh mục
Danh mụcMore from our blog
See all postsGiáo trình Robocon
Robocon đã được tổ chức từ năm 2002.Cuộc thi này đã cuốn
Continue reading
Giới thiệu các loại board Esp8266 dành cho IoT và thiết lập cơ bản cho người mới học
Phần này là chúng ta sẽ thiết lập chip ESP8266. Ta sẽ
Continue reading
Hướng dẫn sử dụng LoraEasyV1
LoRa sử dụng kỹ thuật điều chế gọi là Chirp Spread Spectrum.
Continue reading
Tài liệu tự học Python tiếng Việt cho người mới bắt đầu
Hiện nay, Python là một trong những ngôn ngữ lập trìnhđang được
Continue reading
Tương lai của kết nối IoT (Internet of Things) tiềm năng và sự đa dạng
Với công nghệ kết nối mọi thành phần đã mở ra các
Continue reading
HƯỚNG DẪN LẤP RÁP XE MÔ HÌNH 4 BÁNH
1.Các bộ phận của trò chơi: 2.Các bước lắp ráp: Bước 1:
Continue reading
HƯỚNG DẪN LẮP RÁP XE CHẠY BẰNG NĂNG LƯỢNG MẶT TRỜI
1.Các bộ phận của trò chơi: 2.Các bước lắp ráp: Bước 1:
Continue reading
HƯỚNG DẪN LẮP RÁP MÔ HÌNH XE CHẠY BẰNG SỨC GIÓ
1.Các bộ phận của trò chơi: 2.Các bước lắp ráp: Bước 1:
Continue reading
Prev. Post
All Posts
Next Post
No Comments
Leave a Comment cancel
Save my name, email, and website in this browser for the next time I comment.