2011-09-22 3 views
1

주어진 이미지에서 직사각형을 감지하기 위해 Emgu 모양 감지 예제 응용 프로그램을 사용하고 있습니다. 크기가 조정 된 이미지의 크기는 종횡비가 동일하게 유지되는 경우에도 감지 된 모양의 수에 영향을주는 것처럼 보입니다. 여기 내 말은 무엇을 :이미지 크기에 의해 영향을받는 EmguCV 모양 감지

Using (400,400), actual img size == 342,400

Using (520,520), actual img size == 445,520

왜 그렇게입니까? 최적의 가치는 어떻게 결정될 수 있습니까?

감사

답변

3

나는 EMGU에 귀하의 게시물에 대답하지만 당신은 다시 확인하지 않은하지만 그것을 상상했다. 모양 탐지는 가능성이 낮은 일치를 유지하는 원칙에 따라 작동합니다. 이렇게하면 많은 잘못된 분류가 방지됩니다. 이는 많은 이미지 처리 알고리즘에서 마찬가지입니다. 기본적으로 이없고 완벽한 설정이 있으며 디자이너는 가장 바람직한 결과를 내기 위해 가장 적절한 설정을 선택해야합니다. I.E. 실제로 존재하는 것보다 더 많은 것을 말하지 않고 대부분의 대상과 일치시킵니다.

어떤 결과를 얻으려면 각 변수를 개별적으로 조정해야합니다. 가장자리 감지 시작.

작은 이미지를 보면서 감지 된 사각형과 그렇지 않은 것의 차이점을 확인하십시오. 당신은 누락 될 수 있고 가장자리 또는 분류되지 않은 이유입니다. cannyThreshold를 조정하고 결과를 관찰하면 좋을 경우 :) 원래 값으로 돌아갑니다. 일단 만족하면 cannyThresholdLinking을 조정하고 관찰하십시오.

원하는 이미지를 얻을 때까지 계속 반복합니다. 여기서 이점은 인식 할 항목이 다른 두 항목과 일치 할 때까지 비교할 3 개의 항목이 있다는 것입니다.

검은 색과 흰색으로 비슷할 가능성이 높습니다. Hough 선 감지로 이동하십시오.

 LineSegment2D[] lines = cannyEdges.HoughLinesBinary(
      1, //Distance resolution in pixel-related units 
      Math.PI/45.0, //Angle resolution measured in radians. 
      20, //threshold 
      30, //min Line width 
      10 //gap between lines 
      )[0]; //Get the lines from the first channel 

동일한 값으로 조정하는 방법을 사용하십시오. 시간과 출력을 관찰하면 필요한 설정을 찾을 수 있습니다. 절대로 두 발로 뛰어 들어 절대 정확도가 향상되는지 알 수 없으므로 모든 값을 변경하십시오. 마지막으로 다른 모든 경우에 당신을 위해 모든 일을해야 무릎으로 변경 구형의

     if (angle < 80 || angle > 100) 
         { 
          isRectangle = false; 
          break; 
         } 

적은 변수를 허프 결과를 검사 섹션을보고 실패합니다. 그러나 그것은 여전히 ​​모두 여기에서 운동 할 수 있습니다.

직접적인 답변이 없으므로 유감이지만 계속해서 문제를 해결하시기 바랍니다. 그렇지 않으면 매번 이미지의 크기를 조정할 수 있습니다.

건배

크리스

+0

덕분에 ... 적어도 이것은 내가 따라 할 수있는 경로를 나타냅니다. 나는 대부분의 이미지 탐지 알고리즘이 일종의 튜닝을 필요로한다는 것에 동의한다; 그러나 나는 가로 세로 비율보다는 이미지 크기에 의존하는 것을 보지 못했습니다. 어떤면에서 엣지 감지는 결과에 영향을 미치지 않습니다 (적어도이 이미지의 경우). 다른 매개 변수를 확인하면 업데이트됩니다. – Nav

+0

이 경우 실제로 찾고있는 물건의 크기가 커집니다.실제로 이미지 크기 나 비율에 의존하는 알고리즘은 거의 없지만 사실 내부의 객체 크기에 달려 있습니다. 예를 들어 탐지되지 않은 사변형은 대략 27360 픽셀의 영역 인 대략 직사각형 (165,97,240,114)입니다. 이제 두 번째 이미지에서 같은 사각형은 직사각형 (214, 129, 310, 146)으로 증가 된 영역은 45'260 픽셀입니다. 이것은 x1.65의 증가입니다. 이제 왜 더 큰 것이 검출되는지 알 수있을 것입니다. Hough 선을 변경하면 코드가 문제를 해결해야합니다. 행운을 보겠습니다. – Chris

+0

예제 애플리케이션에서는 분명히 형상 감지에 호프 선이 사용되지 않았습니다 ... 윤곽선이 있습니다. pts의 수는 4 => 직사각형 등. 또한 이것이 내 문제 였고, 각도는 탐지 된 사각형의 수를 제한합니다. 10도 이상의 기울기 (모든 선이 같은 각도 일지라도)가 삭제되고 모양이 삭제됩니다. 나는 이것으로 지금 바이올린을 할 수있다 :). 그러나 또 다른 불길한 일이 있습니다 ... 모양이 두 번 감지됩니다 :/ – Nav

관련 문제