꽃 한송이

잡기장 2016.08.29 11:00

어제가 아이의 생일이다.


아이에게 줄 선물을 사는 대신.. 아내에게 줄 꽃 한송이를 샀다.


풍성한 꽃다발과 꽃 한송이.. 정말 아주 잠깐 고민하다가 꽃 한송이를 선택했다.


꽃 한송이.. 4천원..


나름 이쁘게 포장되어 있지만 왠지 마음에 들지 않는다. 왠지 형식적인 것 같고 둘러싼 포장이 오히려 답답해 보인다.


에라 모르겠다는 심정으로 화려한 포장들을 모두 걷어내 버렸다.


그랬더니.. 예쁜 꽃 한송이가 본연의 모습 그대로를 드러낸다.



아내도 이렇게 예쁜 꽃을 본 것은 참 오랜만이라며 마음에 들어한다. ^^


by 다크 프로그래머


저작자 표시 비영리 변경 금지
신고

'잡기장' 카테고리의 다른 글

꽃 한송이  (7) 2016.08.29
Stop Trying to Create a Killer Resume  (18) 2015.06.24
공부 잘하는 법, 연구 잘하는 법, 자신을 발전시키는 법  (38) 2015.06.23
맛있는 배  (9) 2014.09.06
  • 신입개발자 2016.09.02 08:27 신고 ADDR 수정/삭제 답글

    화사하고 좋은 아침입니다.

    • BlogIcon 다크pgmr 2016.09.03 18:33 신고 수정/삭제

      네 ^^ 가을하늘이라 그런지 청명한 하늘에 구름이 참 좋습니다.

  • 취준생 2016.09.09 16:12 신고 ADDR 수정/삭제 답글

    안녕하세요 다름이 아니라 이게 가능한지 여부 좀 알 수 있을까요??
    야구배트를 검출하고 추적해야하는데 이게 가능한가요??
    가능하다면 어떤식으로 해아할지 알 수 있을까요?ㅠㅠ

    • BlogIcon 다크pgmr 2016.09.09 23:03 신고 수정/삭제

      야구배트를 검출하고 추적하는 목적이 무엇인가요?

  • 2016.09.10 14:14 ADDR 수정/삭제 답글

    비밀댓글입니다

    • BlogIcon 다크pgmr 2016.09.10 22:11 신고 수정/삭제

      가능하다고 생각합니다. 하지만 어느정도의 성능과 정확도로 가능할지 그리고 어떤 방법이 가장 효율적일지(최소한 Haar feature는 아닐 것이라 생각합니다), 어느정도의 시간내에 가능할지는 저도 모릅니다. 그리고 배트만 정확하게 인지한다고 해서 스윙의 판정까지 정확히 가능한지도 의문입니다.. 제가 이미 해 본 일이라면 어느정도 답변이 가능하겠지만 그렇지 않은 경우에는 다양한 조건을 검토하고 방법을 하나씩 모색해 나가야 하는 것이고(설계의 단계) 이게 실질적으로 문제해결의 가장 중요한 단계입니다. 인터넷 등을 이용해서 그러한 개발 사례가 있는지 먼저 검색해 보는 것도 좋은 방법입니다.
      어떤 문제를 가능하다 가능하지 않다라고 단정적으로 구분하기는 매우 힘듭니다. 그 이유는 문제가 어떻게 정의되느냐에 따라 답이 다 달라질 수 있기 때문입니다. 일반적인 초고속 카메라 한대로만 해야 하는지 아니면 여러 대의 카메라를 이용해서 3D 정보를 추출해도 되는지, 카메라가 아닌 레이져 (적외선) 센서 등의 거리센서를 이용해도 되는지, 카메라의 위치는 고정되어 있는지 아니면 타석에 땅을 파고 바닥에 묻어도 되는지, 타자의 위치는 항상 고정된 위치에 있는지 아니면 타자마다 타석에서 앞뒤로 조금씩 달라질 수 있는지, 배트의 대략적인 위치만 파악하면 되는지 아니면 배트의 정확한 경계선까지 추출해야 하는지, 컴퓨터와 카메라의 사양, 주어진 기한, 목표 정확도 등등 제약조건이나 환경에 따라서 접근방법이나 알고리즘 등이 모두 달라질 수 있기 때문입니다.

  • 취준생 2016.09.11 13:13 신고 ADDR 수정/삭제 답글

    여러가지 문제가 있네요...

    제가 하려고하는것은 일반 라즈베리 와 라즈베리 카메라를 이용해서 야구에서 하프스위를 판별하는 것입니다

    배트가 홈플레이트와의 각도의 따라서 판정하려고하는데 이경우는 haar feature가 아니면 어떤방법으로 해아할까요?ㅠㅠ 제가 학교에서 영상처리 이론만 쫌배우고 실습은 거의 안해서 아는 지식이 없네요..

    학교에서는 검출방범은 haar, hog, svm 이렇게만 간단히 소개해서 넘어갔는데 다른 검출방법이 있는 건가요??

    이경우에는 어떤방법이 가장 좋을까요?ㅠㅠ

    죄송합니다 계속 질문드려서 ㅠㅠ

영상 소실점(vanishing point)의 이해와 활용

영상처리 2016.08.09 14:22

영상의 소실점(vanishing point)은 여러 재미있는 기하학적 성질을 가지고 있으며 카메라 캘리브레이션, 틸트(tilt) 계산, 3D 복원 등 다양한 응용을 갖는다.


이 글에서는 영상의 소실점(vanishing point)이 무언인지, 어떤 기하학적 의미를 갖고 있는지, 그리고 어떤 응용이 가능한지 정리해 본다. 소실점(vanishing point)은 결국 영상의 기하학적 성질을 다루기 때문에 아래 두 글에 대한 이해가 필수적이다.



1. 소실점(vanishing point)


우리가 사는 물리세계에서는 서로 평행한 두 직선은 영원히 만나지 않는다. 하지만 카메라 영상에서는 평행한 직선도 서로 만날 수 있으며 교점의 좌표도 구할 수 있다. 우리가 영상에서 말하는 소실점(vanishing point)이 바로 그 교점이다.


소실점(vanishing point)의 대표적인 예로는 기찻길의 선로를 들 수 있다.


그림 1. 소실점(Vanishing Point)


그런데, 위 그림 1을 자세히 보면 평행인 선로가 사실은 2개가 아니라 4개임을 알 수 있다. 그리고 이들 네 선로는 모두 한점에서 만난다. 여기서 우리는 소실점의 중요한 성질 하나를 알 수 있다.


물리공간에서 평행한 모든 직선들은 영상에서 모두 동일한 소실점을 갖는다.


즉, 물리공간에서 아무리 멀리 떨어진 직선들일지라도 그리고 아무리 수가 많더라도 서로 방향만 같다면 영상에서는 모두 동일한 하나의 소실점으로 수렴하게 된다.


그림 2. 이미지출처: http://slideplayer.com/slide/4713192/


그런데 이들 평행한 직선들은 모두 동일한 평면 위에 있는 직선들이어야 할까? 답은 NO, 그렇지 않다 이다. 즉, 어떤 평면 위에 있든 관계없이 3차원 공간에서 서로 평행하기만 하면 영상에서는 모두 동일한 소실점을 갖는다.


그림 3. 이미지 출처: http://www.kkuodesign.com



2. 소실선(vanishing line)


소실점(vanishing point)은 물리공간에서 평행한 직선들이 영상에 투영되어 원근효과(perspective effect)에 의해 마치 한 점에서 만나는 것처럼 보이는 현상이다.


그런데, 이러한 소실점(vanishing point)은 영상에서 단 한곳에서만 형성되는 것일까? 답은 NO, 그렇지 않다 이다. 한 영상에는 무수히 많은 소실점들이 형성될 수 있으며 그들의 위치는 영상내 임의의 위치 또는 영상의 테두리를 벗어난 외부에도 형성될 수 있다.

그림 4. 다양한 소실점 (이미지출처: http://www.detaildesignonline.com)


앞서 모든 평행한 직선들은 동일한 소실점을 갖는다 했다. 그런데 이 말을 조금만 바꾸어 보면 평행하지 않은 직선은 서로 다른 소실점을 갖는다는 의미가 된다. 즉, 영상에서 소실점의 위치를 결정하는 것은 직선의 방향이며 직선의 방향에 따라 위 그림처럼 수많은 소실점이 생성될 수 있다.


그리고 동일 평면에 속한 직선들의 소실점들은 모두 일직선상에 존재하게 되는데 이 선을 우리는 소실선(vanishing line)이라 부른다.

그림 5. 소실선 (vanishing line)


즉, 소실선(vanishing line)은 소실점들이 모여서 이루어진 직선이다. 하지만 소실선(vanishing line)을 좀더 근본적으로 이해하는 방법은 물리공간의 평면 전체를 카메라 영상에 투영했을 때 생성되는 극한의 경계선으로서 소실선을 이해하는 것이다. 직선을 이미지에 투영하면 소실점이 생성되고 평면을 이미지에 투영하면 소실선이 생성된다. 그리고 이러한 소실선의 대표적인 예로는 지평선, 수평선 등이 있다.


☞ "동일 평면에 속한 직선들의 소실점들은 일직선을 이룬다" 보다는 사실 "평행한 평면에 속한 직선들의 소실점들은 일직선을 이룬다"가 보다 정확한 표현이다. 만일 두 평면이 서로 평행이면 영상에서 이들은 동일한 소실선을 갖는다. 따라서 평행한 평면에 속하는 모든 직선들의 소실점들은 모두 동일한 소실선 상에 존재한다.


☞ (속한 평면에 관계없이) 모든 평행한 직선들은 동일한 소실점을 갖는다. 그리고 모든 평행한 평면들은 동일한 소실선을 갖는다.


☞ 카메라 광학축(optical axis)에 대한 소실점은 이미지의 주점(principal point)이다. 따라서 카메라 광학축과 평행인 모든 직선들에 대한 소실점은 이미지의 주점과 일치한다.


소실점들이 일직선을 이루는 성질은 직선들이 모두 동일한 또는 서로 평행한 평면에 속할 경우에만 성립하며 그 예는 아래 그림을 통해 확인할 수 있다.


그림 6. 출처: "Video Compass", ECCV'02



3. 기하학적 이해


앞서 설명하였듯이 평면 전체를 이미지에 투영하면 소실선이 생성되고 이 평면에 속한 직선을 이미지에 투영하면 소실점이 생성된다. 그리고 이 소실점은 평면의 소실선 위에 존재한다. 따라서 소실선의 생성 원리를 이해하면 소실점의 원리도 자연히 설명된다.


기하학적으로 봤을 때, 어떤 평면에 대한 소실선(vanishing line)은 이 평면과 수평이고 카메라 원점을 지나는 평면이 이미지 평면과 만나서 생기는 교선이다.


예를 들어 지면에 대한 소실선을 생각해 보자. 그림과 같이 카메라 원점(C)을 지나면서 지면과 수평인 평면이 이미지 평면과 만나 생기는 교선을 L이라 하자. 그러면 L 상에 있는 점들(p)은 지면과 평행인 평면상에 있기 때문에 아무리 투영선(Cp)을 확장하여도 지면과 만날 수는 없다. 즉, 지면 위의 점들은 이미지에서 L 또는 L보다 높은 지점으로는 결코 투영될 수 없다. 하지만 한 픽셀(pixel)이라도 L보다 아래쪽에 있는 점들은 언젠가는 지면과 만나는 점이 존재한다. 즉, 지면은 이미지에 L 이하의 영역으로 투영되고 L은 투영 영역의 경계선 즉, 소실선이 된다.


그림 7. 소실선의 기하학적 원리


소실점(vanishing point)도 마찬가지이다. 지면 위의 한 직선을 이미지에 투영해 보면 직선을 무한히 확장하였을 경우 결국 소실선(L) 상의 어느 한 점으로 수렴하게 됨을 쉽게 상상할 수 있다.



4. 소실선과 카메라의 자세추정


그림 7에서 발견할 수 있는 재미있는 사실 하나는 영상에서 소실선(L)의 위치는 카메라의 높이(h)와는 무관하게 결정된다는 점이다. 즉, 예를 들어 카메라를 삼각대에 고정시키고 땅 위에서 사진을 찍으나 100m 높이의 빌딩 위에서 찍으나 사진에 맺히는 지평선(수평선)의 위치는 모두 동일하다. 이를 좀더 일반화하면 다음과 같다.


영상에서 소실선의 위치는 카메라의 평행이동과는 무관하며 오직 카메라의 자세(3D 회전)에만 영향을 받는다.


그리고 영상에서 소실선의 위치를 알면 캘리브레이션을 하지 않고도 카메라의 팬(pan), 틸트(tilt), 롤(roll)을 알아낼 수 있다. 구체적인 설명에 앞서 먼저 카메라의 팬(pan), 틸트(tilt), 롤(roll)을 아래 그림과 같이 정의한다.


그림 8. 카메라의 팬, 틸트, 롤의 정의


즉, 틸트(tilt)는 광학축이 지면과 수평이면 0, 위쪽을 보면 +, 아래쪽을 보면 -, 팬(pan)은 정면을 기준으로 왼쪽이 +, 오른쪽이 -, 롤(roll)은 카메라가 좌우방향으로 똑바로 서 있으면 0, 왼쪽으로 기울면 +, 오른쪽으로 기울면 -로 정의한다.


☞ 용어의 일관성을 위해서는 팬, 틸트, 롤 대신에 피치(pitch), 롤(roll), 요(yaw)를 사용하는게 맞겠으나 직관적으로 이해하기 쉽도록 팬, 틸트, 롤이란 용어를 사용한다. 참고로 틸트는 pitch, 팬은 yaw에 대응된다.



A. 소실선과 롤(roll)


소실선을 이용해서 롤을 구하는 것은 비교적 간단하다. 카메라가 롤 방향으로 회전하면 영상에서 소실선 또한 롤(roll) 각도만큼 기울어진다. 따라서 소실선의 기울어진 각을 측정하면 카메라의 롤(roll)이 구해진다.


직관적으로는 영상에서 소실선의 기울어진 각도가 카메라의 롤(roll)이지만 이를 수치적으로 계산해 보면 다음과 같다. 소실선 상의 임의의 두 점의 픽셀 좌표를 (x1, y1), (x2, y2), 카메라의 초점거리를 fx, fy라 하면 카메라의 롤(roll)은 다음과 같이 계산된다 (아래 그림 예는 roll이 -인 경우이다).


 --- (1)


그림 9. 소실선을 이용한 roll의 계산



B. 소실선과 틸트(tilt)


소실점을 이용한 카메라 틸트(tilt)의 계산은 앞서 영상의 기하학적 해석 - 카메라의 틸드(tilt) 구하기 글에서 이미 설명한 바 있다. 여기서는 앞서 내용을 소실선으로 용어를 바꾸어 다시 적어본다.


이미지에서 소실선의 y좌표를 vy, 주점을 (cx, cy), 카메라의 y축 방향 초점거리를 fy라 하면 카메라의 틸트(tilt)는 다음과 같이 계산된다.


 --- (2)


단, 식 (2)는 카메라의 롤(roll)이 없는 경우에서 한해 성립한다. 만일 카메라의 roll이 0이 아닌 경우에는 소실선이 기울어지기 때문에 소실선의 y좌표 대신에 이미지 주점과 소실선 사이의 수직거리 d(필셀단위)를 이용한다. 이 때, 카메라의 틸트는 다음과 같이 계산된다 (틸트의 부호는 이미지에서 주점이 소실선 아래면 -, 소실선 위면 +로 설정).


--- (3)


그림 10. 소실선을 이용한 tilt의 계산


그런데, 만일 카메라의 초점거리가 fx ≠ fy로 x축, y축 방향이 다르게 주어진 경우에는 f = (fx + fy)/2로 사용하거나 또는 픽셀단위가 아닌 정규 이미지 평면에서의 정규화된 수직거리를 이용해서 틸트를 계산할 수 있다. 즉, 정규 이미지 평면에서 주점인 (0, 0)과 소실선 사이의 수직거리를 d_n라면 카메라의 틸트는 tan-1(d_n)로 계산된다.



C. 소실선과 팬(pan)


카메라의 팬(pan)은 틸트(tilt)나 롤(roll)과는 달리 절대적인 기준(원점)을 잡기가 애매하다. 따라서 여기서는 이미지 상의 물체(직선)와 실제 카메라 광학축 방향과의 상대적인 pan각을 구하는 문제로 접근한다 (top-view를 기준으로 했을 때의 사잇각).


즉, 예를 들어 아래 그림과 같이 철길에 대한 사진이 얻어졌을 때 사진을 획득할 당시의 카메라의 광학축 방향과 선로 방향 사이의 pan각을 구하는 것이 목적이다.


그림 11. 측면에서 촬영된 선로


그림 11과 같이 카메라의 원점을 C, 이미지의 주점을 P, 소실점을 V, 초점거리를 f, 주점에서 소실선에 내린 수선의 발을 H, 수직거리를 d라 하자 (카메라의 roll은 없다고 가정한다). 이 때, top-view에서 봤을 때 카메라 광학축의 방향은 CH, 선로의 방향은 CV에 대응된다. 따라서 카메라 광학축을 기준으로 한 선로의 pan각은 다음과 같이 계산된다.


 --- (4)


만일 초점거리가 fx ≠ fy로 따로 주어질 경우에는 f = (fx + fy)/2로 평균값을 사용하거나 또는 정규이미지 좌표를 사용해 보다 정밀한 pan 값을 얻을 수도 있다. 정규이미지 좌표를 사용할 경우 pan각은 다음과 같이 계산된다.


 --- (5)


☞ 수식 (4), (5)는 카메라의 roll이 없는 경우에 대해 성립하는 수식이지만 계산 과정 자체는 카메라의 roll이 있는 경우에도 동일하다. 즉, 소실선과의 수직거리 및 주점에서 소실선에 내린 수선의 발만 이미지에 맞게 계산해 주면 이후의 과정은 동일하다.



5. 소실점/소실선을 이용한 카메라 캘리브레이션


앞서까지 소실점/소실선을 이용한 카메라의 3D 자세측정 방법을 설명하였다. 그런데, 영상에서 소실점/소실선을 이용하면 이러한 외부 파라미터(extrinsic parameter) 뿐만 아니라 카메라의 내부 파라미터 추정도 가능하다. 즉, 카메라의 초점거리(f) 및 주점(cx, cy)의 추정이 가능하다.


소실점/소실선을 이용한 카메라 파라미터 추정의 구체적인 방법에 대해서는 다음의 두 논문을 참조한다.

  • Beardsley, Paul, and David Murray. "Camera calibration using vanishing points." BMVC92 (1992): 416-425.
  • Košecká, Jana, and Wei Zhang. "Video compass." Computer Vision—ECCV 2002 (2002): 476-490.


6. 기타 응용


차선, 기찻길, 빌딩, 복도, 상자 등 인간이 만든 많은 조형물에는 평행한 선들이 존재하기 때문에 이들의 소실점 정보를 이용하면 이미지 내에 존재하는 평면들과 카메라 사이의 기하학적 관계를 부분적으로 복원할 수 있다. 그리고 이러한 정보가 모여서 이미지에 대한 3D 복원 등의 응용이 가능해진다. 이 외에도 소실점으로부터 추출되는 기하학적 정보는 카메라 캘리브레이션 응용 뿐만 아니라 영상분석, 장면 분할, 차선인식, 자율주행, 물체 인식 등 폭넓은 응용을 갖는다.


by 다크 프로그래머


저작자 표시 비영리 변경 금지
신고
  • 하성주 2016.08.11 12:50 신고 ADDR 수정/삭제 답글

    마침 요새 소실점관련해서 보고있었는데 딱 올려주셨네요 ㅎㅎ 감사합니다

  • 잉여킹 2016.09.26 15:55 신고 ADDR 수정/삭제 답글

    늘 잘 보고 있습니다. 덕분에 영상처리 공부에 많은 도움이 되었습니다 ^^

KCCV(한국컴퓨터비전학회)에 대해

영상처리 2016.07.23 18:09

어제 KCCV 2016 한국컴퓨터비전학회에 다녀왔다.


KCCV(Korean Conference on Computer Vision)는 2014년 서울대에서 열린 1회 행사를 시작으로 올해 3번째이다 (KCCV 2016 홈페이지: http://cvlab.hanyang.ac.kr/kccv/2016/index.html).


KCCV가 일반 학회와 다른 점은 국내외 컴퓨터비전 분야를 주도하고 있는 교수님들이 최근 1 ~2년 내의 CVPR, ICCV 등 최고의 비전 학회에서 발표된 또는 발표 예정인 논문들을 설명하는 형식으로 학회가 진행된다는 점이다. 그리고 모든 발표는 교수님들의 발표와 일부 해외 초청 발표로 이루어진다. 일반적인 논문발표가 아니라 후학들과 함께 지식을 공유하고 배움을 나누는 것이 목적이기 때문에 발표는 비교적 상세한 설명 형식으로 진행된다.


국내에서 컴퓨터비전을 공부하는 학생이나 연구자들에게는 어떤 메이져 학회보다도 더 좋은 배움의 기회라 생각된다 (대부분의 발표는 우리나라 말로 진행된다).


그동안 국내에서는 서울대 컴퓨터비전연구실과 KAIST RCV연구실을 두 축으로 메이져급의 논문들이 발표되어 왔으나 최근에는 많은 연구실에서 CVPR, ICCV, ECCV의 벽을 깨고 세계적 수준의 연구 결과들을 내놓고 있다.


개인적으로는 KCCV 2014와 KCCV 2016까지 2번째 참석이다. IPIU(영상처리 및 이해에 관한 워크샵)도 그렇고 KCCV도 그렇고 국내 컴퓨터 비전 커뮤니티에서는 연구자로서의 열린 마음, 그리고 후학에 대한 배려가 느껴져서 좋다.


by 다크 프로그래머


저작자 표시 비영리 변경 금지
신고
  • 수제자 2016.07.26 09:03 신고 ADDR 수정/삭제 답글

    좋은 정보 감사합니다.
    정회원 등록했습니다. ^^

  • BlogIcon 꾸준희 2016.07.29 12:40 신고 ADDR 수정/삭제 답글

    안녕하세요 포스팅 항상 잘보고있습니다 :^) 이거 내년에도 이맘때쯤 하는지 아시나요 ?

    • BlogIcon 다크pgmr 2016.07.29 13:44 신고 수정/삭제

      네, 아직 정확한 날짜는 정해지지 않았지만 매년 비슷한 시기에 개최될 예정으로 알고 있습니다. 장소는 들었는데 잘 기억이 안나네요..

1 2 3 4 5 ... 52


티스토리 툴바