✓확인하기

모양이 닮은 짝은 하늘에 수없이 많아요. 그 짝이 진짜인지 알려면, 그 짝대로 별 지도를 사진 위에 겹쳐 보고 나머지 별까지 맞는지 봐야 해요. 그리고 '이만큼 맞는 게 우연일 수 있나?'를 숫자로 따져요.

1. 짝대로 겹쳐 보기

후보 짝(사진 별 셋 ↔ 하늘 별 셋)이 있으면, 하늘의 방향을 사진의 점으로 바꾸는 변환이 정해져요. 이 변환으로 별 지도의 별 1,624개를 사진 위에 투영하면, 정답일 때는 짝에 쓰지 않은 사진 속 다른 별들 위에도 지도 별이 척척 겹쳐요.

자료를 불러오는 중…
서울 근처 누각 사진에 V2 방식(지문이 가장 가까운 quad = 답)을 돌린 결과예요. 오른쪽 그래프의 점을 누르면 그 후보대로 별 지도를 겹쳐요. 빨강은 짝지은 별(답을 만들 때 쓴 별이라 당연히 겹쳐요), 초록은 그 밖에 더 겹친 별이에요.

지문이 가장 가까운 1등은 짝지은 별 4개 말고는 하나도 더 겹치지 않고, 15등인 정답은 15개가 더 겹쳐요. 한편 별 지도를 아무렇게나 놓아도 우연히 겹치는 별이 가끔 있어요. 그 평균이 우연히 겹칠 기대치예요. 이 둘을 비교하는 게 4장의 이야기예요.

사진을 불러오는 중…

빨간 작은 원은 사진에서 찾은 별(앞쪽 60개), 보라 원은 답대로 겹친 별 지도, 초록 원은 둘이 몇픽셀 안에서 만난 곳이에요. 조금만 돌리거나 옮겨도 초록이 사라지고 확률이 무너져요.

북두칠성 샘플을 이 기기에서 실제로 풀고, 찾은 답대로 별 지도를 겹친 모습이에요. 슬라이더로 답을 조금만 틀어 보세요.

2. 더 잘 맞는 변환 찾기

처음 짝 세 별의 위치에는 오차가 있어서, 그것만으로 만든 변환은 사진 끝으로 갈수록 어긋나요. 그래서 겹친 별 중 몇 쌍을 무작위로 골라 변환을 다시 만들고, 더 많은 별이 겹치는 변환을 남기는 일을 여러 번 되풀이해요(RANSAC). 가짜 별이 섞여 있어도 진짜 별들끼리는 서로 같은 변환을 가리키니까 이겨요. 그다음 사진 중심(광축)이 하늘의 어디를 가리키는지 다시 잡아 한 번 더 맞춰요.

사진 별(흰 점)마다 별 지도의 짝이 하나씩 있어요. 이 중 6쌍은 가짜예요. 어느 것이 가짜인지는 모르는 채로 변환을 찾아야 해요.
  • ● 사진의 별 · ● 변환으로 배치한 지도 별
  • ━ 어긋남 · ◯ 뽑은 2쌍 · ◯ 찬성한 짝
짝 20쌍 중 6쌍이 가짜인 합성 하늘이에요. '전부로 평균내기'는 가짜에 끌려가요. '2쌍 뽑기'를 몇 번 눌러 보고, '200번 뽑기'로 끝까지 가 보세요. '가짜 짝 보기'를 켜면 어느 것이 가짜였는지 보여요.
모든 모델은 같은 짝(겹친 별)으로 각각 따로 맞춘다
짝지은 별 3~4개로만 돌리기·키우기·옮기기를 맞춘다. 짝 근처만 맞고 멀어질수록 크게 어긋난다
평균 어긋남 0.0px
가장 크게 0px · 겹친 별 …개 기준
  • ● 사진의 별
  • ▦ 하늘의 같은 간격 격자
  • ● 모델로 배치한 지도 별
  • ━ 어긋남 (길수록 크게 어긋남)
  • ◯ 매칭한 별 (짝)
시야가 넓은 사진 네 장에서 겹친 별을 다섯 가지 모델로 놓아 봐요. 선이 어긋남이고, 파란 격자는 하늘의 같은 간격 선을 그 모델로 그린 거예요.

은하수 사진은 짝지은 별로만 맞추면 평균 35px, 가장 크게 288px 어긋나요. 겹친 별 전부로 다시 맞추면 21px, 렌즈 왜곡을 더해도 20px, 어안 렌즈로 봐도 7px인데, 원근 변환이면 2px이에요. 건물이 똑바로 서도록 원근 보정을 한 사진이라서예요. ②의 격자는 반듯한 바둑판, ⑤는 사다리꼴, ③④는 휘어져요. 누각·호주·증선 같은 보통 광각 사진은 ②만으로도 2~7px이고, 렌즈 왜곡이나 어안이 조금 더 맞아요. 사진마다 맞는 모델이 달라요.

후보는 사진 한 장에 수만 개라 이 확인이 가장 비싸요. 대부분의 오답 후보는 짝 세 별 말고는 겹치는 별이 하나도 없어서, 광축을 한 번 다시 잡아 봐도 그대로면 비싼 단계를 건너뛰고 버려요.

사진원래바로 버리기광축 한 번 더 보고 버리기 (지금)
호주 ①5.3초2.6초3.8초
오리온0.86초0.44초0.63초
북두칠성0.17초0.08초0.11초

3. 비스듬한 사진: 원근 변환

겹친 별이 8개 이상이면 원근 변환으로 한 번 더 다듬어요. 사진을 비스듬히 찍었거나, 건물을 똑바로 세우는 보정을 한 사진은 위쪽은 넓고 아래쪽은 좁게 펼쳐져서, 돌리고 키우기만으로는 맞지 않아요.

그렇다고 사진이 얼마나 비스듬한지 미리 재지는 않아요. 원근 변환은 기울기가 없으면 닮음 변환과 같아지니, 일단 맞춰 보고 세 가지를 봐요. 짝이 8개 이상인가(적으면 숫자 8개짜리 변환이 짝에만 억지로 맞춰져요), 모양이 말이 되는가(늘어남 비 2.5 이하), 맞는 별이 늘었나. 셋 다 맞을 때만 원근 변환을 써요.

맞는 별 (40개 중): 닮음 8 · 원근 40
  • ✓ 짝 8개 이상 (20개)
  • ✓ 늘어남 비 1.48 ≤ 2.5
  • ✓ 원근 변환으로 맞는 별이 늘었다
→ 원근 변환을 쓴다
  • ● 사진의 별 · ● 배치한 지도 별 · ━ 어긋남
  • ◯ 맞추는 데 쓴 짝 · ▦ 하늘의 같은 간격 격자
합성 하늘의 별 40개예요. 기울기를 0으로 두면 원근 변환을 써도 맞는 별이 늘지 않아 닮음 변환 그대로예요. 기울기를 키우거나, 짝을 7개 아래로 줄여 보세요.
석촌호수 은하수에 맞춘 모델어긋남
돌리기·키우기·옮기기만30~127px
어안 렌즈 + 왜곡평균 5.3px
원근 변환평균 2.4px

같은 짝에서 시작해도 원근 변환을 더하자 겹친 별이 12개에서 26개로, 우연일 확률이 10-6.4에서 10-21로 바뀌었어요. 처음엔 이 사진을 어안 렌즈 사진이라고 결론 내렸는데, 사실은 원근 보정을 한 사진이었어요.

4. 우연일 확률

별이 많은 하늘에서는 아무렇게나 겹쳐도 몇 개는 맞아요. 그래서 “몇 개 맞았다”가 아니라 틀린 답이어도 이만큼 맞을 확률을 계산해요. 이 확률이 10억 분의 1(10-9)보다 작을 때만 “찾았어요!”라고 말해요. Astrometry.net도 같은 생각으로 같은 크기의 기준을 써요. (어안 풀이는 아직 맞는 별 수와 오차로만 판정하고, 시각·장소 풀이는 살펴본 경우의 수로 깎은 기준을 따로 써요.)

우연히 겹칠 기대치 λ는 사진 별 수 × 사진 안에 들어온 지도 별 수 × 허용 원 넓이 ÷ 사진 넓이예요. 기대치가 λ일 때 k개 넘게 겹칠 확률은 푸아송 분포로 계산해요. 짝지은 별은 당연히 겹치니 빼고 세요.

처음에는 “기대치의 몇 배 맞았나”를 기준으로 썼어요(5배 이상이면 찾았다). 그런데 샘플 16장을 돌리자 거의 모두 “찾았다”가 나왔고 그중 13장이 틀린 답이었어요. 정답을 아는 사이판·은하수·증선 사진은 60~136° 빗나간 답을 확신했어요.

자료를 불러오는 중…
누각 사진 한 장을 풀며 실제로 확인한 후보 1만 1천여 개예요. 가로는 우연 기대치(10배마다 한 칸), 세로는 겹친 별 수, 녹색은 별을 맞게 짝지은 후보예요. ①·②·③을 고르고 ▶로 라운드(사진 별 15·25·40·60개)를 진행해 보세요. 점을 누르면 그 후보의 숫자가 나와요.

옛 풀이는 라운드마다 필연 중 겹친 별이 가장 많은 답을 고르고, 그중 배수가 가장 높은 답을 냈어요. 60개 라운드에서는 진짜(29개, 12배)를 골랐지만 40개 라운드의 가짜(9개, 21배)에게 배수로 졌어요. 함정이 둘 있었어요.

  • 짝지은 별까지 셌다. 후보를 만든 별 3~4개는 원래 겹쳐요. 가짜가 실제로 더 맞힌 건 2개뿐이었어요.
  • 기대치가 0에 가까운 후보. 좁게 찍힌 후보는 사진 안에 지도 별이 적어서 기대치가 아주 작아요. 거의 0으로 나누는 셈이라 몇 개만 맞아도 배수가 치솟아요. 짝을 빼도 2 ÷ 0.08 = 25배로 여전히 1등이에요.

확률로 보면 가짜는 10-2.5(300번에 한 번), 진짜는 10-16.8이에요. 후보를 1만 개 보면 300번에 한 번 있는 가짜는 반드시 나오니, 기준은 사진 수만 장을 풀어도 가짜가 한 번 나올까 말까 한 10-9로 잡았어요.

우연일 확률
진짜 답 (북두칠성·오리온·호주 ①)10⁻¹⁴ ~ 10⁻³⁷
가짜 답 (나머지 전부)10⁻³·⁹보다 큼

기준을 10-9로 두자 틀린 답을 확신한 사진이 13장에서 0장이 됐고, 풀리던 사진은 그대로 풀렸어요. 덤으로 “확신하면 바로 멈추기”가 안전해져서 북두칠성은 0.9초에서 0.18초로, 못 푸는 사진은 70초에서 9.4초로 빨라졌어요.

5. 마무리 다듬기

확신한 순간 바로 멈추면, 그때 쓴 별 수에 따라 점수가 출렁여요(서울 사진은 9.1과 11.8 사이). 그래서 확신한 변환에서 출발해 그 영역의 별 60·100·150개로 대응을 다시 모으고, 허용 반경을 넓혔다 좁히며 다듬어 점수가 가장 높은 것을 골라요. 풀리는 사진 14장 중 가장 낮던 우연일 확률이 10-9.1(기준 바로 위)에서 10-19.7로 내려가, 모두 기준에서 넉넉히 떨어졌어요.

6. 확신하지 못하면 사람에게

기준을 넘는 답이 없으면, 가장 그럴듯한 후보들을 보여 주고 사람이 고르게 해요. 사이판 사진처럼 하늘에 보이는 별이 10개 남짓이면, 9개가 맞아도 10억 분의 1 수준의 확신은 수학적으로 나올 수 없어요(10-5 근처). 이 구간은 우연과 구분되지 않으니 기준을 낮추지 않고, 다른 정보(촬영 시각·장소)를 더해 풀어요.

기준이 엄격해서 놓치는 사진은 있어도, 앱과 같은 조건(8초)에서는 처음 보는 인터넷 사진까지 포함해 틀린 답을 확신한 적이 없어요. 다만 조건을 바꾼 실험에서는 두 번 있었어요(위의 오로라 사진, 시간을 60초로 늘렸을 때 일그러진 변환 하나). 틀린 별자리를 자신 있게 그리는 것보다 “모르겠어요”가 낫다고 봤어요.