초등학교 수학의 덧셈식과 뺄셈식

수학 이야기 2016. 7. 20. 14:51

어느날 아이가 수학에서 잘 모르는게 있단다. 아니 다른 건 대충 알겠는데 그건 뭐가 뭔지 하나도 모르겠단다. 뭔데? 한번 가져와 봐라 했더니 아래와 같은 문제를 보여준다.


그림출처: http://m.blog.naver.com/sudal10045/220736911267


음... 이건 뭐지?


일순 문제가 파악이 안되어 잠시 바라보았다. 한참을 바라보니 그제야 문제가 머리에 들어온다.


문제의 핵심은 a에 b를 더해서 c가 되었다면 c에서 a를 빼면 b가 남는다는 개념이다.


아이가 이해를 못하는 것이 충분히 이해가 간다. 나도 일순 이해가 안 가서 헤맨 문제를 이제 초등학교 들어간지 갓 몇달도 안된 아이에게 풀어라고 하는 건 너무한 것 아닌가. 그리고 이런 고급(?) 개념을 초등학교 1학년 때 익히는 것이 맞는가 하는 생각도 든다.


그래도 어쩌겠는가.. 선생님은 틀린 문제를 집에 가서 풀어오라고 숙제를 내 줬고 아이는 난감해 하고 있다.


그래서 고민끝에 컵 3개에 물을 따라서 이리 저리 합치고 옮겨가면서 설명을 해 주었다. 그리고 아이에게도 하게 해 주었다. 아이는 이리 저리 물을 따라보면서 재밌어 한다..


그림출처: 인터넷


그런데 물이라는게 경계가 없다보니 합친 만큼 다시 따라내기도 쉽지가 않다. 이건 그냥 물놀이다. 그래서 다시 고민을 했다.


'OO야, 바닷물에 한강물을 더하면 어떻게 되는지 알아?'


'글쎄요.. 물이 되겠죠?'


'어, 아주 큰 물이 되서 홍수가 나겠지?'


'네 ㅋㅋㅋ'


'그런데, 여기서 한강물을 빼면 어떻게 될까?'


'바닷물이 남겠죠'


'바닷물을 빼면?'


'한강물?'


'그래, 이 문제도 사실은 별거 아냐. 숫자라서 조금 어렵긴 한데 5에 4를 더한 다음에 여기서 4를 빼면 다시 5가 남는다는 말이야'


'그리고 반대로 5를 빼면 4가 남고...'


by 다크 프로그래머


'수학 이야기' 카테고리의 다른 글

곱셈과 덧셈  (2) 2017.04.26
숫자 익히기  (17) 2015.02.09
벡터 미분과 행렬 미분  (50) 2014.08.21

영상의 기하학적 해석 - 카메라의 틸드(tilt) 구하기

영상처리 2016. 7. 20. 10:38

카메라의 틸트(tilt)를 구하는 3가지 방법입니다. 카메라 영상을 기하학적으로 해석할 때 보통 많이 필요한 게 카메라의 높이와 틸트입니다. 카메라의 높이는 직접 측량을 한다고 해도 카메라의 틸트는 측정이 쉽지 않기 때문에 몇 가지 방법들을 적어 봅니다.



틸트(tilt)의 기준


여기서는 틸트의 기준을 카메라가 지면과 수평인 경우 0, 위쪽을 +, 아래쪽을 -로 한다.



그림 1. 틸트(tilt)의 기준



방법 1.  이미지 주점을 이용한 측정 방법


이미지에서 이미지의 주점(principal point)에 해당하는 바닥점(P)을 찾은 후 삼각법을 이용해 틸트를 계산한다.


그림 2. 삼각법을 이용한 틸트(tilt) 계산


이미지에서 주점(principal point)의 위치는 카메라 캘리브레이션을 통해 구하거나 또는 간단하게는 이미지의 중심을 주점으로 잡는다.


다음으로 이미지의 주점에 해당하는 지점이 실제 바닥에서 어디인지를 육안으로 확인한다. 이 점을 P라 하자. 이후 카메라와 P와의 수평거리를 d, 카메라의 높이를 h라 하면 카메라의 틸트는 다음과 같이 계산된다.


 --- (1)


☞ h와 d를 측량할 때 카메라가 큰 경우 카메라의 원점을 어디로 잡아야 할지 애매할 수 있다. 흔히 이미지 센서가 있을법한 위치를 기준점으로 생각하기 쉽지만 카메라 원점의 정확한 위치는 이미지센서가 아니라 렌즈의 중심으로 잡는 것이 정확하다.



방법 2. 소실점(vanishing point)을 이용한 방법


앞서 주점(principal point)를 이용한 방법은 줄자나 레이져 거리측정기 등의 번거로운 측량 작업이 필요하다. 하지만 소실점(vanishing point)을 이용한 방법은 입력 영상만 가지고 틸트(tilt) 추정이 가능하며 카메라 높이 등의 부가정보도 필요치 않다. 단, 카메라 파라미터(주점과 초점거리)는 알고 있어야 한다.


영상의 소실점(vanishing point)이란 실세계에서 평행한 선들이 카메라 영상에 투영되면 원근효과로 인해 한 점에서 만날 수 있게 되는데, 이 교점을 소실점이라 한다. 예를 들어, 기찻길을 카메라로 촬영했을 때 영상에서 두 선로가 만나는 점이 소실점이다.


그림 3. 소실점(vanishing point)


그런데, 소실점(vanishing point)의 재미있는 성질은 카메라의 틸트(tilt)가 0일 때는 주점과 동일 수평선 상에 생성되고 틸트가 +일 경우에는 주점의 아래쪽에, 틸트가 -일 경우에는 주점의 위쪽에 소실점이 형성된다는 점이다.


즉, 영상에서 소실점의 위치는 카메라의 틸트에 의해 결정되는 수치로서 영상에서 소실점의 y 좌표를 알면 카메라의 틸트(tilt)는 다음과 같이 간단하게 계산된다.


 --- (2)


단, vy는 소실점의 y좌표(픽셀좌표), cy는 주점의 y좌표, fy는 y축 방향 카메라 초점거리.


식 (2)가 성립하는 이유는 아래 그림과 같다. 즉, 기하학적으로 봤을 때 영상에서 소실점의 위치는 카메라 원점을 지나고 지면에 평행한 선이 이미지 평면과 만나는 곳이기 때문이다.


그림 4. 소실점의 위치


☞ 여기서 소실점은 바닥면에 대한 소실점이며 기둥이나 벽면 등의 세로 방향의 선들에 대한 소실점은 해당되지 않음에 주의한다.


☞ 복도 환경에 설치된 카메라의 경우에는 복도 바닥의 경계선들을 이용하여 소실점을 손쉽게 계산할 수 있지만 야외나 자동차에 설치된 카메라의 경우에는 소실점을 구하는 것이 어려울 수 있다. 이 경우에는 직사각형의 커다란 판을 바닥에 내려놓은 후 영상을 획득하여 소실점을 구한다.


☞ 식 (2)에 의한 틸트 계산은 카메라의 롤(roll) 회전이 없는 경우에 한해 성립한다. 만일 카메라의 roll 회전이 존재하는 경우에는 소실점만으로는 문제 해결이 안되며 소실선(vanishing line) 정보가 필요하다. 소실선이 주어질 경우, 카메라 주점과 소실선의 수직거리를 d(픽셀 단위), 초점거리를 f라 하면 틸트는 θtilt = atan2(d, f)로 계산된다.



방법 3. 3D 변환행렬을 이용한 방법


마지막으로 3D 변환을 이용한 방법은 월드좌표계와 카메라좌표계 사이의 회전변환 행렬이 주어져 있을 때 회전변환 핼렬로부터 카메라의 틸트를 추출하는 방법이다. 단, 이 때의 월드좌표계는 바닥(지면)을 XY 평면으로 설정한 경우여야 한다.


☞ 월드좌표계와 카메라좌표계의 개념에 대해서는 [영상 Geometry #1] 좌표계 글을 참조한다.


월드좌표에서 카메라좌표로의 변환이 3×3 회전변환 행렬 R과 3×1 평행이동 벡터 t로 주어졌다고 가정하자. 즉, 3차원 공간상의 한점 P에 대한 월드좌표를 Pw, 카메라좌표를 Pc라 하면 R, t는 다음 수식을 만족하는 행렬(벡터)이다.


 --- (3)


이러한 좌표계 변환행렬은 opencv의 solvePnP 함수를 이용하여 구할 수 있으며 R, t를 구하는 방법 및 R로부터 틸트(tilt)를 추출하는 방법에 대한 자세한 내용은 Extrinsic Camera Calibration - 카메라의 위치 및 자세 파악 글을 참조한다.


by 다크 프로그래머


영상의 기하학적 해석 - 영상의 지면 투영(ground projection)

영상처리 2016. 7. 17. 12:05

카메라 영상에서 사람이나 자동차를 찾았을 때, 찾은 물체가 카메라로부터 실제로 얼마나 멀리 떨어져 있고 또 키는 얼마나 큰지 알아내는 것은 영상기하학의 가장 빈번한 응용 중 하나이다.


예를 들어, CCTV 카메라에 잡힌 물체의 실제 거리와 크기를 알아내거나 자동차에 달린 블랙박스 카메라에서 전방의 물체를 자동으로 인식해서 물체의 크기 및 남은 거리, 이동속도를 추정하는 것 등이 있다.


그림 1. 출처: https://users.ece.cmu.edu/~hyunggic/vision_detection_tracking.html


그런데 이러한 영상해석 응용은 그 활용성에 비해서 관련자료나 설명자료 등이 거의 없고 아무래도 수학적(기하학적) 해석이 필요하다 보니 손쉽게 접근하기도 어렵다.


이 글에서는 영상에서 찾은 물체가 카메라를 기준으로 실제 얼마나 멀리 떨어져 있고 또 크기는 얼마인지 구할 수 있는 구체적 방법들을 정리해 본다.


먼저, 들어가기 앞서 다음의 두 글을 읽어보면 좋다 (전파거북이님 말씀처럼 다음 두 글의 내용을 모르고 이 글을 읽으면 본인이 바보로 느껴질 수 있습니다 ^^).



문제 정의


아래 그림과 같이 영상에서 자동차와 보행자를 찾았다고 하자.


그림 2. 물체 기준점


알아내고 싶은 것은 이들 물체가 카메라로부터 실제 얼마나 멀리 떨어져 있고 또 크기(폭, 높이)는 얼마인가이다. 그런데 여기서 물체의 '위치'는 3D 좌표가 아니라 2D 좌표임에 주의해야 한다. 이 문제에 있어서 불변의 가정은 '물체는 땅(지면)에 붙어있다' 이다. 그리고 우리가 구하고자 하는 물체의 위치란 물체가 지면과 맞닿은 지점(중점)의 2D 좌표이다 (그림에서 A 지점).


따라서, 풀고자 하는 문제는 영상내 임의의 영상좌표(픽셀좌표)에 대해 대응되는 2D 지면좌표(ground plane coordinate)를 구하는 문제로 귀결된다. 일단 물체의 위치(지면좌표)가 구해지면 물체의 크기(폭, 높이)는 간단한 비례식을 통해 손쉽게 계산될 수 있다.


정리하면, 이 문제의 가정은 1) 카메라의 높이와 방향이 고정되어 있다(벽에 붙어 있거나 자동차에 부착된 경우 등), 2) 물체는 항상 지면에 붙어 있다, 3) 카메라 파라미터(렌즈 왜곡계수, 높이, 각도 등)를 미리 알고 있다 이고 풀고자 하는 문제는 임의의 영상좌표에 대응되는 2D 지면좌표를 구하는 것이다.



접근 방법들


크게 3가지 접근 방법이 가능하다. 그것은 손과 연필을 이용해 기하학적으로 직접 푸는 방법, 호모그래피(homography)를 이용한 방법, 3D 변환을 이용한 방법이다. 문제에 대한 전반적인 이해를 위해 직접적인 기하학적 계산 방법부터 시작한다.



방법 1. 직접적인 기하학적 계산 방법


사실 직접 손으로 계산하는 방법이 가장 복잡하고 설명도 어렵다. 그래도 영상의 기하학적 이해에는 가장 도움이 된다.


먼저, 아래 그림을 살펴보자. 영상좌표 p에 대응되는 지면좌표를 P라 하면 카메라 원점과 p, P는 그림과 같이 일직선상에 존재한다.



그림 3. 영상좌표의 지면투영


카메라 내부파라미터(초점거리 fx, fy, 주점 cx, cy), 지면에서의 높이(h), 카메라의 틸트(θtilt)는 주어져 있다고 가정한다 (θtilt는 카메라 방향이 지면과 수평일 때 0, 위쪽을 바라볼 때 +, 아래쪽을 바라볼 때 -).


☞ 카메라의 높이와 틸트는 external camera calibration을 통해 구할 수 있다 (Extrinsic Camera Calibration - 카메라의 위치 및 자세 파악 글 참조)


입력 영상 픽셀좌표를 p(x,y), 대응되는 지면좌표를 P(X, Y)라 하자.


먼저 카메라의 내부파라미터에 대한 영향을 없애기 위해 픽셀좌표를 정규좌표로 변환한다.


 --- (1)


구해진 정규좌표 (u, v)와 카메라 높이 h, 틸트 θtilt를 이용한 이후의 계산과정은 아래와 같다 (앞서 두 글에 대한 이해와 상상력을 믿고 자세한 설명은 생략한다). 정규 이미지 평면에서는 주점의 좌표가 c(0, 0)이 되고 이미지 평면과 카메라 원점과의 초점거리가 1이 됨에 주의한다.


그림 4. 기하학적 계산 과정


위 계산 결과에서 d는 카메라 원점과 물체와의 지면에서의 직선거리, θ는 카메라 광학축을 기준으로 한 물체의 방향각이다 (카메라 광학축을 기준으로 왼쪽이 +, 오른쪽이 -). 이를 top-view로 보면 아래 그림과 같다.


그림 5. top-view 관계도


여기까지 해서 물체가 카메라로부터 어떤 방향(θ)에 있고 얼마나 떨어져(d) 있는지 계산되었다.


마지막으로 물체의 위치를 지면좌표로 표현하면 다음과 같다 (단, 카메라 위치를 지면좌표계의 원점, 광학축 방향을 X축으로 가정했을 때의 좌표).


 --- (2)


※유의사항

  • 여기서 설명한 기하학적 방법은 카메라의 roll이 0인 경우에만 성립하며 카메라의 roll이 0이 아닌 경우에는 방법2나 방법3을 이용해야 함
  • 최종 계산된 P(X, Y)는 지면좌표계를 어떻게 정의하느냐에 따라 달라질 수 있는 값이며 여기서는 카메라 원점을 지면에 수직으로 투영시킨 점을 원점, 카메라 광학축 방향을 X축으로 잡았을 경우의 좌표임


☞ 물체의 크기를 구하는 방법은 나중에 일괄적으로 설명합니다.



방법2. 호모그래피(Homography)를 이용한 방법


호모그래피(homography)를 이용한 방법은 실용적으로 가장 간편한 방법이며 특별한 이론적 지식 없이도 활용 가능하다. 그 핵심은 몇몇 샘플링 된 영상좌표들에 대해서 대응되는 지면좌표를 실측을 통해 구한 후 여기서 얻어진 영상좌표→지면좌표 변환관계를 다른 경우에도 일반화하여 적용하는 것이다.


구체적 방법에 들어가기 앞서 먼저 호모그래피(homography)의 개념부터 살펴보자.


호모그래피(homography) ― 한 평면을 다른 평면에 투영(projection)시켰을 때 투영된 대응점들 사이에는 일정한 변환관계가 성립하는데 이 변환관계를 호모그래피라 부른다.



그림 6. 호모그래피(Homoggraphy)


호모그래피(homography)는 3×3 행렬로 표현되며 대응점들의 동차좌표(homogeneous coordinate) 표현에 대해 성립하는 변환관계이다. 즉, 한 평면 위의 점들 (x1, y1), (x2, y2), ... 이 다른 평면 위의 점들 (x1', y1'), (x2', y2'), ... 로 각각 투영되었다면 이들 대응점들 사이에는 다음 관계식을 만족하는 3×3 호모그래피 행렬 H가 항상 존재하고 또 유일하게 존재한다 (단, scale factor는 무시할 경우).


 --- (3)


단, s는 동차좌표(homogeneous coordinate) 표현에 있어서 scale factor. 동차좌표 표현에 대해서는 [영상 Geometry #2] Homogeneous Coordinates 글을 참조하기 바란다.


여기서, H가 유일하게 존재한다는 점에 주목할 필요가 있다. 이 말은 p1, p2, p3, p4를 이용해서 H를 구하나 p2, p3, p4, p5를 이용해서 H를 구하나 그 결과가 동일하다는 뜻이다 (일반적으로 호모그래피를 결정하기 위해서는 4개의 대응쌍이 필요하다). 그리고 이 말이 함축하는 중요한 의미는 임의의 네 대응쌍을 이용해서 구한 H를 다른 모든 점들에 대해서도 동일하게 적용할 수 있다는 것이다.


예를 통해 살펴보자. 아래 그림과 같이 마우스패드에 대한 서로 다른 시점의 두 이미지 A, B가 있다. 두 이미지에서의 4개의 대응쌍 p1-p1', p2-p2', p3-p3', p4-p4'을 찾아서 이들 대응 좌표들로부터 호모그래피(homography) H를 구했다고 하자. 이 때, 이렇게 구한 H는 다른 점들에 대해서도 동일하게 적용된다. 즉, p5에 대응되는 점의 이미지 B에서의 좌표는 H*p5로 구할 수 있다. 그리고 p5 뿐만 아니라 다른 모든 마우스패드 상의 대응점들에 대해서도 p' = Hp가 성립한다.


그림 7. 호모그래피 예


앞서 호모그래피(homography)는 투영관계에 있는 두 평면 사이의 변환관계라 했다. 그런데 그림 7의 예에서는 서로 다른 두 이미지에 투영된 마우스패드 좌표들 사이의 대응관계에 호모그래피를 사용하였다. 어떻게 된 것일까?


호모그래피(homography)는 직접적인 투영관계에 있는 두 평면 사이에서뿐만 아니라 투영관계에 의해 직·간접적으로 연결되는 모든 평면들 사이에서도 일반적으로 성립한다. 즉, 한 평면을 평면 A와 평면 B에 각각 투영했을 때, 평면 A에 투영된 좌표와 평면 B에 투영된 좌표 사이에서도 호모그래피(homography)가 성립한다. 그 이유는 원래 평면에서의 좌표를 p, 평면 A에 투영된 좌표를 p', 평면 B에 투영된 좌표를 p'', 원래 평면과 평면 A와의 호모그래피를 H1, 평면 B와의 호모그래피를 H2라 하면 p' = H1p, p'' = H2p = H2(H1-1p') = H2H1-1p'가 성립한다. 즉, 평면 A와 평면 B 사이에는 호모그래피 H = H2H1-1가 성립한다. 앞서 그림 7은 마우스패드라는 평면 위의 점들이 두 이미지 평면 A, B에 투영된 경우로서 역시 호모그래피가 성립한다.


그림 8. 이미지 평면 사이의 호모그래피


호모그래피(homography)를 사용하는데 있어서 한가지 주의할 사항은 호모그래피는 평면형 물체에 대해서만 성립한다는 점이다. 만일 마우스패드가 아니라 선풍기, 자동차, 아파트 등과 같이 입체를 가진 물체에 대해서는 호모그래피가 성립하지 않는다 (물론 아파트의 한쪽 벽면만 고려할 경우에는 호모그래피가 성립한다).


☞ 풀고자 하는 문제의 경우 지면과 이미지 평면과의 관계이므로 호모그래피가 성립한다.


원래 문제로 돌아가서 호모그래피(homography)를 이용해서 영상에서 검출된 물체의 실제 위치를 구하는 방법은 다음과 같다.


먼저, 카메라 시야 내에서 바닥에 임의의 네 점을 잡고 이들의 지면좌표를 실측을 통해 측정한다. 지면좌표계의 기준(원점 등)은 자신이 원하는데로 잡는다. CCTV 등과 같이 건물 내에 고정된 카메라라면 벽의 한쪽 모서리 등을 원점으로 잡는게 실측에 편리할 것이고 자동차에 부착된 카메라라면 자동차의 앞바퀴 중심이나 카메라를 원점으로 잡는게 편할 것이다. 어쨌든 자신이 잡은 기준(지면좌표계)에 맞춰 네 점의 지면좌표를 측정한 후 해당 점들의 영상좌표(카메라 이미지에서의 픽셀좌표)를 구한다.


픽셀좌표로부터 지면좌표로의 호모그래피 변환행렬 H의 계산은 opencv의 findHomogray함수를 이용하거나 또는 아래 코드를 이용해서 직접 계산한다 (4쌍의 대응점으로부터 호모그래피를 직접 계산해주는 함수코드를 참고용으로 올린다).


homography.txt


호모그래피 행렬 H가 얻어지면 이후의 과정은 간단하다. 임의의 영상 픽셀좌표 p(x, y)에 대응되는 지면좌표는 p를 동차좌표로 확장한 (x, y, 1)에 H를 곱한 결과를 다시 2d 좌표로 변환하면 얻어진다. 즉, H*(x, y, 1)T = (a, b, c)T라면 구하고자 하는 지면좌표는 (a/c, b/c)가 된다. 


※ 참고사항

호모그래피는 영상 픽셀좌표에 직접 적용해도 좋지만 영상의 왜곡까지 고려한다면 픽셀좌표를 정규이미지좌표(normalized image coordinate)로 변환한 후 정규이미지좌표에 대해 호모그래피를 계산 및 적용하는 것이 효과적임



방법 3. 3D 변환을 이용한 방법


3D 변환을 이용하는 방법은 가장 일반적인 방법이며 영상기하학에서 좌표계에 대한 이해만 있으면 어렵지 않게 적용할 수 있다.


카메라의 내부 파라미터(fx, fy, cx, cy) 및 3D 자세정보(R, t)는 미리 주어져 있다고 가정한다.


☞ 카메라의 내부 파라미터는 카메라 캘리브레이션을 통해 구할 수 있고, 3D 자세정보(R, t)는 opencv의 solvePnP 함수를 이용하여 구할 수 있다 (Extrinsic Camera Calibration - 카메라의 위치 및 자세 파악 글 참조)


이 때, 어떤 3차원 공간상의 한 점 P에 대한 카메라좌표를 Pc, 월드좌표를 Pw라 하면 Pc와 Pw 사이의 변환은 다음 수식에 의해 주어진다.


 --- (4)


입력 영상 픽셀좌표를 p(x,y), 대응되는 지면좌표를 P(X, Y)라 하자.


먼저 카메라의 내부파라미터에 대한 영향을 없애기 위해 픽셀좌표를 정규좌표로 변환한다 (영상에서 모든 기하학적 해석은 정규좌표를 통해 이루어진다).


 --- (5)


이 때, 구한 정규좌표를 3차원 카메라좌표로 해석하면 (u, v, 1)이 된다. 정규이미지평면은 카메라 원점에서 초점거리가 1인 평면이므로 정규이미지 평면 상의 점 (u, v)의 카메라좌표계 좌표는 (u, v, 1)이 된다. 이 점을 pc = (u, v, 1)라 하자.


이제 카메라 원점과 pc를 연결한 직선이 지면과 만나는 점을 구하면 원하는 답을 구할 수 있다. 그리고 지면과의 교점을 구하기 위해서는 카메라좌표계가 아닌 월드좌표계에서 계산을 수행해야 한다. 카메라 원점의 카메라좌표를 Cc, 월드좌표를 Cw라 하고 점 pc의 월드좌표를 pw라 하자. 카메라 원점의 카메라좌표는 항상 (0, 0, 0)임에 주의하자. 즉, Cc = (0, 0, 0)이다. 대응되는 월드좌표는 식 (4)를 이용하여 다음과 같이 계산된다.



그림 9. 3D 좌표계 변환


이제 월드좌표계 상에서 Cw와 pw를 잊는 직선이 지면과 만나는 점을 구하면 된다. 벡터(vector)의 개념을 이용하면 Cw와 pw를 잊는 직선상의 임의의 점은 P = Cw + k(pw - Cw)로 표현할 수 있다 (k는 임의의 상수).


 --- (6)


그런데, 월드좌표계 상에서 지면은 Z = 0인 경우이므로 Cw + k(pw - Cw)의 Z좌표가 0이 되도록 k의 값을 구한 후 식 (6)에 대입하면 원하는 지면좌표 P가 구해진다.


☞ 여기서 구한 지면좌표는 월드좌표계를 어떻게 설정하느냐에 따라 달라지는 값임에 주의한다.



세 방법의 비교


세 방법 중 어느 방법을 써도 무방하다. 단, 기하학적 계산 방법은 카메라가 옆으로 기울어진 경우 즉, roll이 0이 아닌 경우에는 사용할 수 없다. 호모그래피 방법과 3D 변환 방법은 roll이 돌아간 경우에도 적용할 수 있다. 또한 호모그래피 방법은 카메라 캘리브레이션이 없이도 픽셀 좌표만 가지고 곧바로 적용할 수 있는 장점이 있다. 단 영상왜곡까지 고려한다면 호모그래피 방법도 카메라 캘리브레이션이 필요하다. 마지막으로 3D 변환 기법은 가장 일반적인 방법으로서 이 문제 뿐만 아니라 다른 문제에도 확장 적용할 수 있다는 장점이 있다.



물체의 크기 구하기


일단 앞서 방법들을 이용하여 물체의 위치(지면좌표)가 구해지면 크기(폭, 높이)를 구하는 것은 비례식을 이용하여 손쉽게 계산할 수 있다.



그림 10. 지면좌표 투영을 이용한 물체의 크기 추정


카메라의 지면에서의 높이를 hcam, 구하고자 하는 물체의 키를 hobj라 하자. 카메라의 높이는 미리 알고 있다고 가정한다. 카메라와 물체와의 거리(d1)는 앞서 방법을 통해 이미 구해진 상태이다. 이제 물체의 발끝이 아닌 머리끝 지점에 대해 지면좌표를 앞서 방법으로 구한다. 그러면 이렇게 구한 지면좌표는 그림 10에서와 같이 카메라와 물체의 최상단 끝을 연결한 선이 지면과 만나는 지점이다. 그 거리를 d2라 하자. 그러면 삼각형의 비례관계에 의해 hcam : hobj = d2 : d2-d1이 성립한다. 즉, hobj = hcam*(d2-d1)/d2로 계산된다. 끝.


폭을 계산하는 것은... ... ... 연습문제로;;


by 다크 프로그래머