2012-03-05 1 views
0

C#에 EMGU OpenCV 래퍼를 사용하고 있습니다. 불일치지도가 멋지게 생성되었습니다. 그러나 특정 응용 프로그램의 경우에는 매우 적은 픽셀의 불일치 값만 필요하므로 실시간으로 표시해야합니다. 계산은 약 100 밀리 초 정도 걸리므로, 수천 가지가 아닌 수백 개의 픽셀 값에 대해 불일치가 발생하면 속도가 상당히 빨라질 것이라고 상상합니다. 스테레오 솔버 코드의 "내부"에서 무슨 일이 벌어지는 지 잘 모르겠습니다. 필요한 픽셀의 불일치만을 계산하여 속도를 높일 수있는 방법이 있습니까?EMGU 특정 픽셀에만 OpenCV 불일치가 있음

답변

0

우선 무엇을 실제로 달성하려고하는지, 그리고 어떤 알고리즘을 사용하고 있는지 언급하지 않습니다. 예 : StereoGC는 StereoSGBM 및 StereoBM과 비교하여 실제로 느린 (즉, 실시간이 아니지만 일반적으로 훨씬 정확합니다). 마지막 두 가지는 몇 가지 조건이 충족되면 실시간으로 사용할 수 있습니다.

  • 입력 이미지의 크기는 상당히 적습니다.
  • 고급 매개 변수 집합을 사용하지 않습니다 (예 : numberOfDisparities의 값이 클수록 계산 시간이 늘어납니다).

정확성에 대해서는 기적을 기대하지 마십시오.

그 외에도 "단지 몇 픽셀"이라는 문제가 있습니다. 내가 이해하는 한, OpenCV에서 구현 된 알고리즘은 일반적으로 불일치 값을 결정하기 위해 1 픽셀 이상의 정보에 의존합니다. 예 : 이미지 A의 어느 픽셀을 이미지 B의 어떤 픽셀에 매핑 하는지를 탐지하는 이웃이 필요합니다. 결과적으로 일반적으로 이미지의 다른 모든 픽셀을 버리는 것은 불가능합니다. 두 이미지 모두 스테레오 방법이 필요하지 않습니다). 그래서 당신이 거기에 관심있는 픽셀을 결코 찾을 수 없다는 것을 알고있는 당신의 입력 이미지의 큰 테두리를 버릴 수 없다면, 당신의 질문의이 부분에 대한 대답은 "아니오"라고 말할 수 있습니다.

관심있는 픽셀이 항상 입력 이미지의 특정 사각형 내에 있다는 것을 알게되면이 사각형에 입력 이미지 ROI (관심 영역)를 지정할 수 있습니다. OpenCV에 버그가 없다고 가정하면 계산 속도가 약간 빨라집니다.

약간의 인터넷 검색을 사용하면 Youtube의 GPU를 사용하여 EmguCV (또는 일반 OpenCV)를 사용하여 스테레오 통신을 찾는 실시간 사례를 찾을 수 있습니다. 아마도 이것은 당신을 도울 수 있습니다.

면책 조항 : 귀하의 질문에 자세한 내용이 포함되어있는 경우 더 완벽한 답변 일 수 있습니다.