✦별 찾기

사진은 수백만 개의 밝기 값일 뿐이에요. 그 안에서 '별'이라고 부를 만한 점을 골라 위치를 적는 것이 첫 단계예요. 점을 찾는 것보다 어려운 건, 별처럼 보이는 가짜를 뒤로 미루는 일이에요.

1. 배경을 빼고 솟은 점 찾기

단계를 하나씩 눌러 보세요. 실제 검출과 같은 흐림 함수로, 이 기기에서 바로 계산한 그림이에요.

|
점선 줄의 밝기사진을 누르면 줄을 옮겨요

빨강·초록·파랑 밝기. 하늘 빛이 한쪽으로 갈수록 밝아지는 기울기도 보여요.

북두칠성 (나무) 샘플을 화면용으로 줄인 사진이에요.

북두칠성과 누각 사진을 바꿔 가며 보세요. ⑤에서 문턱을 낮추면 잡음까지, 높이면 밝은 별만 남아요. 누각 사진에서는 지붕 경계와 창문 줄도 별처럼 솟아요. 실제 검출은 평균 + 3σ를 써요.
  1. 흑백으로. 색은 별 찾기에 필요 없어요. 사람 눈이 느끼는 밝기에 맞춰 빨강·초록·파랑에 0.299·0.587·0.114를 곱해 더해요.
  2. 배경 빼기. 도시 근처 하늘은 한쪽이 훨씬 밝아서, 사진 전체에 같은 기준을 쓰면 밝은 쪽 하늘이 통째로 별이 돼요. 그래서 사진을 크게(σ 8픽셀) 흐려 “그 자리의 하늘 밝기”를 만들고, 원래 사진에서 빼요. 흐림은 상자 흐림을 세 번 겹쳐 가우스 흐림에 가깝게 해요. 반지름과 상관없이 픽셀마다 덧셈 몇 번이라 1,200만 화소 사진도 1~2초면 돼요.
  3. 솟은 점과 문턱. 바로 옆 8칸보다 밝은 꼭대기 중에, 사진 전체 평균보다 표준편차의 3배 넘게 밝은 것만 남겨요. 사진마다 밝기가 달라서 문턱도 사진에 맞춰 정해요.
  4. 크기와 중심. 꼭대기에서 사방으로 밝기가 떨어지는 곳까지를 별의 크기로 재고, 밝기로 가중 평균해 픽셀보다 정밀한 중심을 구해요. 너무 가까이 붙은 두 점은 밝은 하나만 남겨요.

2. 가짜가 너무 많다

문턱을 넘는 점은 사진 한 장에 수백~수만 개예요. 그중 진짜 별은 일부고, 나머지는 창문, 가로등, 조명 받은 나무 줄기, 지붕과 하늘의 경계, 바다에 비친 불빛, 비행기 불빛이에요. 그리고 이런 가짜는 대개 진짜 별보다 밝아요.

사진의 동그라미를 누르면 그 점을 크게 들여다봐요
들쭉날쭉함 ––
작을수록 별다워요, 0.12 미만이면 별
1
2
3
4
5
6
7
8
점

노란 두 원 사이 고리를 여덟 조각으로 나눠 조각마다 평균 밝기를 쟀어요 (흰 막대는 점 자체의 밝기). 가장 밝은 조각과 가장 어두운 조각의 차이를 점이 주변 하늘보다 밝은 정도로 나눈 값이 들쭉날쭉함이에요. 진짜 별은 사방이 고른 하늘이라 노란 막대가 고르고, 지붕 경계·나뭇가지는 한쪽이 밝아 들쭉날쭉해요. 점이 아주 밝으면 노란 막대 차이가 상대적으로 작아져 별답게 나오기도 해요.

실제 샘플에서 이 기기로 바로 찾은 결과예요. 두 순서를 번갈아 보고, 동그라미를 눌러 들여다보세요.

다음 단계(모양 맞추기)는 앞쪽 별 몇십 개만 써요(삼각형은 10~15개). 그 자리를 가짜가 차지하면 엉뚱한 모양을 맞춰 보게 돼요. 은하수 사진은 밝은 순 상위 60개 중 진짜 별이 2개뿐이었어요. 나머지는 모두 건물 창문이었어요.

3. 별다움: 주변이 고른 하늘인가

가짜들의 공통점을 사진에 겹쳐 보니 분명했어요. 진짜 별은 사방이 고른 하늘 위에 떠 있어요. 지붕 경계는 한쪽만 밝고, 나무 줄기는 마주 보는 두 쪽이, 창문은 이웃 창문과 벽이 주변에 걸려요.

그래서 점 주변의 고리를 8조각으로 나눠 조각마다 평균 밝기를 재고, (가장 밝은 조각 − 가장 어두운 조각) ÷ (점이 주변 하늘보다 밝은 정도)를 “별다움”으로 써요. 작을수록 별다워요. 0.12 미만인 점을 먼저, 그 안에서 밝은 순으로 줄 세워요. 가짜를 버리지는 않고 뒤로 미루기만 해요.

사진진짜 별 (중앙값)가짜 (상위 60개 중앙값)
서울 근처 산 (누각)0.030.92
여름 여행 ①0.091.64
오로라 ④0.060.91
석촌호수 은하수 (창문)0.060.49
밝은 순124
별다운 순280
자동으로 풀리는 실제 사진 14장에서, 앞쪽 25개 안에 든 진짜 별 수의 합

4. 줄지은 점: 비행기와 창문

비행기 불빛 하나하나는 진짜 별과 똑같이 생겨서 별다움으로 못 걸러요. 대신 여러 점이 한 직선 위에 같은 간격으로 늘어서요. 아파트 창문도 같은 간격(또는 꺼진 창문만큼 두세 배 간격)으로 놓여요. 별이 우연히 다섯 개 한 줄에 설 수는 있지만, 간격까지 규칙적이기는 어려워요.

같은 간격(한 칸은 꺼진 창문)간격이 제각각
왼쪽: 간격이 규칙적인 줄 → 뒤로 미뤄요. 오른쪽: 우연히 한 줄에 선 별 → 그대로 둬요.

모든 간격이 기준 간격의 정수배(±15%, 4배까지)이고 기준 간격 그대로인 간격이 둘 이상일 때만 줄지었다고 봐요. 처음엔 이 조건이 없어서 사진마다 상위 400개 중 200~350개가 걸려, 샘플 14장을 합쳐 진짜 별 426개를 밀어냈고, 배수 제한이 없을 때는 9~12배 간격까지 통과해 사이판의 진짜 별 하나가 241위로 밀렸어요.

5. 합성 장면으로 시험하기

실제 샘플은 방법을 만들며 계속 들여다본 사진이라, 처음 보는 사진에서도 된다는 보장이 없어요. 그래서 정답을 아는 밤하늘을 픽셀 그림으로그리고, 창문 격자 건물·능선·전봇대·바다 반사·위성 궤적·비행기 점선을 일부러 넣어 시험해요. 각 장면을 여덟 방향으로 찍었을 때 풀린 수예요.

장면 (8방향)밝은 순별다움+ 줄지음
하늘만888
도시 (창문)8 (5.2초)8 (5.1초)8 (0.1초)
숲·전봇대677
바다 반사8 (4.8초)8 (0.1초)8
위성·비행기328
전부 섞음017

어느 경우에도 틀린 답을 확신하지는 않았어요.

이 단계가 넘기는 것

100개
화면에 보여 주는 별 (사람이 고칠 수 있게)
전부
풀이에 넘기는 검출 (별다운 순으로 줄 세워)
2~3초
1,200만 화소 사진의 별 찾기 (PC 측정)

별 찾기는 화면이 멈추지 않도록 따로 도는 일꾼(Web Worker)이 해요. 풀이가 잘 안 되면 사람이 “별 고치기”에서 가짜를 지우거나 빠진 별을 더할 수 있어요. 처음에는 이 일을 늘 사람이 했지만, 별다움 덕분에 지금은 대부분 사람 손 없이 넘어가요.