2011-01-05 3 views
3

이미지 내에 정사각형을 감지하는 응용 프로그램을 작성했습니다.정사각형의 방위를 계산하고 같은 방향으로 물체를 표시합니다.

내가 무엇을 얻을, 검출 후, 네 모서리의 좌표는 다음과 같습니다처럼 당신에게 그런 이미지가이 경우에, 마커를 같은 정사각형을 포함하는 방법의 좋은 이해를 제공하기 위해, 볼 수 있었다 내 마커의. 이제 마커에 개체를 표시하는 방법을 모르겠습니다. 대상은 마커와 동일한 회전/각도/방향을 가져야합니다.

달성 방법에 관한 논문이 있습니까? 그 알고리즘을 사용할 수있는 알고리즘은 매우 견고합니다/작동하고 있습니까?

작동하는 솔루션 일 필요는 없으며이를 달성하는 방법이나 비슷한 것을 간단히 설명 할 수 있습니다. 라이브러리 나 무언가를 통해 나를 가리키면 Linux에서 작동해야합니다. Windows는 필요하지 않지만 어느 시점에서 응용 프로그램을 포팅해야 할 경우 유용합니다. ARToolkit을 이미 살펴 봤지만 카메라 매개 변수 파일과 더 복잡한 행렬이있는 반면 전체 비디오/카메라 스트림 대신 4 개의 꼭지점과 단일 이미지 만 얻었습니다.

+0

카메라가 보정 되었습니까? 그렇지 않다면 그렇게 할 수 있습니까? 그렇게하면 문제를 훨씬 간단하게 만듭니다 (바둑판 패턴의 여러 이미지를 기록하고 opencv에서 사용 가능한 알고리즘을 실행하는 것만 큼). – etarion

답변

0

그것은 사각형입니다. 그것은 평범한 비행기에서 잿물이라고 가정합니다. 우리가 물체를 배치해야하는 방식이기 때문에 그것을 찾아야합니다. 우리는 모든 y 좌표가 0이고 이제는 aspect 문제를 다루고 있다고 가정 할 수 있습니다. 어쩌면 0-1 범위로 매핑 할 수 있습니다. 대부분의 왼쪽 포인트는 x에서 0을 얻습니다. 가장 오른쪽 1에서 z는 가장 가까운 get의 0과 가장 가까운 1입니다. 우리는 대각선 길이를 확인하여이를 결정할 수 있습니다. 짧은 하나는 전면 및 후면 점을 연결하고 다른 2 그래서 우리는

 x z 
left: 0 ? 
right: 1 ? 
front: ? 0 
back: ? 1 

같은 것을 얻을 옆에 나는이 생각? 측면의 측면에 의해 계산 될 수있다. 사각형을 사용하면 문제가 간단 해집니다. front-right와 front-left를 연결하는 두 줄이 동일하다면, 왼쪽과 오른쪽의 z 값은 0.5입니다. 자 이제이 모든 방법으로 3 차원을 모두 구할 수 있고 벡터 교차 곱 계산을 사용하여 정상적으로 계산할 수 있습니다. 그런 다음 y 축이 높이 인 모델을 가져 와서 0,1,0 벡터를 보통으로 회전시키는 데 사용되는 행렬을 계산 한 다음 위치 2D 이미지를 그려 올바르게 스케일합니다. 글쎄, 만약 내가 당신을 도왔는지 모르겠다. 아마도 그것이 작동하는 방식이 아니지만 나는 쓸만한 것을 썼기를 바란다.

1

저는 OpenCV의 cvGetPerspectiveTransform을 사용하여 마커의 모서리에 정사각형을 왜곡시킬 수있는 변환을 찾은 다음 cvWarpPerspective 이미지를 왜곡 할 수 있다고 생각합니다.

관련 문제