2012-11-22 41 views
6

Tôi mới dùng opencv (trong C++) và tôi đang cố triển khai dò tìm đường.Phát hiện đường dây OpenCV nói chung

Tôi có một hình ảnh với một vài dòng và tôi đang cố gắng xác định khoảng cách giữa các dòng. Tôi biết có Hough, Canny và vân vân nhưng làm thế nào tôi có thể có được tọa độ của các dòng khác nhau để tính toán khoảng cách giữa các dòng? Tôi có nên sử dụng chức năng đường viền opencv hoặc có cách nào tốt hơn? Tôi không cần mẫu mã hoàn chỉnh, nhưng bất cứ ai có thể cho tôi biết cách tốt nhất để hoàn thành công việc?

+0

Bạn không cần phải thêm chữ ký vào bài đăng của mình - thẻ người dùng của bạn được thêm tự động. – Artemix

Trả lời

13

Phát hiện tuyến thường dẫn đến việc sử dụng biến đổi Hough, dò tìm bên hông và phát hiện đường viền chỉ hoạt động như bộ xử lý thuận tiện nếu cần.

Nếu bạn có đường thẳng song song, sử dụng

void HoughLines(InputArray image, OutputArray lines, double rho, double theta, int threshold, double srn=0, double stn=0) 

cho dòng phát hiện nơi tham số thứ hai sẽ chứa các phát hiện:

dòng - vector đầu ra của dòng. Mỗi dòng được biểu thị bằng một vector hai phần tử (ρ, θ) là . ρ là khoảng cách từ tọa độ nguồn gốc (0, 0) (góc trên cùng bên trái của hình ảnh). θ là góc quay ở radian (0 ∼ đường thẳng đứng, π/2 ∼ đường ngang).
[opencv2refman.pdf]

Điều này có nghĩa, mà khoảng cách giữa hai dòng nên abs(rho1-rho2), mà khoảng cách khác biệt tuyệt đối giữa các giá trị điểm ảnh trong cột đầu tiên của lines. (Lưu ý: Phương pháp nên CV_HOUGH_STANDARD đây!)

Đối dòng không song song bạn phải xác định những gì bạn nghĩ là một khoảng cách, nhưng sau đó OpenCV vẫn có thể cung cấp cho bạn với các tọa độ của các điểm cuối của mỗi dòng phát hiện.
Bạn chỉ cần sử dụng method = CV_HOUGH_PROBABILISTIC.

CV_HOUGH_PROBABILISTIC xác suất Biến đổi bột (hiệu quả hơn trong trường hợp nếu hình chứa một vài đoạn thẳng dài). Nó trả về các đoạn thẳng chứ không phải toàn bộ dòng. Mỗi đoạn là được biểu thị bằng điểm bắt đầu và điểm kết thúc và ma trận phải là (số chuỗi được tạo sẽ là) của loại CV_32SC4.
[opencv2refman.pdf]

Bạn cũng có thể tìm thấy một hướng dẫn trong opencv_tutorials.pdf trong tài liệu hướng dẫn của OpenCV cài đặt của bạn.

+0

cảm ơn bạn đã trả lời! Trong bước tiếp theo, tôi muốn có được một ước tính về chất lượng của các dòng trong hình ảnh của tôi. các đường là các cạnh của rãnh và phải song song. Tại một số nơi rãnh được demaged và các cạnh không song song nữa. Có một cách dễ dàng để có được độ lệch của một cạnh thực tế từ một đường thẳng? – marc

+0

Huh, tôi không chắc. Tôi nghĩ rằng nó là giá trị đăng nó như là một câu hỏi riêng biệt. –

+0

Bạn có thể vui lòng bỏ phiếu/chấp nhận nếu câu trả lời của tôi đã giúp? –

Các vấn đề liên quan