2009-09-03 3 views
7

(이것은 this previous question의 후속 조치입니다).OpenCV에서 라인 근접 (Hough 변환)을 테스트하는 방법

OpenCV/Hough 변환을 사용하여 그림의 선 (스캔 한 텍스트)을 성공적으로 감지 할 수있었습니다. 처음에는 많은 행 (텍스트 행 당 적어도 한 행)을 탐지하지만, 시행 착오를 통해 '임계 값'매개 변수를 조정함으로써 "실제"행만 탐지합니다.

('threshold'매개 변수는 이미지 크기에 따라 달라지며, 이는 해상도가 다른 이미지를 처리해야하는 경우 문제가 될 수 있지만 다른 이야기입니다.)

내 문제는 Hough 변환이 때로는 하나만있는 곳에서 두 줄을 감지한다는 것입니다. 그 두 줄은 서로 아주 가깝고 (분명히) 평행합니다.

=> 두 줄이 거의 평행하고 서로 가깝다는 것을 어떻게 식별 할 수 있습니까? (그래서 나는 하나만 지킬 수있다).

+0

줄에서 어떤 데이터가 있습니까? – Janusz

답변

8

표준 또는 멀티 스케일 호프를 사용하는 경우 극좌표로 선의 ρ와 Θ 좌표로 끝납니다. Rho는 원점까지의 거리이며, theta는 일반적으로 검출 된 선과 Y 축 사이의 각도입니다. opencv에서의 hough transform에 대한 세부 사항을 보지 않고서는이 좌표에서 일반적인 규칙입니다 : 두 라인은 거의 평행하고 서로 매우 가까울 것입니다 : - 그들의 테아는 거의 동일하고 rhos는 거의 동일합니다 또는 - 그들의 시타는 180도 떨어져 있고 그들의 rhos는 서로의 부정에 가깝습니다.

나는 희망합니다.

+0

네, 정말 옳습니다. 나는 내 질문을 게시 한 후에 이것을 발견했다. 사실 OpenCV에서 정말 간단합니다. 감사! – Bambax

+0

또한 '해상도'매개 변수를 높게 설정하면 줄이 더 적습니다. 이것이 내가 실제로 필요로하는 것입니다. – Bambax

+0

어떻게 rho 및 theta 매개 변수가있는 '거의'키워드로 임계 값을 설정할 수 있습니까? 예를 들어, 두 선이 0.5 라디안 (임계 값 = 0.5) 사이의 최대 각도와 거의 평행한지 알고 싶습니다. –

0

세타가 선과 y 축 사이의 각도 인 점은 흥미 롭습니다.

일반적으로 rho 및 theta 값은 x 축에서 해당 선에 수직 인 선까지의 각도로 시각화됩니다. ρ는이 수직선의 길이입니다. 따라서 theta = 90 및 rho = 20은 원점에서 20 픽셀 위로 수평선을 의미합니다. 좋은 이미지가 Hough Transform question에 표시됩니다.