실수로 wigglegram을 만들어버렸어요
(lmao.center)- 사진 라이브러리에 쌓인 비슷한 각도의 연속 사진을 자동으로 이어 붙이자, 의도하지 않은 wigglegram 수백 개가 만들어짐
- wigglegram은 여러 프레임을 GIF처럼 반복 재생해 만드는 입체 이미지로, 같은 장면을 약간 다른 시점에서 찍은 사진들이 재료가 됨
- 자동 추출에는 TinEye 같은 역이미지 검색에 쓰이는 지각 해시(perceptual hashing) 를 활용해, 비슷한 이미지끼리 해시가 더 가까운 성질을 이용함
- 스크립트는 사진 해시를 계산하고 이미지 쌍의 해밍 거리를 비교해, 임계값 아래의 비슷한 사진 묶음을 wigglegram으로 추출함
- 일부는 의도한 촬영 결과지만 대부분은 우연히 찍힌 사진이며, 입체감보다 작은 무의식적 동영상 같은 kinescopic 결과도 많음
우연히 생긴 wigglegram
- wigglegram은 여러 프레임을 반복 재생해 만드는 스테레오 이미지의 한 형태임
- GIF처럼 프레임을 루프시키면 약간 다른 시점의 이미지들이 이어지며 입체적인 효과가 생김
- 같은 장면을 조금씩 다른 각도에서 여러 장 찍는 습관과 카메라 롤을 정리하지 않는 습관 때문에, 사진 라이브러리에 비슷한 사진들이 많이 쌓여 있었음
- 이런 사진 묶음은 “같은 장면을 다른 각도에서 찍은 사진들”이라는 wigglegram 입력 조건과 잘 맞음
지각 해시로 비슷한 사진 찾기
- 사진 라이브러리에서 비슷한 이미지의 연속 구간을 자동으로 찾기 위해 지각 해시(perceptual hashing)를 도입함
- 지각 해시는 sha1 같은 암호학적 해시와 달리, 비슷하게 보이는 이미지끼리 해시 비트가 더 많이 겹치도록 동작함
- 스크립트는 모든 사진의 해시를 계산함
- 해시 계산 자체는 빠름
- iCloud에서 사진을 다운로드하는 과정은 느림
- 해시 간 해밍 거리를 계산해 이미지 쌍이 얼마나 비슷한지 판단함
- 예시에서는 해밍 거리 10 정도가 좋은 경계처럼 보였고, 이를 기준으로 비슷한 사진 쌍과 묶음을 추출함
자동 추출 결과의 성격
- 자동 추출 결과 수백 개의 wigglegram이 만들어짐
- 일부는 의도적으로 찍은 사진에서 나온 것이지만, 대부분은 실제로 우연히 생긴 결과임
- 우연한 사진들은 항상 전형적인 입체 이미지처럼 보이지는 않음
- 많은 결과가 “stereoscopic”이라기보다 “kinescopic”에 가까움
- 작은 무의식적 영화처럼 보이는 결과들이 있음
- 여행지나 장소 사진, 동물, 디자인 작업, 조각 사진 등 다양한 대상에서 wigglegram이 생성됨
잘 맞는 소재들
- 동물은 예측하기 어렵기 때문에 wigglegram 소재와 잘 맞음
- 고양이, 개, 비둘기 같은 예시가 포함됨
- 디자인 작업도 여러 각도나 상태를 남기기 쉬워 결과물이 나옴
- iPad Sidecar, baby book, resistor bridge 같은 작업 예시가 있음
- 조각이나 물체 사진도 여러 시점이 이어지면서 wigglegram으로 변환됨
- Olivetti, frog with a joint 같은 예시가 포함됨
공개된 스크립트
- 스크립트는 GitHub에 공개되어 있음
- Mac에서는 iCloud 사진 라이브러리에 대해 동작함
- 그 외에는 사진이 들어 있는 디렉터리를 지정해 사용할 수 있음
댓글과 토론
Lobste.rs 의견들
-
정말 재미있고 엉뚱함. 이렇게 바보 같은 아이디어인데도 아주 잘 작동함
다만 그 해싱 과정은 “비판”이 아니라 다운로드와 해싱 작업량이 엄청나다는 의미에서 꽤 빡세 보임. 이런 빠른 장난감 프로젝트/실험에서는 일단 동작하는 가장 단순한 방법을 쓰고, 백그라운드에서 “오래” 걸리게 두는 게 충분히 합리적임
이런 걸 떠올릴 상상력이 있었다면 같은 방식으로 했을지, 아니면 비슷한 시간대에 찍힌 사진이 아닌 것들을 먼저 걸러냈을지는 모르겠음. 다만 그러다 “최적의 사전 필터링”을 일주일 붙잡고 있다가 질려서, 결국 흥미롭거나 재미있는 결과를 못 냈을 가능성이 크다는 고전적인 함정이 있음- 전형적인 설거지 문제 같음. 10분 안에 직접 다 할 수도 있지만, 아니면 “그 장치”에 넣고 몇 시간 기다리면 개인적인 노력은 거의 안 들어감
-
꽤 멋진 특수 효과임
-
촬영 날짜를 분석해도 비슷한 결과가 나올지 궁금함. 모든 연속 사진이 빠르게 찍힌 건 아니라서 거짓 음성이 더 많을 수도 있겠음
- “해싱 후보로 묶기” 위한 필터로는 좋을 것 같음. 위치 정보가 있다면 같이 쓰면 되고, 적어도 모든 사진을 해싱하지 않아도 됨
게다가 macOS에서는 클라우드에서 뭘 내려받지 않고도 Photos의 sqlite 데이터베이스에서 타임스탬프와 위치 정보를 바로 가져올 수 있을 것 같음
- “해싱 후보로 묶기” 위한 필터로는 좋을 것 같음. 위치 정보가 있다면 같이 쓰면 되고, 적어도 모든 사진을 해싱하지 않아도 됨
-
사진 정보를 어느 정도 보존해서, 해시끼리 비교하면 사진의 유사도를 얻을 수 있는 해싱 알고리즘이 있는 줄 몰랐음. 생각해 본 적 없는 활용처가 엄청 많을 것 같음
-
저 거칠고 로파이한 느낌은 어떻게 내는 걸까?
- 256색 팔레트를 쓰는 Floyd-Steinberg dithering임
GIF를 만들면 256색 팔레트는 사실상 “공짜”로 따라옴. 다만 각 창이 자기 지역 색상표를 갖는 여러 창 프레임을 합성하는 식의 고급 기법을 쓰지 않는 경우에 그렇다
- 256색 팔레트를 쓰는 Floyd-Steinberg dithering임
-
2013년에 당시 파트너와 함께 양방향 거울 뒤에 iPod 3대를 놓고, 작은 웹 앱으로 제어하며, iPad로 촬영을 트리거하고 결과를 보여주는 입체 사진 부스를 만들었음
완성도는 별로였지만 만드는 과정은 재미있었음. http://stereogif.me -
멀미가 있는 사람은 이 페이지를 열 때 조심하는 게 좋음
-
멋지다. 예전에 Nintendo 3DS 사진을 받아 두 카메라 프레임으로 애니메이션 GIF를 만들어 주는 서비스가 있었음
내 블로그에서는 그걸 “wigglepics”라고 불렀고, 꽤 재미있는 미감이었음 -
이 효과가 2010년대 초반 Tumblr와 주변 사이트에서 엄청 유행했던 게 기억남
덕분에 지난 몇 시간 동안 고양이 사진을 찍어서 GIF를 만들고 있었음