[MIT 머신비전 23강] 모양을 방향의 분포로 기억하기: 확장 가우스 영상 | 가우스 곡률·회전체·방향 히스토그램
MIT 6.801 머신비전(Machine Vision, Berthold Horn) 23강 정리. 가우스 영상과 가우스 곡률, 적분 곡률로 모서리 다루기, 확장 가우스 영상(EGI)의 성질, 타원체와 회전체·원환면의 EGI, 다면체에서 EGI 계산, 방향 히스토그램과 구면 칸 나누기를 쉽게 설명합니다.
MIT OpenCourseWare 6.801 23강 원본 영상 (영어)
한 줄 요약: 물체의 겉면을 “어느 방향을 향한 넓이가 얼마나 되나”로 바꿔 구 위의 질량 분포로 적은 것이 확장 가우스 영상(EGI)입니다. 물체를 옮겨도 변하지 않고, 돌리면 똑같이 돌기 때문에 인식과 자세 맞추기에 좋습니다. 실제로 쓰려면 구를 칸으로 나눠야 하는데, 칸은 같은 넓이, 둥근 모양일수록 좋습니다.
가우스 영상과 가우스 곡률
지난 글에서 겉면의 각 점을 법선이 같은 단위구 위의 점에 대응시켰습니다. 이 대응이 가우스 영상입니다. 물체 위의 작은 조각(넓이 \(\delta O\))의 법선들은 구 위에서 어떤 넓이 \(\delta S\)를 차지하는데, 그 비가 가우스 곡률입니다.
\[\kappa = \lim_{\delta O \to 0} \frac{\delta S}{\delta O}, \qquad G = \frac{1}{\kappa} = \lim \frac{\delta O}{\delta S}\]강의는 주로 역수인 밀도 \(G\)를 씁니다. “이 방향을 향한 겉면이 얼마나 많은가”를 나타내니까요.
적분 곡률: 모서리도 다룰 수 있다
정육면체의 모서리나 꼭짓점에서는 곡률이 정의되지 않습니다. 법선이 한 점에서 갑자기 바뀌니까요. 하지만 적분하면 문제가 사라집니다.
둘 다 법선이 쓸고 지나간 양은 90°로 같습니다. 적분 곡률은 모서리를 얼마나 둥글게 깎았는지와 상관없습니다.
첫째 식은 “곡률을 겉면 위에서 모으면 구 위의 넓이”이고, 둘째 식은 “밀도를 구 위에서 모으면 물체의 넓이”입니다. 예를 들어 정육면체의 꼭짓점 하나에 모인 세 면의 법선은 구의 1/8을 덮는 구면 삼각형을 쓸고 지나가므로, 그 꼭짓점의 적분 곡률은 \(4\pi/8 = \pi/2\)입니다. 강의에서는 둘째 식을 더 자주 씁니다. 적분이 갑작스러운 변화를 부드럽게 만들어 주는 셈입니다.
EGI가 꼭 지켜야 하는 조건
닫힌 물체라면 EGI의 무게중심은 구의 중심에 있어야 합니다.
\[\sum_i A_i\,\hat{\mathbf{s}}_i = \mathbf{0} \quad(\text{다면체}), \qquad \iint_S G(\hat{\mathbf{s}})\,\hat{\mathbf{s}}\, dS = \mathbf{0} \quad(\text{매끈한 곡면})\]강의의 설명이 직관적입니다. 어떤 방향 \(\hat{\mathbf{v}}\)에서 물체를 보면 보이는 면들의 겉보기 넓이 합은 \(\sum A_i(\hat{\mathbf{s}}_i\cdot\hat{\mathbf{v}})\)입니다. 정반대 방향 \(-\hat{\mathbf{v}}\)에서 봐도 실루엣은 똑같으니 겉보기 넓이도 같아야 합니다. 앞쪽 면과 뒤쪽 면의 기여가 서로 상쇄되어야 한다는 뜻이고, 모든 방향에 대해 그러려면 합이 0이어야 합니다. 닫히지 않은 물체(예: 그릇)에는 성립하지 않습니다.
타원체의 EGI
구는 밀도가 \(G = R^2\)로 어디나 같아 방향 정보가 없습니다. 타원체 \(x^2/a^2 + y^2/b^2 + z^2/c^2 = 1\)은 다릅니다. 법선이 \(\hat{\mathbf{n}} = (n_x, n_y, n_z)\)인 곳의 밀도는
\[G(\hat{\mathbf{n}}) = \frac{a^2 b^2 c^2}{\left(a^2 n_x^2 + b^2 n_y^2 + c^2 n_z^2\right)^2}\]
가장 납작한 쪽(z축 방향)이 가장 평평하니 밀도가 가장 높고, 가장 길쭉한 끝(x축 방향)은 가장 뾰족하니 밀도가 가장 낮습니다.
손으로 계산해 보면: \(a = 2\), \(b = 1.2\), \(c = 0.7\)이면 세 축 방향의 밀도는
- \(x\)축: \(G = (bc/a)^2 = (0.84/2)^2 \approx 0.18\) (가장 뾰족한 끝)
- \(y\)축: \(G = (ac/b)^2 = (1.4/1.2)^2 \approx 1.36\) (안장점)
- \(z\)축: \(G = (ab/c)^2 = (2.4/0.7)^2 \approx 11.76\) (가장 평평한 면)
이 밀도를 구 전체에 걸쳐 적분하면 약 20.44로, 이 타원체의 겉넓이와 같습니다(수치로 확인). 극값은 축 방향에 하나씩(최대, 최소, 안장) 있고 반대편에 거울상이 있습니다. 물체를 옮겨도 EGI는 그대로이고, 돌리면 EGI도 똑같이 돕니다.
타원체 점을 만들 때 강의는 식 \(x^2/a^2 + \cdots = 1\)을 직접 풀기보다 “찌그러뜨린 구” 매개변수 \((a\cos\theta\cos\phi,\; b\sin\theta\cos\phi,\; c\sin\phi)\)를 권합니다. 각도를 차례로 바꾸기만 하면 점이 고르게 나오니까요.
회전체: 띠가 띠로
원기둥, 원뿔, 구, 쌍곡면처럼 단면 곡선을 축 둘레로 돌린 회전체는 계산이 간단합니다. 물체의 가로 띠 하나는 법선이 모두 같은 높이각 \(\eta\)를 가지므로 구 위의 가로 띠 하나로 갑니다.
물체의 띠 넓이와 구의 띠 넓이의 비가 곧 곡률입니다.
\(r\)은 축에서의 거리, \(s\)는 단면 곡선을 따라 잰 길이입니다. 단면의 기울기와 법선의 관계 \(\sin\eta = -r_s\)를 미분해 정리하면 더 간단한 꼴이 나옵니다.
\[\kappa = -\frac{r_{ss}}{r}\]구로 검산: 반지름 \(R\)인 구의 단면은 \(r = R\cos(s/R)\)이므로 \(r_{ss} = -\frac{1}{R}\cos(s/R)\), 따라서 \(\kappa = \frac{(1/R)\cos(s/R)}{R\cos(s/R)} = \frac{1}{R^2}\)입니다.
도넛(원환면)
도넛은 볼록하지 않아서 같은 법선이 두 곳에 있습니다. 바깥쪽 볼록한 곳과 안쪽 안장 모양의 곳입니다.
두 곳의 밀도를 더하면 넓이를 그냥 모은 것이 되고, 빼면(부호 있는 곡률) 어디서나 같은 값이 됩니다.
관의 반지름을 \(\rho\), 도넛 중심에서 관 중심까지를 \(R\)이라 하면
- 바깥쪽: \(r = R + \rho\cos\eta\), 곡률 \(\kappa_+ = \frac{\cos\eta}{\rho(R + \rho\cos\eta)}\)
- 안쪽: \(r = R - \rho\cos\eta\), 곡률 \(\kappa_- = -\frac{\cos\eta}{\rho(R - \rho\cos\eta)}\) (음수 = 안장)
두 밀도의 크기를 더하면 \(G = 2R\rho/\cos\eta\)로 방향에 따라 변하지만 극(\(\eta = 90°\))에서 무한대가 됩니다. 부호를 살려 빼면 \(2\rho^2\)로 어디서나 같아져 정렬에 쓸 수 없습니다. 실제 계산에서는 면 조각의 넓이를 더해 모으므로 앞의 것을 씁니다.
\(R = 2\), \(\rho = 0.8\)이면 적도 방향 밀도는 \(2 \times 2 \times 0.8 = 3.2\)이고, 이를 구 전체에 적분하면 \(4\pi^2 R\rho \approx 63.2\)로 도넛의 겉넓이와 같습니다. 그런데 이 EGI는 \(R\rho\)의 곱에만 달려 있습니다. 곱이 같은 도넛들은 EGI가 같아 구별할 수 없습니다. 볼록하지 않은 물체에서는 EGI가 모양을 하나로 정해 주지 않는다는 예입니다. 또 카메라 한 자리에서는 도넛의 모든 면을 볼 수도 없습니다.
실제 계산: 삼각형 조각들
실제 물체는 삼각형 조각 메시로 들어오는 경우가 많습니다. 꼭짓점이 \(\mathbf{a}, \mathbf{b}, \mathbf{c}\)인 삼각형의 법선과 넓이는 외적 하나로 나옵니다.
\[\mathbf{n} = (\mathbf{b} - \mathbf{a}) \times (\mathbf{c} - \mathbf{b}) = \mathbf{a}\times\mathbf{b} + \mathbf{b}\times\mathbf{c} + \mathbf{c}\times\mathbf{a}, \qquad A = \tfrac{1}{2}\|\mathbf{n}\|\]각 조각의 넓이를 법선 방향 칸에 더해 넣으면 EGI가 완성됩니다.
방향 히스토그램과 칸 나누기
EGI를 컴퓨터에 담으려면 구를 칸으로 나눠 방향 히스토그램을 만들어야 합니다. 근육 섬유, 신경 세포, 혈관 사진에서 “가장 흔한 방향”을 찾을 때도 같은 도구를 씁니다.
평면 히스토그램을 먼저 생각해 봅시다. 정사각형 칸은 구석이 중심에서 멉니다. 같은 넓이라면 원이 이상적이지만 원으로는 평면을 빈틈없이 채울 수 없고, 육각형이 가장 좋은 타협입니다.
칸이 둥글수록 같은 칸에 든 방향들이 서로 비슷합니다.
칸 경계 근처의 값이 운 나쁘게 옆 칸으로 가는 문제는 격자를 반 칸 어긋나게 한 벌 더 써서 줄이지만, 차원이 높아지면 비용이 빠르게 늘어납니다. 구를 나누는 칸이 갖췄으면 하는 성질은 이렇습니다.
- 칸 넓이가 같을 것
- 칸 모양이 같을 것
- 칸이 둥글 것
- 규칙적인 무늬일 것
- 어느 칸에 넣을지 빨리 정할 수 있을 것 (모든 칸 중심과 내적해 보는 건 너무 느림)
- 회전하면 칸들이 칸들로 옮겨 갈 것
마지막 성질이 특히 좋습니다. 예를 들어 정십이면체 기준으로 나누면 칸이 12개이고, 정십이면체의 60가지 회전 대칭 중 하나로 돌리면 히스토그램은 칸 번호만 뒤섞일 뿐 정보 손실이 없습니다. 두 물체를 맞출 때 60가지 순열만 비교하면 되는 셈입니다. 그래서 정다면체와 아르키메데스 다면체가 방향 히스토그램의 뼈대로 쓰입니다.
직접 해 보기
① 타원체와 EGI. \(a\), \(b\), \(c\)로 모양을 바꾸고, 아래 두 슬라이더로 돌려 보세요. 왼쪽 물체의 짙은 부분(평평한 곳)과 오른쪽 구의 짙은 부분이 언제나 같은 방향을 가리킵니다.
처음 모양(\(a = 1.6\), \(b = 1.0\), \(c = 0.6\))에서 축 방향 밀도는 0.14, 0.92, 7.11입니다. 세 값을 모두 1.0으로 맞추면 구가 되어 오른쪽 구가 한 가지 색으로 고르게 칠해지고, 어느 쪽으로 돌려도 구별되지 않습니다.
② 정사각형 칸 vs 육각형 칸. 마우스를 올리면 그 점이 들어가는 칸의 중심까지 선을 그립니다. “점 500개 뿌리기”를 몇 번 눌러 보세요.
두 격자는 칸 넓이가 같습니다(한 칸 2400px²). 칸 중심까지의 평균 거리는 18.4px 안팎으로 거의 비슷하지만, 가장 먼 거리는 정사각형이 약 34px, 육각형이 약 30px로 육각형이 확실히 짧습니다. 정사각형의 손해는 대부분 네 구석에서 생깁니다.
정리
- 가우스 곡률은 구 위 넓이와 물체 넓이의 비이고, EGI는 그 역수인 밀도를 구 위에 펼친 것입니다. 적분하면 모서리도 다룰 수 있습니다.
- 닫힌 물체의 EGI는 무게중심이 구의 중심에 있습니다. 앞뒤에서 본 실루엣이 같기 때문입니다.
- 타원체는 축 방향에 최대·최소·안장 밀도가 있고, 회전체는 \(\kappa = -r_{ss}/r\)로 간단히 계산됩니다.
- 도넛처럼 볼록하지 않은 물체는 같은 법선이 여러 곳에 있어 EGI가 모양을 하나로 정하지 못합니다.
- EGI를 담는 칸은 같은 넓이·둥근 모양이 좋고, 정다면체 기준 칸이면 회전이 칸 번호 바꾸기가 됩니다.
여기까지가 MIT 6.801 강의 노트의 마지막 강의입니다. 밝기의 변화로 움직임과 모양을 읽는 데서 시작해(1~10강), 경계와 패턴을 찾고(11~16강), 사진으로 위치와 방향을 재고(17~22강), 마지막으로 3D 모양을 기억하는 방법(23강)까지 왔습니다.
참고: MIT 6.801/6.866 Machine Vision (Fall 2020), Berthold Horn · Ryan Sander · Tadayuki Yoshitake 강의 노트 (MIT OpenCourseWare, CC BY-NC-SA 4.0)