점 몇 개면 얼굴이 보이기 시작할까?
얼굴 하나를 점으로 그리려면 점이 아주 많이 필요할 것 같습니다. 점을 찍을수록 조금씩, 꾸준히 얼굴에 가까워질 것 같고요. 그런데 직접 찍어 보면 그렇게 흘러가지 않습니다. 처음 수십 개는 아무 의미 없는 얼룩인데, 어느 구간에서 갑자기 얼굴이 떠오르고, 그 뒤로는 점을 몇 배 더 찍어도 별로 달라지지 않습니다. 점이 크면 더 찍을수록 오히려 그림이 망가지기도 하고요. 아래에서 점이 하나씩 찍히는 모습을 지켜보세요.
모델은 이렇게 움직입니다
- 코드로 직접 그린 흑백 그림(얼굴 또는 풍경, 가로세로 160칸)이 있습니다. 칸마다 얼마나 어두운지(흰 종이 0 ~ 새까만 곳 1) 값이 있어요. 실제 사진이나 작품이 아니라 이 페이지가 도형과 그라디언트로 만든 그림입니다.
- 점은 그림 안의 아무 곳에나 무작위로 떨어지는데, 그 자리가 어두울수록 받아들여질 확률이 높습니다(어둠이 0.8이면 80%). 그래서 어두운 곳에 점이 더 많이 모입니다. 점끼리 겹치면 그냥 더 까매질 뿐 어둠은 1을 넘지 않습니다.
- 멀리서 보기: 멀리서 보면 점 하나하나가 안 보이고 뭉개져 보이죠. 이것을 흉내 내려고 원래 그림과 점 그림을 똑같이 흐리게 만든 뒤 비교합니다. 멀리 볼수록 더 많이 흐리게 합니다.
- 닮은 정도는 흐리게 한 두 그림이 밝고 어두운 자리가 얼마나 같은지를 0~100%로 나타낸 값입니다(상관계수). 100%면 밝은 곳·어두운 곳의 배치가 똑같다는 뜻이에요. 점은 처음엔 하나씩, 많아지면 한 번에 지금 개수의 5%씩 찍습니다.
직접 돌려보기
① 점이 하나씩 찍혀 가는 그림
가장 큰 그림이 지금까지 찍힌 점을 가까이서 본 모습이고, '멀리서 본 모습'은 그것을 흐리게 한 것입니다. 큰 파란 숫자가 원래 그림과 닮은 정도예요. 처음엔 점이 하나씩, 점이 많아질수록 한꺼번에 여러 개씩 찍힙니다.
② 점이 늘면 얼마나 닮아 갈까
가로는 찍은 점 개수(한 칸마다 10배), 세로는 닮은 정도입니다. 재생이 지나온 곳까지만 그려집니다. 점선은 닮은 정도 80%, 세로 회색 선은 슬라이더로 정한 점 개수의 끝이에요.
③ 멀리서 볼수록 점이 덜 필요할까 (설정마다 8번 돌린 비교)
지금 그림과 점 크기로, 멀리서 보는 정도마다 닮은 정도 80%에 닿을 때까지 필요했던 점 개수입니다(8번 돌린 가운데 값, 최대 20,000개). 파란 진한 막대가 지금 설정이에요.
④ 점을 계속 찍으면 계속 닮아질까 (점 크기별, 미리 돌린 비교)
지금 그림과 멀리서 보기 설정으로, 점 크기 네 가지를 20,000개까지 찍었을 때의 닮은 정도입니다. 굵은 선이 지금 점 크기예요. 큰 점은 금방 닮지만, 많이 찍으면 종이 전체가 까매져서 다시 덜 닮아집니다.
이 결과가 말하는 것, 말하지 않는 것
말하는 것:
- 점이 적을 땐 얼룩이지만, 수백 개쯤에서 갑자기 얼굴이 떠오르고, 수천 개를 넘으면 더 찍어도 거의 그대로예요. 이 모델에선 약 480개에 닮은 정도 80%, 3,000개에 96%였어요.
- 점은 무작위로 떨어져 처음엔 우연한 얼룩이 그림을 가려요. 점이 늘면 얼룩은 빨리 묻히지만 거의 닮은 뒤엔 고칠 게 적어요. 10→1,000개는 69%p, 3,000→6,000개는 1%p 올랐어요.
- 그렇다면 점은 몇 개면 될까? 80%까진 점을 늘리는 게 크게 도왔지만 3,000개를 넘으면 거의 그대로였어요. 멀리서 볼 그림이면 훨씬 적게(약 140개), 큰 점이면 너무 많이 찍지 않는 쪽이 나았어요.
상세 설명
말하는 것: 얼굴 그림, 점 크기 1.3%(그림 폭 대비 지름), 멀리서 보기 "몇 걸음"으로 8번 돌린 평균에서, 닮은 정도는 점 10개일 때 19%, 100개 48%, 300개 72%, 1,000개 88%, 3,000개 96%, 6,000개 97%였습니다. 닮은 정도 50%에 처음 닿은 것은 가운데 값으로 점 약 100개, 80%는 약 480개, 90%는 약 1,100개였습니다. 점이 10개에서 1,000개로 100배 늘 때 닮은 정도는 69%p 올랐지만, 3,000개에서 6,000개로 두 배 늘 때는 1%p만 올랐습니다. 풍경 그림은 밝고 어두운 차이가 덜 뚜렷해 80%까지 약 1,410개가 필요했습니다. 멀리서 볼수록 적은 점으로 충분했습니다(80%까지 "바로 앞" 약 2,660개, "몇 걸음" 약 480개, "아주 멀리" 약 140개). 점 크기가 0.6%면 20,000개까지 찍어도 닮은 정도가 98%로 유지됐지만, 3.8%로 키우면 점 약 900개 근처에서 86%로 가장 닮았다가 20,000개에서는 종이의 99%가 잉크로 덮이며 20%까지 떨어졌습니다.
말하지 않는 것:
- 이 페이지는 사람이 '얼굴이 보인다'고 느끼는 순간을 잰 게 아니에요. 흐리게 한 두 그림의 닮음(상관계수)으로 대신했고, 480개·80% 같은 숫자는 이 그림과 잣대에서만 나온 예시예요.
- 실제 점묘화는 화가가 색과 자리를 골라 찍고, 신문 하프톤은 규칙적인 격자에 크기가 다른 점을 놓아요. 이 모델은 둘을 단순히 흉내 낼 뿐 재현하지 않아요.
- 이 모델은 어떤 그림이 더 아름다운지, 점묘가 좋은 기법인지를 가리지 않아요. 점이 원래 그림의 밝고 어두운 배치를 얼마나 따라가는지만 보여 줘요.
상세 설명
말하지 않는 것: 이 페이지는 사람이 실제로 "얼굴이 보인다"고 느끼는 순간을 잰 것이 아닙니다. 눈이 얼굴을 알아보는 과정은 훨씬 복잡하고, 여기서는 그것을 흐리게 한 두 그림의 상관계수로 아주 단순하게 대신했습니다. 그래서 "80%"나 "점 480개" 같은 숫자는 이 프로젝트가 정한 그림·흐림·잣대에서만 나온 예시이며, 다른 그림이나 다른 잣대에서는 달라집니다. 점묘화(쇠라 등)나 신문 인쇄의 하프톤을 재현한 것도 아닙니다. 실제 점묘화는 화가가 색과 위치를 골라 찍고, 실제 하프톤 인쇄는 무작위가 아니라 규칙적인 격자 위에 크기가 다른 점을 놓습니다. 또 이 모델은 어떤 그림이 더 아름다운지, 점묘가 좋은 기법인지를 판단하지 않습니다. 점이 원래 그림의 밝고 어두운 배치를 얼마나 따라가는지만 보여 줍니다.
이론적 근거와 구현 메모
- 모델의 뿌리: 점묘화는 작은 색 점을 나란히 찍어 멀리서 보면 섞여 보이게 하는 그림 기법이고(쇠라 등), 하프톤은 신문·잡지 인쇄에서 잉크 한 가지로 점의 크기나 빽빽함을 바꿔 밝고 어두운 단계를 내는 방법입니다. 이 실험은 두 가지의 공통된 아이디어, "점이 모이는 정도로 어두움을 나타내고 멀리서 보면 이어져 보인다"만 단순하게 흉내 냅니다.
- 핵심 가정과 수식: 점은 그림 위의 무작위 위치 (x, y)에서 확률 d(x, y)(그 자리의 어두움)로 받아들여집니다. 그래서 점이 많으면 점의 밀도가 어두움에 비례하게 됩니다. 원래 그림 O와 점 그림 I를 같은 폭 σ의 가우스 흐림으로 뭉갠 뒤, 닮은 정도 = max(0, 상관계수(Oσ, Iσ))로 잽니다. 점이 n개일 때 무작위로 생기는 얼룩(잡음)은 점이 늘수록 줄어서, 닮은 정도는 처음엔 빠르게 오르다 차츰 1에 가까워집니다. 다만 점이 크면 겹친 곳이 까맣게 포화해 밝고 어두운 차이가 사라지므로 다시 떨어질 수 있습니다.
- 이 프로젝트의 단순화: 그림은 160×160칸의 흑백 한 장이고, 색은 쓰지 않습니다. 점은 모두 같은 크기의 둥근 검은 점이며 무작위로 떨어집니다(실제 하프톤의 규칙적인 격자나 화가의 선택이 없음). 흐림 정도 "바로 앞"~"아주 멀리"는 가우스 표준편차 1~6칸입니다. "닮은 정도"는 사람의 지각을 잰 값이 아니라 이 프로젝트가 고른 하나의 잣대입니다.
- 이론값과 시뮬레이션: 잡음이 점 개수에 반비례해 줄어든다고 보면 닮은 정도는 대략 1/√(1 + c/n) 꼴로, 점 개수를 로그 눈금으로 놓았을 때 S자처럼 오르다 평평해질 것으로 예상할 수 있습니다. 시뮬레이션(얼굴, 점 크기 1.3%, "몇 걸음", 8번 평균)에서 100개 48% → 1,000개 88% → 3,000개 96% → 6,000개 97%로 그렇게 평평해졌고, 점 크기 3.8%에서는 예상대로 겹침 때문에 900개 근처 86%에서 20,000개 20%로 떨어졌습니다. 같은 시드는 같은 결과를 냅니다.
- 더 읽을거리: 점묘화와 하프톤 인쇄는 미술사·인쇄 입문서에서 쉽게 찾아볼 수 있습니다. 이 페이지는 특정 연구를 재현하지 않습니다.
- 이 프로젝트의 단순화된 모델이며 숫자는 예시입니다. 시뮬레이션은 시드 난수(mulberry32)를 쓰고 같은 시드면 같은 결과가 나옵니다. 점 하나가 칸을 덮는 비율은 칸마다 4×4 표본으로 계산하고, 겹치면 1에서 멈춥니다.
- 닮은 정도는 점을 더 찍을 때마다 다시 잽니다. ③은 멀리서 보는 정도마다 시드 8개(검증과 같은 시드)로 80%에 닿을 때까지 돌린 가운데 값, ④는 시드 하나로 20,000개까지 돌린 결과입니다. 검증은
node tools/validate-halftone.js로 할 수 있습니다.