[영상 Geometry #1] 좌표계

영상처리 2013.07.06 16:16

이번 글은 컴퓨터 비전에서 가장 어렵고 골치아픈 주제중 하나인 영상 geometry(기하학?)에 대한 것입니다.


영상 Geometry는 카메라 캘리브레이션, 스테레오 매칭, structure from motion, 모션 추정, local feature matching, 매치무브(matchmove) 등 다양한 비전 분야에 있어서 가장 기본이 되는 요소로서, 사실 geometry에 대한 이해 없이는 이들 분야 또한 제대로 접근하기 힘들 것입니다.


저 또한 그동안 영상 geometry에 대한 피상적인 지식만으로 근근히 버텨왔으나 아무래도 안되겠다 싶어 최근 관련 공부를 시작했습니다. 본 포스팅에서는 저도 공부를 해가면서 projective geometry, epipolar geometry, multiview geometry, essential matrix, fundamental matrix, homogeneous coordinates, affine/perspective transformation, homography, planar homography 등 관련 개념들을 쭉 정리해볼 생각입니다.


다음은 예상되는 목차 리스트입니다.


1. 좌표계 (Coordinate System)

2. Homogeneous Coordinates

3. 2D 변환 (2D Transformations)

4. 3D 변환 (3D Transformations)

5. Imaging Geometry

6. Epipolar Geometry

7. ...


첫 번째 주제는 좌표계입니다.


-----------


1. 좌표계 (Coordinate System)


무엇을 먼저 쓸까 고민하다가 일단은 좌표계 시스템을 정의해야 할 것 같아서 이것을 먼저 정리하고 넘어가려 합니다.


영상 geometry에서는 크게 4가지 좌표계가 존재합니다.


월드좌표계, 카메라좌표계, 정규좌표계, 픽셀좌표계


<그림 1>


월드 좌표계와 카메라 좌표계는 3차원 좌표계이고, 정규좌표계와 픽셀좌표계는 2D 좌표계입니다. 이들 좌표계에 대한 명칭이나 기호, 좌표축 방향 등은  정의하기 따라서 조금씩 차이가 있을 수 있지만 이 글에서는 위 그림을 기준으로 모든 설명을 진행토록 하겠습니다.


이들 4가지 좌표계를 명확히 구분하고 이해하는 것은 카메라 geometry를 이해하는데 있어서 매우 중요합니다. 그럼 각각의 좌표계에 대해 하나씩 살펴보도록 하겠습니다.


1.1 월드 좌표계 (World Coordinate System)


우리가 사물(물체)의 위치를 표현할 때 기준으로 삼는 좌표계입니다. 월드좌표계는 어디 하늘에서 주어져 있는 것이 아니라 문제에 따라서 우리가 임의로 잡아서 사용할 수 있는 좌표계입니다. 예를 들어, 자신의 안방 한쪽 모서리를 원점으로 잡고 한쪽 벽면 방향을 X축, 다른쪽 벽면 방향을 Y축, 하늘을 바라보는 방향을 Z축으로 잡을 수 있습니다. 좌표의 단위(unit)는 미터(meter)로 해도 되고 센티미터(centimeter)로 해도 됩니다. 중요한 점은 좌표계는 일종의 약속(protocol)이기 때문에 (3, 1, -10)이라고 했을 때 이 점이 어떤 위치인지 그 문제 내에서 만큼은 유일하게 결정될 수 있으면 되는 것입니다. 이 글에서는 월드좌표계 상의 점을 다음과 같이 대문자로 표기합니다.


 --- (1)



1.2 카메라 좌표계 (Camera Coordinate System)


월드 좌표계가 우리가 살고 있는 공간의 한 지점을 기준으로 한 좌표계라면 카메라 좌표계는 카메라를 기준으로 한 좌표계입니다. 카메라 좌표계는 아래 그림과 같이 카메라의 초점(렌즈의 중심)을 원점, 카메라의 정면 광학축 방향을 Z축, 카메라 아래쪽 방향을 Y축, 오른쪽 방향을 X축으로 잡습니다. 기호는 월드좌표계와 구분하기 위해 아랫첨자 c를 사용하겠습니다.


<그림 2>


카메라 좌표계의 단위는 물론 월드좌표계와 동일해야 할 것입니다. 즉, 월드 좌표계에서 meter 단위를 사용한다면 카메라 좌표계도 meter 단위를 사용합니다. 이 글에서는 카메라 좌표계를 기준으로 한 점의 좌표는 다음과 같이 아랫첨자 c를 사용한 대문자로 표기합니다.


 --- (2)



1.3 픽셀 좌표계 (Pixel Image Coordinate System)


편의상 픽셀 좌표계라고 썼지만, 보통은 영상좌표계(Image Coordinate System)라고 불립니다. 픽셀 좌표계는 우리가 실제 눈으로 보는 영상에 대한 좌표계로서 위 <그림 1>과 같이 이미지의 왼쪽상단(left-top) 모서리를 원점, 오른쪽 방향을 x축 증가방향, 아래쪽 방향을 y축 증가방향으로 합니다. 그리고 픽셀 좌표계의 x축, y축에 의해 결정되는 평면을 이미지 평면 (image plane)이라 부릅니다.


기하학적으로 볼 때, 3D 공간상의 한 점 P = (X,Y,Z)는 카메라의 초점 (또는 렌즈의 초점)을 지나서 이미지 평면의 한 점 pimg = (x, y)에 투영(projection) 됩니다. 알다시피 점 P와 점 pimg를 잊는 선(ray) 상에 있는 모든 3D 점들은 모두 pimg로 투영됩니다. 따라서 3D 점 P로부터 pimg는 유일하게 결정할 수 있지만, 반대로 영상 픽셀 pimg로부터 P를 구하는 것은 부가적인 정보 없이는 불가능합니다.


어쨌든 픽셀 좌표계의 단위는 픽셀(pixel)이며, 픽셀 좌표는 다음과 같이 소문자로 표기합니다.


 --- (3)



1.4 정규 좌표계 (Normalized Image Coordinate System)


마지막으로 가장 중요한 정규좌표계입니다. 원래는 정규 이미지 좌표계이지만 줄여서 정규 좌표계로 쓰겠습니다. 지금까지 나온 좌표계는 모두 매우 직관적인 좌표계이지만 정규 좌표계는 편의상 도입된 가상의 좌표계입니다.


정규 좌표계를 한마디로 설명하자면 카메라의 내부 파라미터(intrinsic parameter)의 영향을 제거한 이미지 좌표계로 볼 수 있습니다. 또한 정규 좌표계는 좌표계의 단위를 없앤(정규화된) 좌표계이며 카메라 초점과의 거리가 1인 가상의 이미지 평면을 정의하는 좌표계입니다.


좀더 쉽게 생각하자면, 원래의 이미지 평면을 평행이동시켜서 카메라 초점과의 거리가 1인 지점으로 옮겨놓은 이미지 평면을 생각하면 됩니다.


카메라 내부 파라미터에 대한 내용은 [영상처리] - 카메라 캘리브레이션 (Camera Calibration) 글을 참조하시기 바랍니다.


정규 좌표계의 원점은 정규 이미지 평면의 중점(광학축 Zc와의 교점)입니다 (그림 1 참조). 픽셀 좌표계와 원점의 위치가 다름에 주의하기 바랍니다. 그리고 좌표축은 픽셀 좌표계와 구분하기 위해 u, v를 사용하겠습니다.


 --- (4)


카메라 내부 파라미터를 알면 다음과 같이 픽셀 좌표와 정규 좌표 사이의 변환이 가능합니다.


 --- (5)


 --- (6)


여기서 fx, fy는 초점거리, cx, cy는 주점(principal point, 광학축과 영상평면이 만나는 픽셀좌표)이며, 가운데 3 x 3 행렬을 camera matrix라 부릅니다. 위 식을 정리하면 다음과 같은 식이 됩니다.


 --- (7)


역으로, 이미지 상의 픽셀 (x, y)에 대응하는 정규좌표는 다음과 같이 계산됩니다.


 --- (8)


그렇다면 이렇게 굳이 정규 이미지 평면과 정규 좌표계를 도입한 이유는 무엇일까요?


우리가 동일한 장면을 동일한 위치와 동일한 각도에서 찍더라도 사용한 카메라에 따라서 또는 카메라 세팅에 따라서 서로 다른 영상을 얻게 됩니다. 그런데, 이러한 카메라 간의 차이는 어떤 일관된 기하학적인 해석을 하는데 있어서 불필요한 요소일 것입니다. 따라서, 이러한 요소를 제거한 정규화된 이미지 평면에서 공통된 기하학적 특성을 분석하고 이론을 수립하는 것이 보다 효과적이기 때문입니다.



☞ 원래는 하나의 글로 관련된 모든 내용을 정리하려 했으나 글이 너무 길어지는 관계로 부득이하게 소주제별로 글을 나누게 되었습니다. 물리적으로는 나뉘어져 있지만 하나의 글로 봐 주시면 좋겠습니다다. 그리고 향후 이어지는 Geometry 글들은 모두 여기서 설명한 좌표계 시스템을 기준으로 설명할 예정입니다.


☞ 카메라 좌표계 모델 그림을 일부 수정하였습니다. 수정 전에는 픽셀 이미지 평면을 카메라 초점 뒤쪽에 위치시켰으나 그렇게 하면 맺히는 상이 상하좌우 반전되는 문제가 있어서 정규 이미지 평면과 마찬가지로 초점 앞으로 위치를 옮겼습니다. 이에 따라 좌표축 방향들도 같이 수정되었습니다. 혹시 수정전 내용을 보신 분은 참고하시기 바랍니다 (수정일: 7.24일)


by 다크 프로그래머


'영상처리' 카테고리의 다른 글

[영상 Geometry #2] Homogeneous Coordinates  (16) 2013.07.06
[영상 Geometry #1] 좌표계  (61) 2013.07.06
TOF 카메라의 원리  (18) 2013.06.24
OpenCV Haar/cascade training 튜토리얼  (204) 2013.05.31
  • 이전 댓글 더보기
  • 레잇비소울 2015.04.03 14:25 신고 ADDR 수정/삭제 답글

    늘 보면서 궁금한점은

    진짜 뭐 하시는 분인지 궁금합니다 ^^

    볼 때마다 대단합니다 ㅎㅎ

    • BlogIcon 다크pgmr 2015.04.04 05:52 신고 수정/삭제

      그냥 평범한 일상을 살아가는 사람입니다. 블로그는 짬짬이 시간을 내서 하고 있습니다. ^^

  • 멋진폐인 2015.04.10 21:57 신고 ADDR 수정/삭제 답글

    대단하십니다. 이렇게 일목요연하게 정리를 해주셨군요.
    Epipolar 검색하고 찾아왔는데 이런 좋은 정보가 있다니.. 잘 참고하겠습니다.

  • 리오드 2015.05.07 17:40 신고 ADDR 수정/삭제 답글

    질문이 있어 댓글 남김니다.
    정규 좌표계의 의미를 카메라 내부 피라미터에 영향을 제거한 이미지 좌표계라고 말씀하셨는데
    수식8에 주점과 초점인자가 정규좌표계의 값을 결정하는데 어떤 의미에서 내부파라미터의 영향으르 제거한다는건지 이해가 되지않습니다.

    • BlogIcon 다크pgmr 2015.05.10 11:57 신고 수정/삭제

      동일한 장면을 동일한 시점에서 촬영해도 물체의 픽셀좌표는 사용한 카메라에 따라서 달라지고 같은 카메라라고 하더라도 카메라의 세팅(줌, 해상도 등)에 따라서 달라집니다. 하지만 정규좌표는 시점과 장면이 동일하다면 항상 동일하게 나옵니다. 카메라의 내부 파라미터에 대한 설명 내용(http://darkpgmr.tistory.com/32), 픽셀 좌표의 정의, 정규 좌표의 정의에 대해 다시 한번 살펴보시고 천천히 생각해 보시면 좋겠습니다. 그래도 이해가 안가는 부분이 남으면 다시 한번 댓글을 남겨주시기 바랍니다.

  • BlogIcon 이길재 2015.05.19 14:12 신고 ADDR 수정/삭제 답글

    좋은 정보감사드립니다.

  • 늙고병든 2015.06.22 20:45 신고 ADDR 수정/삭제 답글

    안녕하세요 질문드릴게있습니다
    각 픽셀은 어느 방향을 촬영하고 있는지를 알아내고 싶은데
    그럴려면 한 픽셀당 벡터하나를 부여해주면될꺼같아서 벡터를 찾으려고 하니 잘모르겟네요
    정규화된 좌표u,v와 z값으론 1을 해줘서 <u,v,1>로 할경우 그 픽셀에 해당하는 벡터가 될까요?
    픽셀좌표를 알고 내부행렬을알면 정규화좌표를 구할수 있고, 정규화좌표는 z값은 1로하는 좌표이므로이렇게 하면 될꺼같은데 맞는지 틀리는지를 모르겟네요 그리고 정규화좌표는 무차원,단위가 없는 좌표계죠? 8번 수식을보면 픽셀단위/픽셀단위 이므로 무차원인거같은데 궁금합니다!

    • BlogIcon 다크pgmr 2015.06.23 00:53 신고 수정/삭제

      네, 모두 맞습니다. 다만 무차원이라는 용어보다는 단위가 없다는게 맞을것 같습니다.

  • 폰카만쓰는데... 2015.07.27 17:32 신고 ADDR 수정/삭제 답글


    안녕하세요?
    먼저 소중한 정보를 나누어 주셔서 감사드립니다.
    작성하신 자료와 관련이 있는지는 모르겠으나 우선 질문 드려봅니다.
    카메라 촬영거리와 초점거리를 이용하여 보정된 이미지에서의 물체 크기를 측정하려고 하는데,
    촬영거리, 초점거리등의 정의가 다소 혼란스럽습니다.
    일반 카메라의 경우 렌즈가 여러겹 있고, 줌 사용등으로 인해 초점 위치를 정확하게 파악하기 어렵습니다.
    초점거리를 최소(또는 최대)로 고정한다고 가정 시 카메라의 외형을 기준으로 초점을 정의할 방법이 있을까요?

    • BlogIcon 다크pgmr 2015.07.27 18:16 신고 수정/삭제

      외형을 가지고 초점거리를 구하기는 힘들지 않을까요.. 카메라 캘리브레이션을 하시는게 좋겠습니다.

  • 폰카만쓰는데... 2015.07.28 10:55 신고 ADDR 수정/삭제 답글

    감사합니다. 질문이 좀 부정확했었던것 같습니다.
    캘리브레이션에서 구한 fx(이미지 센서와 초점 또는 렌즈 중심간 거리), 이미지센서의 위치, 촬영 대상과 초점간 거리를 알면 대상물의 크기를 측정 할 수 있을까요?

    • BlogIcon 다크pgmr 2015.07.28 11:48 신고 수정/삭제

      네 물론입니다. 이미지에서의 물체의 픽셀 크기를 a, 초점거리를 f, 물체와의 거리를 d, 물체의 크기를 s라면 s = (a/f)*d와 같이 계산할 수 있습니다. 하지만 물체와의 거리가 멀어질수록 정확도는 크게 떨어집니다. 왜냐하면 10m 떨어진 물체나 20m 떨어진 물체나 영상에서의 크기 차이는 크지 않기 때문입니다. 물론 물체가 가까이 있는 경우에는 거리에 따른 영상에서의 크기 차이가 크기 때문에 비교적 정확하게 크기 측정이 가능합니다.

  • 누크 2016.06.20 22:02 신고 ADDR 수정/삭제 답글

    안녕하세요 다크프로그래머님
    주말에 캘리브레이션 프로그램 만들어보다가 막힘이 있어서 질문했던 사람입니다.

    제가 부족함을 많이 느끼고 처음부터 다시 공부해보려고 #1 좌표계로 오게되었습니다.
    다크프로그래머님의 글을 읽고 한가지 궁금점이 생겨 댓글을 남깁니다.

    정규 좌표계를 카메라의 내부 파라미터의 영향을 제거한 픽셀 좌표계라고 설명해주셨는데,
    만약 x=PX에서 P행렬을 QR분해하여 양 변에 K행렬의역행렬을 곱해주게되면
    픽셀 좌표계 -> 정규 좌표계로 변환했다고 봐도 되는 것일까요?

    • BlogIcon 다크pgmr 2016.06.21 01:51 신고 수정/삭제

      네 그렇게 보셔도 됩니다. 픽셀 좌표에 카메라 행렬의 역행렬을 곱하면 정규 좌표가 나오고, 정규 좌표에 카메라 행렬을 곱하면 픽셀 좌표가 나옵니다.

    • 누크 2016.06.22 02:17 신고 수정/삭제

      네 매번 궁금증을 해결해주셔서 감사드립니다!

  • 취직하자 2016.07.06 21:12 신고 ADDR 수정/삭제 답글

    안녕하세요 다크님! 현재 논문을 참조하여 차선 트래킹 중인 학생입니다.
    이번 프로젝트에서 영상처리를 맡았는데 다크님 블로그가 큰 도움이 되었습니다!
    현재 직선은 트래킹은 완료되었고 곡선으로 넘어가고 있는 중에 문제가 생겨서 질문드립니다!
    3차원 좌표(X, Y, Z, 1)를 회전과 이동을 거쳐 카메라 좌표(Xc, Yc, Zc, 1)를 구해야 합니다.
    제가 사용하는 영상은 유튜브에서 다운 받은 고속도로 주행 영상이구요.
    따라서 3차원 좌표 (X, Y, Z, 1)에 대해 어떻게 접근해야 하는지 의문입니다.
    제가 지금까지 참고한 내용은
    2차원 영상좌표(x, y)에 대응하는 3차원 공간 좌표를 구하고자 할 때
    먼저 (x - cx, y - cy)로 영상좌표의 원점을 중심으로 옮긴후
    Z거리가 1인 정규이미지 평면에서의 좌표((x - cx)/fx, (y - cy)/fy))로 바꾸고
    다음으로 실제 물체와의 거리 Z를 반영해주면 ((x - cx)/fx*Z, (y - cy)/fy*Z, Z)가 3차원 공간의 좌표라고 합니다.
    카메라 내부 파라미터 cx, cy, fx, fy는 다크님의 프로그램을 통해 대충 구했습니다.
    문제는 실제 물체와의 거리 Z인데 이놈을 모르면 3차원 좌표가 유일하지 않다고 하셔서...
    실제 물체와의 거리를 meter라고 할 때 이놈을 픽셀로 표현해주어야 하는데 여기서도 의문이 듭니다.
    Z에 대해 어떻게 접근해야하는지 조언 부탁드립니다!

    • BlogIcon 다크pgmr 2016.07.07 10:16 신고 수정/삭제

      일반적으로는 Z를 구할 수 없지만 카메라의 높이 및 자세(틸트 등)가 고정되어 있고 물체가 지면에 붙어있다는 가정을 이용하면 계산이 가능합니다.

    • 취직하자 2016.07.07 13:50 신고 수정/삭제

      답변 감사합니다!!
      죄송한데 몇가지만 더 질문드릴게요ㅠㅠ
      우선 제가 하고자 하는 것은 영상에서 구한 대표 차선에 가상의 원을 투영하려는 것입니다. 다크님 말씀대로 카메라의 높이 1.3m, 팬은 고정, 틸트가 도로면 방향으로 10도라고 한다면, -10도로 계산 하는 것인가요? 또한 물체를 도로의 차선이라고 할 때, 카메라로부터 차선의 원하는 지점(변곡점)까지의 거리가 10m라고 한다면, Z값은 10m가 되는 것인가요? 너무 많이 물어보는거 같아서 죄송합니다 ㅠㅠ

    • BlogIcon 다크pgmr 2016.07.07 14:21 신고 수정/삭제

      중고 수학에서 xy평면 위의 점 p(a, b)가 있을 때 p의 x좌표는 p를 x축에 투영시킨 좌표이고, y좌표는 y축에 투영시킨 좌표입니다. 마찬가지로 Z는 원하는 점을 Z축에 투영시킨 좌표입니다.
      원하는 결과를 얻기 위해서는 기하학적 해석 및 약간의 수학적 계산이 필요합니다. 먼저, 카메라 파라미터의 의미와 픽셀좌표, 정규이미지좌표, 카메라좌표, 월드좌표에 대한 구분 및 이해가 필요합니다. 그 다음에는 수학적인(특히 기하학적인) 계산이 요구됩니다.. 수학적 계산이 쉽지는 않겠지만 중고 수학 이상의 지식을 요구하지는 않습니다. 한번 식을 잘 세워보시기 바랍니다. 질문하신 내용중 한가지, ((x - cx)/fx*Z, (y - cy)/fy*Z, Z)는 ((x - cx)/fx*Zc, (y - cy)/fy*Zc, Zc)로 표현하는게 맞으며 3차원 좌표는 맞으나 월드좌표가 아닌 카메라좌표입니다..

  • 진짜대단하네요.. 2016.10.05 16:33 신고 ADDR 수정/삭제 답글

    진짜 대단하다고 밖에 말이 안나옵니다.. 멋잇으세요..

  • 급하게여쭙니다! 2017.01.02 17:51 신고 ADDR 수정/삭제 답글

    안녕하세요 블로그에 실린 내용들 너무나도 유용하게 보고 있습니다!
    지금하는 프로젝트에서 카메라 외부 파라미터를 구하는 부분에서 막혀 이렇게 질문을 남깁니다.
    본문에 실린 opencv예제소스들을 이용해 값을 찾았지만 값이 맞지 않는것 같아 제가 이해하고 한 것들이
    맞는지 확인한번 해주실 수 있을까요?
    1. 각 변이 4cm인 정사각형을 바닥에 내려놓은 후 각 꼭지점에 (0,0,0) (0,4,0)과 같은 좌표를 부여한 후 objectPoints에 push_back하였고, imagePoints는 카메라 영상을 띄울때 커서를 가져다 대면 뜨는 x,y좌표를 push_back해서 넣은 후 아래의 코드는 위에 실린 내용 그대로 적었습니다. 별도의 월드좌표계는 설정하지 않았습니다! 제가 이해하고 실행한것이 맞나요?
    2. 하나 더 여쭤보고 싶은 것은 제가 내부 파라미터 중에서도 optical center라는 파라미터의 값도 구해야하는데 이에 관한 내용이 구글링해도 안보입니다. 혹시 이게 무엇인지와 어떻게 구하는지도 알고계신가요?
    답변기다리겠습니다. 정말 감사합니다!!

    • BlogIcon 다크pgmr 2017.01.02 18:43 신고 수정/삭제

      과정은 맞습니다. 혹시 내부 파라미터가 정확히 입력됬는지 확인해 보시기 바랍니다. 그리고 optical center는 principal point를 말하는 것으로 보입니다.

  • 삼삼삼 2017.05.08 17:34 신고 ADDR 수정/삭제 답글

    우리가 동일한 장면을 동일한 위치와 동일한 각도에서 찍더라도 사용한 카메라에 따라서 또는 카메라 세팅에 따라서 서로 다른 영상을 얻게 됩니다. 그런데, 이러한 카메라 간의 차이는 어떤 일관된 기하학적인 해석을 하는데 있어서 불필요한 요소일 것입니다. 따라서, 이러한 요소를 제거한 정규화된 이미지 평면에서 공통된 기하학적 특성을 분석하고 이론을 수립하는 것이 보다 효과적이기 때문입니다.
    =========================================================
    이렇게 말씀하신 근거자료는 어떤게 있을까요?
    내용적으로는 이해가 가는데 참고할만한 자료가 있을까요?

    • BlogIcon 다크pgmr 2017.05.08 19:07 신고 수정/삭제

      카메라 캘리브레이션을 제 나름의 방식으로 이해하고 표현해 낸 것이라서 따로 참고자료는 없습니다. 아마도 어딘가에는 비슷한 표현의 설명이 있을지도 모르겠습니다만 저는 아직 보지는 못했습니다. 굳이 따로 서적의 권위가 필요한가요? 인용이 필요한 것이라면 제 블로그 주소를 인용하셔도 괜찮다고 생각합니다. 실제로 논문이나 기고문 등에서 제 블로그를 인용하는 경우도 종종 있습니다.

  • 탁구치는 로봇 2017.05.12 02:54 신고 ADDR 수정/삭제 답글

    안녕하세요 탁구치는 로봇을 만들기위해 영상처리관련해서 이제 막 공부를 시작한 4학년입니다.
    탁구공을 인식하여 픽셀 좌표계에서 그 좌표를 알고싶은데 혹시 opencv에 좌표를 알수있는 함수가있는 궁금합니다.
    또는 과제를 진행하기위해 참고해서 볼만한 논문이나 자료와 찾아볼 키워드를 가르쳐 주시면 감사하겠습니다.

    • BlogIcon 다크pgmr 2017.05.12 08:36 신고 수정/삭제

      구글에서 'opencv blob detection'이라고 검색하면 관련 자료가 꽤 있을 것입니다.

  • 완전초보 2017.07.11 10:04 신고 ADDR 수정/삭제 답글

    뭣좀하나 질문하려고 하는데,,, ㅠㅠ
    그러면 실제로카메라영상을 가지고 어떤 지점 기준으로 실제 움직인거리를 추적하려면,
    월드좌표계로 바꿔서 해야되는건가요??
    그러면, 카메라로 찍으면 카메라에 찍힌 영상은 카메라좌표계(?)이고, 그걸 월드좌표계로변환하면되는건가요???

    • BlogIcon 다크pgmr 2017.07.11 13:43 신고 수정/삭제

      네, 실제 움직인 거리는 월드좌표로 계산해야 합니다. 공간상의 동일한 지점도 좌표계를 어떻게 잡는지에 따라서 좌표가 달라질 수 있습니다. 카메라 좌표계는 카메라를 중심으로 좌표계를 잡은 것입니다. 일단은 이미지에 찍힌 픽셀좌표를 카메라 좌표로 변환한 후, 이것을 다시 월드좌표로 변환해야 합니다.

    • 완전초보 2017.07.11 14:51 신고 수정/삭제

      아 그랬군요!
      감사합니다!!!!

      한가지만 더, 정말 가벼운(?)질문하나 하려고하는데요.
      월드좌표와 카메라좌표는 둘다 좌표단위가 실제 길이이고, 3차원인 공통점이있는데
      다만 차이점은 월드좌표는 원점을 프로그래머가 지정하는거고, 카메라좌표는 카메라를 원점으로 지정한거잖아요.
      그러면, 카메라를 기준으로 어떤 타겟의 움직임을 측정하려고하는거면,
      카메라를 원점으로 잡는게 되고,
      그러면 이런 제약사항에서는 카메라좌표나 월드좌표나 같게 되는..거겠죠??

    • BlogIcon 다크pgmr 2017.07.11 17:41 신고 수정/삭제

      네, 그렇습니다. 문제에 따라서 카메라 좌표를 월드좌표로 설정할 수 있습니다.

  • 초보 2017.07.18 15:28 신고 ADDR 수정/삭제 답글

    정규 좌표계를 한마디로 설명하자면 카메라의 내부 파라미터(intrinsic parameter)의 영향을 제거한 이미지 좌표계로 볼 수 있습니다. 또한 정규 좌표계는 좌표계의 단위를 없앤(정규화된) 좌표계이며 카메라 초점과의 거리가 1인 가상의 이미지 평면을 정의하는 좌표계입니다.

    저는 초점거리의 단위는 픽셀이라고 알고 있습니다. 그럼 여기서 '초점과의 거리 1'의 단위는 픽셀인건가요? 아니면 정규좌표계에는 단위가 없기 때문에 초점과의 거리 1은 단위가 없는건가요?

    • BlogIcon 다크pgmr 2017.07.18 20:26 신고 수정/삭제

      단위가 없는 것이 맞습니다. 또는 어떤 단위로도 사용될 수 있다고 봐도 무방합니다. 예를 들어, 초점거리 1일 때 정규좌표가 (2, 1)였다면, 초점거리 1m인 지점에서의 가상의 좌표는 (2m, 1m)가 되고, 초점거리 1cm인 지점에서의 가상의 좌표는 (2cm, 1cm)가 됩니다. 또한 초점거리 10pixel 지점에서의 가상의 이미지 좌표는 (20pixel, 10pixel)이 됩니다. 즉, 어떤 단위로도 해석이 가능합니다. 좋은 질문입니다 ^^

  • 낭만자객 2017.11.01 02:31 신고 ADDR 수정/삭제 답글

    안녕하세요.
    블로그를 보면서 공부를 하고 있는 학생입니다.
    fundamental matrix에서 Camera에서 투영되는 임의의 이미지좌표(픽셀) 값과 프로젝트에서 투영되는 임의의 이미지좌표(픽셀) 값은 어떻게 구하는 건가요??

    • BlogIcon 다크pgmr 2017.11.01 14:41 신고 수정/삭제

      안녕하세요. 질문하신 내용만으로는 내용 파악이 잘 안됩니다. 다시 한번 정리하여 질문해 주시기 바랍니다.

  • 333 2018.02.05 09:40 신고 ADDR 수정/삭제 답글

    렌즈왜곡이 제거된 초점거리1인 평면이 정규이미지 평면이라면
    렌즈모델을 단순하게 시각화 했을 때..
    정규이미지 평면은 반전되지 않은 상태로 렌즈의 앞쪽으로 초점거리1인 곳에 위치해야하고
    이미지평면은 반전된 상태로 렌즈 뒤쪽으로 초점거리 f인 곳에 위치해야 맞는 것 같은데
    정규이미지 평면은 렌즈의 앞인가요? 뒤인가요?..??(물론 정규이미지 평면은 실제 존재하는 평면은 아닙니다만.....;;;)

    개인적으로는 렌즈 뒤로 1인곳이 정규이미지 평면이라 생각하는데...(렌즈 앞이면 거리는 -1 이 되는것인가...?) 이렇게되면 시각화된 상태에서 이미 렌즈를 통과한 후이기 때문에 렌즈 왜곡이 포함되는 것 같습니다...? 초점거리 1이면 렌즈왜곡이 없다고 설명하신게 이해는 되는데 이런식으로 생각해보니 헷갈리네요..

    • BlogIcon 다크pgmr 2018.02.05 23:07 신고 수정/삭제

      렌즈왜곡은 앞에 있으나 뒤에 있으나 항상 존재합니다. 그리고, 원래대로라면 렌즈 뒤편에 이미지 평면이 있는 것이 맞겠지만 그러면 상이 반전되기 때문에 그냥 여러 계산의 편의상 렌즈 앞에 위치시키는 것으로 생각하시면 좋을 것 같습니다.

  • 질문 2018.04.29 16:52 신고 ADDR 수정/삭제 답글

    http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/EPSRC_SSAZ/node3.html
    다크님 블로그를 보면서 위 블로그도 함께 보고있습니다.
    다만 카메라좌표와 정규좌표의 표현법이 서로 다르네요...
    위 블로그에서 카메라 파라미터는 f가 아닌 fK_u 등으로 표현됩니다.
    카메라 좌표계가 (x y 1)이 아니라 (x y f)라 그런것 같네요.
    여기서 K_u, K_v 의 의미를 혹시 아시는지. 염치 없지만 질문올려봅니다.

    • BlogIcon 다크pgmr 2018.04.29 23:33 신고 수정/삭제

      ku, kv는 pixles/length 즉, 물리단위를 픽셀단위로 변환시켜주는 비율값으로 보입니다. 예를 들어, 이미지 센서의 한 셀(cell)의 가로방향 크기(length)가 0.4, 세로방향 크기가 0.5라면 ku = 1/0.4, kv = 1/0.5가 될 것입니다.

    • 질문 2018.05.02 12:05 신고 수정/삭제

      답변 감사합니다.
      그러면 링크의 블로그는 f를 length로 표현한거군요!
      결국 다크님의 표현방식대로 f*ku = fx, -f*kv = fy 로 표현이 되고 단위는 픽셀이 맞겠네요 ㅎㅎ

  • 손님 2018.07.12 08:40 신고 ADDR 수정/삭제 답글

    편의상 픽셀 좌표계라로 썼지만 x
    편의상 픽셀 좌표계라고 썼지만 o

    • BlogIcon 다크pgmr 2018.07.13 18:31 신고 수정/삭제

      고맙습니다. 요즘 글의 오탈자나 잘못된 부분을 알려주시는 분들이 많습니다. 덕분에 글이 더 완성도있게 되어서 감사드립니다.

  • 공대생 2018.09.03 21:21 신고 ADDR 수정/삭제 답글

    진짜 뭐하시는분이지? 라는 댓글이 이미 있네요... 너무 감사히 잘보고 있습니다. 이미 지나간 글도 틀린 내용이 있으면 수정해 주시고 많이 배워 갑니다.