2010-11-23 5 views
5


이미지 정류를 구현해야합니다. 문제가 4 개 시점 (topL, topR, bottomL, bottomR)의 객체 이미지가 있습니다. 페어 와이즈 정류를 수행해야합니다. OpenCV에서 일부 코드를 시도했지만 가능하지 않았습니다. 누군가가 나에게 정류를 수행하기위한 좋은 방법 (소스 코드/튜토리얼)을 말해 줄 수 있습니까? 나는 C/C++/OpenCV를 사용할 필요가있다.이미지 정류

http://portal.acm.org/citation.cfm?id=1833349.1778777

답변

23

이 강한 기능 또는 모서리를 찾기 ...

  • 여기에, 매우 광범위한 질문이다 당신이 그것을 할 수있는 한 가지 방법의 일반적인 개요입니다 두 이미지 모두에을 사용하여 cvGoodFeaturesToTrack()

  • 패스 특징은 강한 기능의 위치의 지점 표현을 부동 더 정확하게 얻을 수 cvFindCornerSubPix()에 발견

  • cvCalcOpticalFlowPyrLK 이상을 사용하여 마지막 단계에서 서브 픽셀 기능을 사용하여 두 이미지 사이의 광학 흐름을 계산 또 다른 옵티컬 플로우 기능. 그것은 고유 카메라를 properites에 대한 몇 가지 지식 (시야, 초점 거리)를 가지고하는 데 도움이 이미지를 바로 잡기 위해 ... 까다로운를 얻을 곳

이는 (내가 cvCalcOpticalFlowPyrLK()처럼) 특히 경우 일종의 3 차원 재건 또는 불일치 계산을 계획하고 있습니다. 보정 된 카메라에 대해 언급 한 내용이 없으므로 교정되지 않은 알고리즘을 계속 사용하겠습니다.

  • 정류 매트릭스를 계산하는 데 사용되는 장면의 모든 부분을 인코딩하는 기본 매트릭스를 찾아야합니다. 이 작업을 수행하려면 cvFindFundamentalMatrix()을 사용하십시오.

  • 기본 매트릭스가 준비되어 있으면 두 이미지를 동일한 평면에 매핑하는 호모 그래피 매트릭스를 찾아야합니다. 이 작업을 수행하려면 cvStereoRectifyUncalibrated()을 사용하십시오. 그 이름이 당신의 이미지를 정류하는 것이 아니라는 것을 암시 하긴하지만, 이미지를 수정하기 위해 사용할 수있는 호모 그래피 매트릭스를 반환합니다.

  • 마지막 단계의 호모 그래피 행렬을 사용하면 cvInitUndistortRectifyMap()을 호출하여 두 이미지를 모두 수정할 수 있으며 다시 매핑 행렬을 얻은 다음 cvRemap()으로 전달하여 실제 다시 매핑을 수행 할 수 있습니다.

나는 이 라이브러리 호출의 각로 이동 많은 매개 변수가 있음을 경고해야하며 고유없이 말할 것도없고, 많은 행렬과 많은 이미지를 조작해야합니다 카메라 보정에 대한 세부 사항은 많은 가정을해야 결과가 크게 달라질 수 있습니다 ... 쉬운 일은 아닙니다.내가 구매 및/또는 당신이 더 많은 것을 배우고 싶은 경우 Learning OpenCV 읽기를 추천 할 것입니다


, 그것은이 모든

+0

밤은 내가 직접 사용할 수있는 코드의 특정 조각 나는 그것의 너무 많이 물어 알지만 것은 정류 내 프로젝트의 작은 부분이며, 나는 그것에 너무 많은 시간을 보내고 싶지 않다. – Manish

+0

나는 수정하지 않고 기존 코드에 방금 들여 보낼 수있는 것을 찾을 수 있을지 의심 스럽다. 'Stereo Rectification'또는 'Stereo Calibration'의 예를 검색하면 도움이 될 수 있습니다. 코드를 묻는 대신에 무엇을 하려는지 설명했다면 도움이 될 것입니다. – tbridge

+0

우리는 4 가지 관점에서 물체의 이미지를 제공하면서 몇 가지 스테레오 재구성을 시도하고 있습니다. 특히 우리는 종이를 구현하려고합니다. (원래 게시물에 대한 링크를 추가했습니다.)이 pairwise stereo rectification은 작은 부분이므로 수행하고 싶었습니다. 이 부분은 상당히 빨리. – Manish

0

이 질문이 출판 된 것은 오래 전 이었지만 요즘은 대답이 새로워 질 수 있다고 생각합니다. 다음은 몇 가지 팁입니다.

2 개 이상의 이미지를 공통 이미지 평면으로 변환하는 과정 인 image rectification의 정의에 따라. 이렇게하면 이미지간에 일치하는 지점을 찾는 문제를 단순화 할 수 있습니다. 또한 깊이 맵 추출과 같은 많은 응용 프로그램의 성능을 향상시킵니다.

그래서 당신이이 고유 카메라가 매개 변수와 왜곡 매개 변수 외부 카메라 파라미터를 알고 있어야합니다, 정류를 수행합니다. 먼저 카메라 사이의 위치를 ​​표현하고, 다른 것은 픽셀 프레임 좌표를 카메라 프레임 좌표로 변환하고, 마지막은 방사형 왜곡 제거를 담당합니다. 당신이 예상 몇 가지 도구의 매개 변수를 찾을 수 아래 : 당신이 마지막으로 이러한 매개 변수를 알게되면

  1. matlab에 -stereo 카메라 보정
  2. MicMac
  3. OpenCV
  4. Kalibr

을 수행 할 수 있습니다 각 카메라를 개별적으로 교정하십시오 :

  1. openCV의 정류 과정, stereoRectify을 확인하십시오.
  2. 동일한 알고리즘이 이미 ROS stereo pipeline에 구현되었습니다. Computer Vision System Toolbox 매트랩
  3. 여러 다른 자습서 같은 :이 Du Huynh