2012-02-22 2 views
0

OpenCV를 사용하는 프로젝트에서 작업 중이고 광학 플로우 알고리즘 cvCalculateOpticalFlowFarneback을 사용하여 비디오에서 광학 플로우를 얻고 있습니다.cvCalculateOpticalFlowFarneback에 대한 OPTFLOW_USE_INITIAL_FLOW 옵션

내가 설명서를 읽고있다, 심지어 원 조금으로 찾고 당신이 알고리즘에 공급 할 수있는 옵션이 있습니다 : OPTFLOW_USE_INITIAL_FLOW

나는 그것으로 주위를 연주했지만 나는 어떤 차이를 볼 수는 속도 또는 정확도. 그래서 내 질문 :

옵션은 무엇을합니까? 사용하지 않을 때와 사용했을 때의 차이점이 있습니까? (좋은 것인지 나쁜지)

또한 일부 구현에서이 옵션을 사용하면 버그가 있으므로이 옵션을 피해야한다고 말하면서 코드 주석을 보았습니다. 다른 곳에서는 잘 할 수 없지만 (특히 프로덕션 소프트웨어에 포함시킬 때) 조금 신경이 쓰입니다.

의견이 있습니다.

답변

2

OpenCV documentation for cvCalculateOpticalFlowFarneback는 말한다 :

OPTFLOW_USE_INITIAL_FLOW 사용을 의미합니다 초기 흐름 근사

로 입력 흐름 : 당신이 그 흐름의 당신의 추정치와 출력 매개 변수의 흐름이 기능을 작성하는 경우 당신이 의심하는 것처럼 당신이 초기 추정치로주는 흐름을 사용할 것입니다. 유량의 합리적인 추정치를 입력으로 제공 할 수있는 경우에만 실제 차이점을 볼 수 있습니다. 그렇지 않으면 효과가 없거나 악화됩니다. 카메라가 일정한 속도로 움직이는 비디오 시퀀스가 ​​있으면 효과를 쉽게 테스트 할 수 있습니다.

  • 첫 번째 두 이미지의 경우 매개 변수없이 흐름을 계산하십시오.
  • 다음 이미지의 경우 OPTFLOW_USE_INITIAL_FLOW 매개 변수를 사용하여 새 계산의 입력으로 이전 쌍에 대해 계산 된 플로우를 사용하십시오. 그리고 그것없이 흐름을 계산하십시오.
  • 결과 흐름과 걸리는 시간을 비교하십시오. 이것은 매개 변수의 효과를 보여줍니다.

(내가 제대로 이해한다면) 군나르 Farneback의 알고리즘이 로컬 최대에 갇히지하는 경향이있다 광학 흐름을 찾기 위해 최적화 알고리즘, 그래서 좋은 초기화가 아마도위한 더 나은 세계 최대를 찾아 당신을 도울 수 있기 때문에 따라서 매개 변수의 효과가 더 나은 흐름 출력이어야합니다. 반드시 더 빠를 필요는 없습니다.

  • 당신이 그것없이 찾을 광학 흐름이 사용자의 요구에 만족할만한 경우,하지 : 구현 및 생산 사용 가능 버그 (: 나는 실제 소스에보고하지 않은 주)에 대해서는

    그걸 써.

  • 매개 변수의 영향을 테스트하고 도움이된다고 판단되면 도움을 얻고 사용하기 전까지는 더 많은 것을 테스트하십시오.
  • OpenCV mailinglist의 버그에 대해 문의 할 수 있지만 시도하기 전에 먼저 테스트와 코드 읽기를 수행하는 것이 좋습니다.