2017-04-18 6 views
1

DLIB에서 Hough 변환을 사용하려고하지만 표시 할 줄을 두 개 이상 가져올 수 없습니다. DLIB 워드 프로세서의 예는 하나의 강력한 포인트를 사용 :Hough 변환을 통한 필터링 DLIB의 결과

point p = max_point(mat(himg)); 

가 어떻게 모든 강력한 얻을 수있는 라인 (특정 임계 값 또는 N 가장 많은 표 이상) 보여?

내가 포인트를 통해 루프를 시도하고 각 이미 발견 마스크,하지만 dlib::max_point이 같은를 찾는 유지 한, 그것은에도 불구하고 점은 이미 제로되고 :

첫 번째 후 동일한 값을 생성
for(int i = 0; i < nPoints; ++i){ 
    dlib::point p = dlib::max_point(dlib::mat(hImg)); 
    maxPoints.push_back(p); 
    std::cout << "Turning point " << p.x() << ", " << p.y() << " = " << hImg[p.x()][p.y()] << std::endl; 

    hImg[p.x()][p.y()] = 0; 

    std::pair<dlib::point, dlib::point> line = ht.get_line(p); 

    dlib::draw_line(temp, line.first+5, line.second+5, dlib::rgb_pixel(255,255,0)); 
} 

루프 반복 :

Turning point 595, 584 = 78540 
Turning point 595, 584 = 0 
Turning point 595, 584 = 0 

DLIB의 거친 공간을 통한 필터링에 "올바른"방법이 있습니까?

업데이트 : 데이비스 킹 (Davis King)이 지적했듯이, 즉각적인 문제를 해결 한 좌표 (행, 열) 대 (x, y)를 바꿨지 만 핵심 이슈는 여전히 존재합니다. 내 무릎 공간은 다음과 같습니다

에서 볼 수있는 바와 같이 는,이 지역 최대의 수를하지만 모든 것이 중앙에 거대한 덩어리에 의해 지배됩니다

Hough Image in color for clarity. 나의 초기 아이디어는 모호한 모든 영역이 단일 지배적 인 지점으로 축소 될 수 있다는 것이 었습니다.

나는 특정 임계점 위의 모든 얼룩을 클러스터링하는 것에 대해 생각했지만 전체 이미지를 루핑하여 그러한 점을 발견하고 클러스터링 알고리즘은 매우 비효율적이므로 똑똑한 방법이 있어야합니다. 아마도 이미지 자체의 내부 가장자리가 억제 될 수 있습니다 (불규칙한 혼란 같은 작은 물체)?

답변

2

행과 열을 바꿔야합니다. hImg[p.x()][p.y()] = 0;은 거꾸로되어 있어야합니다. hImg[p.y()][p.x()] = 0;

+0

감사합니다. 한 곳에서 x, y 및 다른 행을 사용할 때 가끔 혼란합니다. col – user3002166