포스트

[MIT 머신비전 10강] 특성 띠: 가장 밝은 점에서 모양을 키워 나가기 | Shape from Shading 특성 띠(Characteristic Strip)

MIT 6.801 머신비전(Machine Vision, Berthold Horn) 10강 정리. Shape from Shading을 특성 띠(Characteristic Strip) 방법으로 풀기, 다섯 개의 미분방정식과 출발 곡선 정하기를 쉽게 설명합니다.

[MIT 머신비전 10강] 특성 띠: 가장 밝은 점에서 모양을 키워 나가기 | Shape from Shading 특성 띠(Characteristic Strip)

MIT OpenCourseWare 6.801 10강 원본 영상 (영어)

한 줄 요약: 사진 한 장의 밝기만으로 입체 모양을 되살리려면, 표면 위를 걸으면서 “지금 위치와 지금 기울기”를 함께 들고 다니는 가느다란 띠를 펼쳐 나가면 됩니다. 사진과 기울기 공간이 서로의 다음 걸음을 알려 주는 다섯 개의 식이 핵심이고, 출발점은 가장 밝은 점 바로 옆에서 얻을 수 있습니다.

지난 시간의 숙제

지난 글 끝에서, 달 표면 같은 하프케(Hapke) 재질은 밝기에서 한 방향의 기울기를 바로 읽을 수 있다고 했습니다. 그 방향으로 기울기를 더해 가면 높이의 단면이 나오고, 출발선만 있으면 단면을 여러 개 그려 표면을 채울 수 있었습니다.

이번 강의는 이 방법을 아무 재질에나 쓸 수 있게 넓힙니다. 출발점은 늘 같은 식입니다. 사진의 밝기 \(E(x, y)\)는 그 점의 표면 기울기 \((p, q)\)로 정해진다, 즉 \(E(x, y) = R(p, q)\)입니다. 여기서 \(R\)은 “이 기울기면 이만큼 밝다”를 알려 주는 반사 지도(reflectance map)입니다.

걸으면서 기울기도 함께 들고 다니기

표면 위를 아주 조금 걸었다고 해 봅시다. 높이가 얼마나 바뀌는지는 지금 기울기만 알면 됩니다.

\[\delta z = p\,\delta x + q\,\delta y\]

오른쪽으로 \(\delta x\)만큼 가면 \(p\,\delta x\)만큼, 아래로 \(\delta y\)만큼 가면 \(q\,\delta y\)만큼 오른다는 뜻입니다. 문제는 걷는 동안 기울기도 바뀐다는 점입니다. 기울기가 얼마나 빨리 바뀌는지는 표면이 얼마나 휘었는지(곡률)에 달려 있는데, 곡률은 모릅니다. 곡률을 구하려고 더 높은 미분을 끌어오면 모르는 값이 끝없이 늘어납니다.

여기서 멋진 요령이 나옵니다. 밝기 식 \(E = R(p, q)\)를 미분하면, 사진 밝기의 기울기 \((E_x, E_y)\)도 같은 곡률에 반사 지도의 기울기 \((R_p, R_q)\)를 곱한 모양이 됩니다. 그래서 걸음 방향을 마음대로 고르지 말고 반사 지도의 기울기 방향 \((R_p, R_q)\)으로 고르면, 곡률이 식에서 깔끔하게 빠지고 기울기의 변화가 사진 밝기의 기울기 \((E_x, E_y)\)로 바로 주어집니다.

왼쪽은 사진 위의 한 점에서 반사 지도 기울기 방향으로 내딛는 파란 화살표, 오른쪽은 기울기 공간에서 사진 밝기 기울기 방향으로 움직이는 주황 화살표 사진 위에서 어디로 걸을지는 반사 지도가 알려 주고, 기울기가 어떻게 바뀔지는 사진이 알려 줍니다. 두 세계가 서로 짝을 이뤄 함께 걷습니다.

다섯 개의 식과 특성 띠

정리하면, 걸음 하나마다 다섯 가지를 한꺼번에 고칩니다.

\[\frac{dx}{d\xi} = R_p,\quad \frac{dy}{d\xi} = R_q,\quad \frac{dp}{d\xi} = E_x,\quad \frac{dq}{d\xi} = E_y,\quad \frac{dz}{d\xi} = p R_p + q R_q\]

\(\xi\)는 “몇 걸음 걸었나”를 세는 변수입니다. 앞의 두 식은 사진 위 위치를, 가운데 두 식은 기울기를, 마지막 식은 높이를 고칩니다. 오른쪽에 있는 값들은 모두 사진에서 재거나 반사 지도에서 바로 계산할 수 있으니, 어려운 편미분방정식이 차근차근 따라 걸으면 되는 상미분방정식 다섯 개로 바뀐 셈입니다.

이렇게 걸어간 자취를 특성 띠(characteristic strip)라고 부릅니다. 그냥 곡선이 아니라 점마다 기울기, 즉 작은 접판을 함께 들고 가는 가느다란 띠이기 때문입니다. 이 띠를 사진 위로 내려 비춘 그림자 곡선은 기초 특성선(base characteristic)이라고 합니다.

돔 모양 표면 위에 그려진 파란 특성 띠들과, 띠를 따라 놓인 주황색 작은 접판, 바닥에 비친 회색 기초 특성선 특성 띠는 서로 독립이라 각각 따로(병렬로) 계산할 수 있습니다. 띠 사이 빈 곳은 이웃 띠의 값을 보간해서 채웁니다.

이 일반식은 앞에서 본 경우를 모두 품습니다. 하프케 표면에 넣으면 걸음 방향이 늘 광원 쪽 한 방향으로 고정되어 지난 강의의 결과가 그대로 나옵니다. 전자현미경(SEM)처럼 밝기가 기울기의 크기에만 달려 있는 경우(\(R = f(p^2 + q^2)\))에는 걸음 방향이 \((p, q)\) 자체, 즉 가장 가파른 방향이 됩니다.

실제 SEM 꽃가루 한 알, 정면 조명을 받은 공, SEM식 반사 지도로 그린 공을 나란히 비교. SEM식은 가장자리가 밝다 SEM 사진은 많이 기운 가장자리가 더 밝습니다. 이런 반사 지도에서는 특성 띠가 물이 흘러내리는 길처럼 가장 가파른 방향을 따라갑니다.

한 걸음은 얼마나 크게?

식을 보면 다섯 값이 늘 같은 비율로 움직이므로, 모두에 같은 수를 곱해도 띠의 경로는 그대로이고 걷는 속도만 바뀝니다. 그래서 “한 걸음”의 기준을 편한 대로 정할 수 있습니다.

  • 사진 위 거리를 같게: 걸음마다 사진에서 같은 거리만큼 갑니다.
  • 높이 변화를 같게: 걸음마다 같은 높이만큼 내려가니, 지도의 등고선에서 등고선으로 건너뛰는 셈입니다.
  • 3차원 거리를 같게: 표면 위에서 같은 거리만큼 갑니다.
  • 밝기 변화를 같게: 같은 밝기 선(등광선)에서 다음 밝기 선으로 건너뜁니다.

같은 특성 띠에 세 가지 걸음 기준을 적용해, 같은 걸음 수의 앞줄이 사진 거리 기준, 등고선, 같은 밝기 선 모양으로 달라지는 비교 띠의 경로(파랑)는 같고, 같은 걸음 수만큼 나아간 앞줄(주황)만 달라집니다. 앞줄은 출발선에서 퍼져 나가는 물결처럼 보입니다.

출발선은 어디서 얻을까

띠마다 출발점에서 \(x, y, z, p, q\)를 모두 알아야 하니, 출발선을 직접 재야 한다면 꽤 번거롭습니다. 다행히 출발선의 위치와 높이만 알면 기울기는 밝기 식에서 계산할 수 있습니다. 그럼 출발선을 아예 사진에서 자동으로 얻을 수는 없을까요?

  • 물체의 테두리: 테두리에서는 표면이 시선과 나란해서 방향은 압니다. 하지만 기울기가 무한대로 커져서 계산을 시작할 수 없습니다.
  • 가장 밝은 점: 여기서는 반사 지도가 최대라서 기울기를 바로 압니다. 그런데 바로 그 이유로 \(R_p = R_q = 0\)이 되어 한 걸음도 움직일 수 없습니다. 사진 밝기도 극값이라 \(E_x = E_y = 0\)이어서 기울기도 그대로 멈춥니다.

해결책은 가장 밝은 점 바로 옆에서 출발하는 것입니다. 밝기의 2차 미분(얼마나 볼록하게 밝은지)으로 그 주변의 휜 모양을 추정하고, 작은 모자(cap)를 씌운 다음 모자의 가장자리에서 띠들을 출발시킵니다. 모자를 평평한 판으로 두면 모든 점이 같은 기울기, 같은 밝기가 되어 답이 하나로 정해지지 않으니, 반드시 살짝 휜 모자여야 합니다.

음영 사진의 가장 밝은 점 둘레의 작은 원에서 파란 특성 띠들이 사방으로 퍼져 나가고, 주황 점선 앞줄이 물결처럼 번지는 모습 가장 밝은 점 둘레의 작은 모자에서 출발한 띠들이 사진 전체로 퍼져 나갑니다. 띠가 모이는 곳과 벌어지는 곳이 생기는데, 벌어진 곳은 보간으로 채웁니다.

직접 해 보기

사진 위를 눌러 가장 밝은 점(분홍 원)을 옮겨 보세요. 조명이 바뀌면서 띠가 새로 펼쳐지고, 오른쪽 기울기 공간에는 각 띠가 지나며 바뀐 \((p, q)\)가 그려집니다. “한 걸음의 기준”을 바꾸면 앞줄(주황 점선) 모양이 등고선이나 같은 밝기 선으로 바뀝니다.

데모는 사진 밝기만 보고 다섯 식을 따라 걷습니다. 다만 출발 모자의 값은 계산을 단순하게 하려고 진짜 표면에서 가져왔습니다. 아래 숫자는 띠가 되살린 높이가 진짜 표면과 평균적으로 얼마나 다른지입니다.

정리

  • 밝기 식 \(E = R(p, q)\) 하나로 모양을 되살리려면, 위치와 기울기를 함께 들고 걷는 특성 띠를 펼칩니다.
  • 걸음 방향은 반사 지도의 기울기가, 기울기의 변화는 사진 밝기의 기울기가 정합니다. 덕분에 모르는 곡률이 식에서 빠지고 상미분방정식 다섯 개만 남습니다.
  • 걸음 크기의 기준(사진 거리, 높이, 밝기)은 자유롭게 고를 수 있고, 띠의 경로는 바뀌지 않습니다.
  • 가장 밝은 점에서는 한 걸음도 못 떼므로, 그 주변에 살짝 휜 작은 모자를 씌워 출발선으로 씁니다.

다음 글: [MIT 머신비전 11강] 경계선을 픽셀보다 정밀하게 찾기

참고: MIT 6.801/6.866 Machine Vision (Fall 2020), Berthold Horn · Ryan Sander · Tadayuki Yoshitake 강의 노트 (MIT OpenCourseWare, CC BY-NC-SA 4.0)

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.