2016-06-07 6 views
1

세계 좌표계에 선이 있고 이미지에 투영합니다 (이 질문에 설명 된대로 math.stackexchange). 이미지 공간에 간단한 라인 방정식이 생기므로 이미지 내에서 OpenCV로 쉽게 인쇄 할 수 있습니다.어안 왜곡 함수를 통해 직선을 왜곡하고 이미지에 올바르게 그립니다.

이제는 어안 (fisheye) 카메라 이미지에 선을 투영하려고합니다. 필자는 대응하는 비선형 왜곡 함수가 있으므로 쉽게 점을 왜곡 할 수 있습니다. 순진한 방법은이 함수를 통해 생성 된 선에서 각 점을 왜곡하는 것입니다. 하지만 이렇게되면 여러 개의 선분과 설정되지 않은 픽셀 (일반적으로 왜곡 선에 속할 것입니다)이 생깁니다.

올바른 왜곡 선을 얻는 것이 영리한 방법 일 수 있습니다. 어쩌면 라인 프로젝션을 다른 방식으로 처리해야 할 필요가 있을까요? 스트리그 라인을 더 자주 샘플링 할 수는 있지만 (즉, 서브 픽셀 좌표를 사용하여), 정확한 해결책을 보장하지는 않는다고 생각합니다.

편집 :

내 왜곡 함수는 간단한 polynom

r(a) = k1*a+k2*a^2+k3*a^3+k4*a^4 
a 광축에 왜곡 입사 광선의 각도이다

r에게되어 왜곡 된 화상의 화소에 반경 . 해당 내용에 대한 자세한 내용은 here을 참조하십시오.

+0

(또는 지점) 사용하려는 렌즈 왜곡 모델의 방정식을 게시하시기 바랍니다. –

+0

@FrancescoCallari : 원본 게시물에 정보를 추가했습니다. –

답변

1

간단한 해결책은 실제로 회선 해상도를 높이는 것입니다. 픽셀을 더 추가하면 (하위 픽셀이 더 낫습니다) 왜곡 된 이미지가 더 선명하게 보입니다.

더 정확한 방법은 역방향 매핑이라고 생각합니다. 왜곡 된 이미지의 각 픽셀 (제곱, 정수)에서 변형되지 않은 이미지의 픽셀 (사변형, 실수)으로 매핑을 찾습니다. 왜곡 된 선에는 구멍이 생기지 않습니다.

enter image description here

+0

해당하는 역방향 매핑이있는 조회 테이블이 이미 있습니다. 왜곡 된 이미지에서 선 방정식을 가졌으므로 왜곡 된 이미지에서 선을 계산할 수있었습니다. 그러나 한 라인의 경우, 라인 방정식이 유지되면 왜곡 된 이미지의 모든 픽셀을 테스트해야합니다. 또는이 절차를 빠르게 진행하는 데 사용할 수있는 트릭이 있습니다. –

+0

@Vaniax. 첫째, 매핑을 역으로 처리하는 것이 항상 쉬운 것은 아닙니다. 일반 카메라에서는 왜곡 계수가 주어지기 때문에 왜곡되지 않은 상태에서 왜곡 된 상태로의 매핑은 쉽지만 다른 방법은 반복적 인 해법 (x와 y가 결합 됨)을 포함합니다. 다행히도 사용중인 모델은 변환 할 수 없으므로 정확성 문제가 없어야합니다. 둘째, 나는 이미 왜곡되지 않은 이미지로 픽셀 이미지를 만들었다 고 가정하고 있습니다. 원래의 라인 방정식에 대해 말하는 것이 아닙니다. 왜 속도가 그렇게 걱정 되십니까? 주요 요소는 픽셀 값을 얻기 위해 수행 할 보간법입니다. –