2009-09-03 34 views
7

(Đây là một sự theo dõi từ this previous question).Cách kiểm tra sự gần nhau của các dòng (Biến đổi Hough) trong OpenCV

Tôi đã có thể sử dụng thành công các biến đổi OpenCV/Hough để phát hiện các dòng trong ảnh (văn bản được quét); lúc đầu nó sẽ phát hiện nhiều dòng (ít nhất một dòng trên mỗi dòng văn bản), nhưng bằng cách điều chỉnh tham số 'ngưỡng' thông qua thử và lỗi, nó bây giờ chỉ phát hiện ra dòng "thực".

(Tham số 'ngưỡng' phụ thuộc vào kích thước hình ảnh, đây là một vấn đề nếu người ta phải xử lý hình ảnh có độ phân giải khác nhau, nhưng đó là một câu chuyện khác).

Vấn đề của tôi là biến đổi Hough đôi khi phát hiện hai dòng mà chỉ có một dòng; hai đường này rất gần nhau và (dường như) song song.

=> Làm cách nào tôi có thể xác định hai dòng gần như song song và rất gần nhau? (để tôi chỉ có thể giữ một).

+0

bạn có dữ liệu nào từ các dòng? – Janusz

Trả lời

8

Nếu bạn sử dụng hough tiêu chuẩn hoặc multiscale, bạn sẽ kết thúc với rho và theta tọa độ của các dòng trong tọa độ cực. Rho là khoảng cách đến gốc, và theta thường là góc giữa đường phát hiện và trục Y. Nếu không nhìn vào các chi tiết của hough biến đổi trong opencv, đây là một quy tắc chung trong các tọa độ đó: hai dòng sẽ gần như song song và rất gần nhau khi: - theta của chúng gần giống hệt nhau và rhos của chúng gần giống hệt nhau HOẶC - theta của chúng cách nhau 180 độ và rhos của chúng gần nhau tiêu cực

Tôi hy vọng điều đó có ý nghĩa.

+0

Có bạn hoàn toàn đúng; Tôi đã tìm thấy điều này sau khi tôi đăng câu hỏi của mình; trong thực tế nó thực sự đơn giản trong OpenCV. Cảm ơn! – Bambax

+0

Ngoài ra, nếu thiết lập tham số 'độ phân giải' cao hơn, bạn sẽ tìm thấy ít dòng hơn; và đây là những gì tôi cần. – Bambax

+0

Làm cách nào chúng tôi có thể đặt ngưỡng cho từ khóa 'gần' bằng thông số rho và theta? Ví dụ nếu tôi muốn biết nếu hai dòng gần như song song với góc tối đa giữa chúng là 0,5 radian (ngưỡng = 0,5). –

0

Điều thú vị về theta là góc giữa đường kẻ và trục y.

Thông thường, giá trị rho và theta được hiển thị dưới dạng góc từ trục x đến đường vuông góc với đường thẳng được đề cập. Rho sau đó là chiều dài của đường vuông góc này. Do đó, một theta = 90 và rho = 20 có nghĩa là một đường ngang 20 pixel so với gốc. Một hình ảnh đẹp được hiển thị trên Hough Transform question

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