2013-06-18 4 views
3

SimpleBlobDetector는 실제로 무엇을합니까?OpenCV에서 SimpleBlobDetector를 사용하는 방법?

그것은 나에게 몇 가지 포인트를 반환하지만,이 점들은 무엇입니까?

얼룩 감지기가 색상과 같은 속성의 이미지 영역을 찾습니까?

발견 된 얼룩의 윤곽을 검색 할 수 있습니까? 웹에서 어떤 예제에서는 detectEx 함수 호출을 보았지만 OpenCV 2.4.5에서는 그러한 함수가 없습니다. 이제이 기능 대신 무엇이 사용됩니까?

UPDATE 여기

블롭 검출 알고리즘이 문서에서 설명하는 방법은 다음 minThreshold (포함)부터 여러 임계 값과 임계 적용하여

  1. 이진 이미지를 원본 이미지로 변환하는 최대 임계 값 (배타적 인) distance thresholdStep 사이에 인접한 임계 값 .
  2. findContours()에 의해 각 바이너리 이미지에서 연결된 구성 요소를 추출하고 그 중심을 계산합니다.
  3. 그룹은 여러 이진 이미지의 좌표를 중심으로 정렬됩니다. 닫기 센터는 하나의 blob에 해당하는 하나의 그룹을 구성하며, 은 minDistBetweenBlobs 매개 변수에 의해 제어됩니다.
  4. 그룹에서 얼룩 및 반지름의 최종 중심을 추정하고 키포인트의 위치와 크기로 반환하십시오.

얼룩이 원형이어야한다는 것은 분명하지 않습니다!

답변

4

반환되는 점은 이미지의 얼룩의 중심입니다. 얼룩은 원형으로 가정하고 크기는 detect() 함수로 얻은 출력 벡터의 키포인트 크기로 저장됩니다. 링크에 지정된대로 색상 기반 필터링을 사용하여 찾고있는 얼룩의 색상을 지정할 수 있습니다. filterByColor = true을 설정하고 찾고있는 색상을 blobColor에 지정하십시오.

등고선을 찾는 경우 프로세스를 더 세분화해야합니다. 바이너리 이미지를 얻기위한 첫 번째 임계 값. 그런 다음 OpenCV에서 findContours 기능을 사용하십시오.

+0

유사한 색상 내용을 포함하는 윤곽선을 병합하는 방법은 무엇입니까? –

+0

얼룩을 병합하거나 윤곽을 병합 하시겠습니까? 나는 윤곽선을 어떻게 합칠 것인가에 대해서는 분명하지 않다. ..? – Zaphod

+0

그냥 가방에 넣을 수 있습니다. 나중에 합류 면적을 계산하거나 선체를 만들 수 있습니다. –

관련 문제