메뉴
HN
Hacker News • 39일 전

철도망을 플랫베드 스캐너로 사용하기

IMP
4/10
핵심 요약

한 엔지니어가 산업용 라인스캔 카메라를 기차와 페리에 장착해 이동하면서 수만 픽셀에 달하는 초광각 이미지를 촬영하는 프로젝트를 소개합니다. 카메라가 이동하며 한 줄씩 캡처한 영상을 이어 붙이는 방식으로, 1990년대 디지털 스캐닝백의 원리를 역발상으로 적용한 것이 핵심입니다.

번역된 본문

Philo의 웹사이트: 철도망을 플랫베드 스캐너로 사용하기 (2026년 8월 17일 — 4,600단어)

지난 몇 달 동안, 저는 산업용 라인스캔 카메라(linear scanning camera)를 이용해 기차와 페리에서 매우 넓은 사진을 찍는 작업을 해왔습니다. 작동하게 만드는 것은 상당한 도전이었지만, 결과물이 스스로 말해준다고 생각합니다.

(2026년 2월 샌프란시스코-오클랜드 페리에서 촬영된 56,894x2,048 픽셀 흑백 이미지. 스크롤로 확대, 클릭 드래그로 이동 가능. 더 많은 사진은 갤러리에서 볼 수 있음.)

저는 EMFcamp 2026에서 이 프로젝트에 대한 강연을 했으며, 아래에서 영상을 보거나 계속 읽으면 같은 이야기를 더 자세히 볼 수 있습니다.

도대체 뭘 보고 있는 건가요?

위 컨테이너 항구 사진 같은 이미지를 캡처하는 과정은 다음과 같습니다. 카메라를 이동하는 차량 밖을 향하게 하고, 다이어그의 흑백 라인들과 비슷하지만 훨씬 얇은 단일 수직선을 지속적으로 캡처합니다. 카메라가 이동하면서 카메라가 보는 것이 계속 변합니다. 카메라의 라인들을 충분히 빠르게 캡처해서 이어 붙이면, 완전해 보이는 이미지를 만들 수 있습니다. 실제로는 그것보다 더 복잡하고 좋은 결과를 내기가 꽤 까다로웠지만, 그것이 핵심 아이디어입니다.

배경 및 선행 사례

1990년대에 디지털 카메라 센서 기술은 중형·대형 필름의 크기와 유효 해상도에 미치지 못했기 때문에 디지털 스캐닝백(scanning back)이 개발되었습니다. 이는 거대한 픽셀 격자 없이 단일 픽셀 라인(컬러의 경우 3개 라인)을 프레임에 걸쳐 이동시켜 고해상도 이미지를 캡처하는 방식입니다. 그 이후로 이미지 센서는 꽤 커졌지만(요즘은 4x5인치 대형 포맷을 커버하는 센서도 있음), 이 접근법은 대형 포맷에서 여전히 거대한 센서보다 제작 비용이 저렴합니다.

저는 한동안 대형 카메라용 디지털 스캐닝백을 직접 만들 생각을 했지만, 카메라에 제대로 장착할 것을 만드는 게 너무 벅차게 느껴져 실행에 옮기지 못했습니다. (구매도 선택지였지만, 1990년대 제품은 여전히 eBay에서 수천 달러에 거래되고, 사용하려면 그 시대의 컴퓨팅 환경을 재구성해야 합니다.)

작년 말, Gigawipf의 중형 포맷 스캐닝 카메라 제작 영상을 보다가 갑자기 "카메라 전체가 움직이고 피사체는 가만히 있으면 어떨까?"라는 생각이 들어 시도해보기로 했습니다.

(버몬트의 산 정상에서 대형 카메라에 필름을 장전하는 모습. 정상적인 방법으로 사진 찍는 것에 알레르기가 있어서입니다. 그 여행의 사진은 여기 있습니다.)

저는 비슷한 맥락의 선행 사진들을 찾았습니다(Scannoramic 프로젝트, John Hikerbiker의 실험, Daniel Lawrence Lu의 고정 카메라 역발상, Martin Liebscher의 흥미로운 필름 촬영). 하지만 결과들은 개선의 여지가 있어 보였습니다. 이동 속도를 고려하고 더 깨끗한 결과를 얻는 게 그리 어렵지 않겠죠, 그렇죠?

소파 슬릿 스캐닝

이 "거대 스캐너" 개념을 떠올린 그날 밤, 바로 시도해봐야 했습니다. 기차를 타러 나가기엔 늦은 시간이라서 대신 소파를 스캔했습니다. 사무용 의자에 휴대폰을 올려놓고 영상을 촬영하며 천천히 밀었습니다. 그런 다음 각 프레임의 가장 왼쪽 열("슬릿")을 추출해 이미지로 합치는 대충 짠 코드를 작성했습니다(독자 보호를 위해 여기서는 공유하지 않겠습니다). 제 코드 주석에는 The Beths의 "Future Me Hates Me" 가사가 포함되어 있었는데, 그 코드를 느슨히 기반으로 다음 버전 카메라의 후처리기를 작성하기 시작하며 자신의 결정을 저주하게 되자 다소 자기실현적 예언이 되었습니다.

결과물이 vaguely 소파처럼 보이긴 하지만 상당히 눌려 있고 벽에 걸린 그림은 알아볼 수 없습니다. 분명 더 잘할 수 있습니다. 후처리를 조정해 모든 열을 두 배로 늘리니 덜 눌려 보이지만, 의자를 일관된 속도로 밀지 않았기 때문에 여전히 엉망입니다. 저는 처음부터 알고 있었습니다...

원문 보기
원문 보기 (영어)
Philo's Website Using the railway network as a flatbed scanner August 17 th , 2026 — 4,600 words Over the past few months, I've been working on using an industrial linear scanning camera to take very wide photos out of trains and ferries. Getting it working has been quite the challenge, but I think the results speak for themselves. taken on the San Francisco to Oakland ferry in February 2026 (56,894x2,048 pixel grayscale image); scroll to zoom in and click and drag to move More pictures are on display in the gallery . I presented a talk on this project at EMFcamp 2026 , which you can watch below or read on for the same story in more detail: --> What am I even looking at? The process of capturing an image like the one of the container port above. The camera is pointed out of a moving vehicle and is constantly capturing a single vertical line kinda like these grayscale ones in the diagram, but a lot thinner. As the camera moves, what exactly it sees is changing. If I capture the lines from the camera quickly enough and stitch them together, I can produce a complete-looking image. It's a bit more complicated than that and getting the results looking good was rather tricky, but that's the main idea behind it. Background and Prior Art Back in the 1990s, digital camera sensor technology hadn't caught up to the size and effective resolution of medium and large format film, so digital scanning backs were developed. They capture a high-resolution image without needing a giant grid of pixels by moving a single line of pixels (or three lines for color) across the frame. In the intervening years, image sensors have gotten pretty big (there's even one that covers 4x5" large format nowadays), but this approach is still cheaper to build for large formats than a giant sensor. I'd been thinking about building my own digital scanning back for my large format camera for a while, but I've never quite gotten around to it because building something to mount properly on my camera seemed too daunting. (Buying one could have been an option, but ones from the 1990s still go for thousands of dollars on ebay and require reconstructing a computing environment of a similar vintage to use.) Late last year, I was watching a video on Gigawipf's medium format scanning camera build and suddenly thought: "what if the entire camera moved and the subject didn't?" and decided to give it a shot. Loading film into my large format camera on top of a mountain in Vermont because I'm allergic to doing photography in a normal way. (The resulting pictures from that trip are here .) I found some previous photos in the same vein ( the Scannoramic project , John Hikerbiker's experiment , Daniel Lawrence Lu's reversal of his stationary camera , and Martin Liebscher's very interesting film shots ), but the results seemed like they could be improved upon. Surely taking the speed of motion into account and getting cleaner results wouldn't be too hard, right? Slit Scanning My Sofa On the night I thought up this "big scanner" concept, I had to give it a shot. It was a bit late to go out and catch a train, so I scanned my sofa instead. I set my phone on my office chair and slowly pushed it along as it captured a video. I then wrote some really slapdash code (which I am choosing not to share here to protect my readers) to grab the leftmost column (a "slit") of each frame and combine them into an image. My comments included lyrics from "Future Me Hates Me" by The Beths , which became something of a self-fulfilling prophecy when I started writing a postprocessor for the next version of the camera loosely based on that code and cursed my decisions. It looks vaguely like my sofa, but it's rather squished and the art on the wall is unintelligible. Surely I can do better. I messed around with the postprocessing and doubled every column, which makes it look less squished, but it's still a mess because I wasn't pushing the chair at a particularly consistent speed. I knew from the start that I'd need to measure the speed somehow, but I was naïvely hoping that I wouldn't need to measure it that well and could simply fudge it. This image, however, shows that even small variations of speed matter. This was my first glimpse into how much of a pain dealing with speed would turn out to be. For my next trick, I took a ride on the MBTA orange line. I taped my old phone to the seat to use its accelerometer and held my current phone to the window, making sure to turn the frame rate up all the way to 60 fps. The accelerometer data wasn't very useful and was even less so when I took an integral to get velocity. If I remember correctly, y was the axis of the train's movement, but the data is so noisy that the train was apparently moving backwards at the end. The result looks interesting, though, but I definitely need more lines if I want a properly intelligible image. While I was getting ready for EMFcamp, I noticed another talk on the schedule by Tim Jacobs (better known online as mitxela ) that was also about slit scan cameras and started to worry we'd both done the same thing. (He ran up to me after my talk to tell me he'd also worried this.) His talk started in the same way, with taking a slit from a video, but he ended up making really cool and trippy animations by going through every possible slit position for a given video. Industrial Linear Camera My source for more lines per second ended up being the Basler ruL2048-19gm , designed to be pointed at fast-moving conveyor belts. The oddly-capitalized name comes from its ability to read out its 1x2048 pixel image sensor just shy of 19,000 times per second. These capabilities come at a price, however; brand new, the manufacturer's lowest-spec current models go for around US$700. Thankfully for my wallet, I found mine on ebay for a tenth of that. The price is also measured in light. since it's capturing so quickly (the slowest exposure time is 1/100s), it needs a lot of light. I can only shoot in the daytime, and all but the brightest stations and tunnels are off limits to me. To my surprise, having dealt with vendorware before, Basler just let me download the SDK without a support contract or proof of purchase. The most recent version also still supports this camera from 2013, which is less surprising but is still convenient. The camera communicates with the computer over a gigabit ethernet link and the software finds it automatically as long as the relevant interface is set up for APIPA addresses (169.254.0.0/16). I could set static addresses for both ends, but I'm only using one camera at a time, so I haven't been bothered to change it. With surprisingly little swearing at the SDK, apart from some complaints about their use of shutter time rather than shutter speed and what a "frame" is on this camera, I put together a program that grabbed buffers of pixels and wrote them to disk. This was my first image out of the camera using my own code, and I think it looks pretty good for just moving it freehand. The setup and mechanical design In order to take it on a train without needing to have three hands to hold it, I needed a way to mount it to a tripod. I ended up designing a rather utilitarian case with a heat-set insert in the bottom that my friend Brooke 3D-printed for me. Buying the parts for it gave me an excuse to finally make an order from McMaster-Carr and feel like a real engineer. My first attempt didn't come out because it turns out there's these things called "manufacturing tolerances" that I completely forgot about. Oops, that's a bit too small. In retrospect, I probably should've stuck the sensors on with something other than blue painters' tape, but it's held on pretty well. Going clockwise around it, the boards are: 6 degree of freedom accelerometer/gyro , which can be used with some maths to to get the speed GPS , which didn't end up working as well as I'd hoped because the trains in Boston are a bit too good at blocking GPS signals SAMD21 microcontroll