Cv2.canny là gì

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

Cv2.canny là gì

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:

Cv2.canny là gì

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:

Cv2.canny là gì

Cv2.canny là gì

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;
}

Cv2.canny là gì

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.

  • Facebook
  • Twitter
  • Google+
  • Pinterest
  • LinkedIn

Sản phẩm được quan tâm

Cv2.canny là gì

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ục



Cv2.canny là gì

More from our blog

See all posts

Giá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

Cv2.canny là gì

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

Cv2.canny là gì

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

Cv2.canny là gì

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

Cv2.canny là gì

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

Cv2.canny là gì

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

Cv2.canny là gì

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.