2014-02-20 2 views
3

I는 현재 이러한 매개 변수를 사용하여, OpenCV의 HoughLinesP의 기능을 이용하여 영상의 수평 형상의 라인을 검출하는 것을 시도하고있다 :HoughLinesP를 사용하여 OpenCV에서 수평선을 감지하는 방법?

HoughLinesP(linMat[i], lines, 1, CV_PI/180, 80, linMat[i].cols*(0.3), 3);

여기서 linMat[i] 입력 화상이다. 그 결과,이 OK 동안 (광고를 수동으로 그려진)

이미지의 노란색 선으로 도시 된 바와 같이, 내가 원하는 것은, 수평 방향의 라인을 가지고있다이

http://postimg.org/image/49b8wzlgz/

같다 http://postimg.org/image/rh9wlueo7/

I (예 CV_PI/45)을 작은 값으로 CV_PI/180 파라미터를 변경하고, 다른 매개 변수에 대해 다양한 값을 사용하려고 시도했지만, 수평 라인을 생성 할 수 없다.

opencv에서 HoughLinesP 기능을 사용하여 노란색 라인을 생성하는 매개 변수에는 어떤 값을 사용해야합니까?

감사합니다. 제안 (덕분에 모든!) 나는

HoughLinesP(linMat[i], lines, 1, CV_PI/360, 80, 1, 1); 그럼에도 불구하고

처럼도 매우 극단적 인 값을 시도한 다음

업데이트

, 생성 된 라인이 가깝게 수직 방향으로 경사가 : postimg.org/image/y5w6vm7lx/ (링크를 복사하여 붙여 넣으십시오 ...). 두꺼운 선을 감지하지 못했기 때문에 canny와 같은 가장자리 감지 필터를 사용하지 않습니다. 가장자리는 단선이되는 경향이 있습니다.

업데이트 2

다만 해명 결과에 그려진 선합니다 (HoughLinesP 후) 다음과 같이 생성된다

for all lines

{

line(linMat[i], Point(lines[j][0], lines[j][1]), Point(lines[j][2], lines[j][3]), Scalar(0,0,255), 1, 8);

}

답변

2

임계 값 이미지에서 실행하는 것보다 canny 또는 다른 알고리즘의 가장자리 출력 이미지에 Hough를 적용 해보십시오.

enter image description here

보다 높은 세타 값만을 가로 값을 나타내는 것을 알 수 있었다. 낮은 세타 값으로 값을 제거하여 lines에서 얻은 결과를 필터링합니다.

+0

세타를 PI로 설정하면 거의 수직 선이 결과로 표시됩니다. PI/3도 똑같이 작동하는 것 같습니다. 그러나 PI/6은 모든 방향을 반환합니다. 세부 사항을 파악하지 못했지만, 왜 이렇게 작동하는지 테스트 이미지에서 세타를 수정하면 방향을 알 수 있습니다. –

1

설명서에서 읽을 수있는 내용은 HoughLinesP입니다. 은 모두 이미지의 줄을 감지합니다.매개 변수는 탐지 감도에 영향을 미치는 임계 값입니다.

수평선 만 원할 경우 출력 배열을 분석하여 다른 줄을 필터링하면됩니다. 출력 벡터의 각 항목은 4 요소 벡터 (x_1, y_1, x_2, y_2)이므로 선의 기울기를 계산하여 비 수평선을 필터링 할 수 있습니다.

2

단순히 각도 0 또는 (180)이있는 라인을 HoughLinesP()에 의해 감지 된 각 라인에 대한 방정식을

double Angle = atan2(y2 - y1, x2 - x1) * 180.0/CV_PI; 

확인 각도를 사용하고, 고려

+0

업데이트 된 질문에서 언급했듯이, 각도를 얼마나 많이 변경했는지에 상관없이 결과 라인은 항상 수직 기울기를 가지고있는 것으로 보입니다. 그런 경우에 HoughLinesP 함수의 한계가 될 수 있습니까? – Houari

1

당신은 간단하게 시도 할 수 있습니다 :

for all lines: 
    if abs(lines[j][1] - lines[j][3]) == 0: 
    # Horizontal line 

또한 라인을 기울이면 다음과 같이 시도 할 수 있습니다.

for all lines: 
    if abs(lines[j][1] - lines[j][3]) < 20: # Tune this parameter 
    # Horizontal line 

나는 당신이 아이디어를 얻은다고 생각합니다!

관련 문제