# 기차 촬영을 위한 라인 스캔 카메라 이미지 처리

> Clean Markdown view of GeekNews topic #22697. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=22697](https://news.hada.io/topic?id=22697)
- GeekNews Markdown: [https://news.hada.io/topic/22697.md](https://news.hada.io/topic/22697.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-08-24T15:33:06+09:00
- Updated: 2025-08-24T15:33:06+09:00
- Original source: [daniel.lawrence.lu](https://daniel.lawrence.lu/blog/y2025m09d21/)
- Points: 1
- Comments: 1

## Topic Body

- **라인 스캔 카메라**는 기차 등 움직이는 대상을 고해상도로 왜곡 없이 촬영하는 데 매우 적합함
- 이미지 처리에는 **관심 영역 감지**, **속도 추정**, **재샘플링** 등 다양한 알고리듬과 기법이 필요함
- **수평 및 수직 스트라이프 제거**와 **노이즈 억제** 등 품질 개선 작업이 중요함
- 구현에는 대용량 데이터 처리와 **Python, numpy** 활용, 다양한 실험적 개선이 포함됨
- 다른 작가들의 라인 스캔 사진 사례와 비교를 통해 추가적인 통찰을 얻을 수 있음

---

### 라인 스캔 카메라 개요

- 라인 스캔 카메라는 한 줄(혹은 두 줄)의 픽셀로 매우 빠른 속도로 이미지를 스캔함
- 카메라는 고정되어 있으며, 기차가 카메라 앞을 지나가면서 전체 모양이 기록됨
- 정적인 배경은 이미지의 모든 세로 열에 반복되어 **특유의 스트라이프 효과**가 나타남
- 이 방식은 전체 기차 길이에 걸쳐 **왜곡 없는 고해상도 사진** 촬영이 가능하여 기차 모델링 등 취미에도 유용함
- 필름 기반 스트립 카메라 역시 유사 원리로 작동하지만, 감도 문제로 수동으로 필름 속도를 맞춰야 하는 차이점이 존재함

### 카메라 장비

- [Alkeria Necta N4K2-7C] 모델을 사용하며, 4096×2 이중 **Bayer 어레이 이미지 센서**를 탑재함
- 원본 데이터는 16비트 바이너리 배열로 저장함
- 도시 지하철 등 다양한 환경에서 촬영이 진행됨

### 관심 영역(ROI) 감지

- 장시간 스캔 시 배경 데이터가 대량 발생하므로 **움직이는 물체 구간 자동 감지 알고리듬**이 필수임
- 에너지 함수(gradient 기반)와 최대 픽셀값 등을 조합해 수직 구조(움직임)와 수평 구조(배경)를 구분함
- 이미지는 여러 청크로 분할, 각 청크의 99분위 에너지로 점수 산출
- 점수가 최저 대비 1.5배 이상인 청크를 **움직이는 물체 포함 영역**으로 간주함
- 기존 방식들은 일반화에 실패, 현재 방식이 다양한 상황에 더 효율적으로 작동함

### 속도 추정

- 주체가 움직일 때 **속도 추정 실패 시 이미지가 늘어나거나 찌그러지는 왜곡**이 발생함
- 카메라의 두 개의 **초록(Green) 채널**을 비교해 각 청크별 움직임 속도를 계산함
- 청크별로 -7~+7까지 작은 이동을 적용한 후 두 채널의 차이 절대값을 계산해 cost array 생성
- subpixel peak를 찾기 위해 가우시안 기반 [mean shift] 스타일 보간 사용, spline으로 전체 변화량 보정
- 추출된 spline 값은 **원본 타임 시리즈에서의 샘플 간격**을 의미, 이미지 왜곡을 보정하는 데 사용됨

### 재샘플링

- spline에 따라 샘플 위치를 계산해 새로운 이미지 추출
- spline이 음수인 경우 좌우 반전, 0에 가까우면 에러 처리 등 예외 상황 고려
- 각 샘플 위치마다 샘플 폭 정보도 저장, Hann 윈도 등 **적절한 윈도잉 함수**로 앤티앨리어싱 성능 향상
- 단순 열 선택이나 사각형 윈도는 업샘플링시 거친 아티팩트가 생기므로 적합하지 않음

### 디모자이킹

- 2열 Bayer 배열의 공간적 오프셋을 고려한 **bilinear interpolation** 등 커스텀 디모자이킹 필요
- 속도 추정 후, 선형 보간을 통해 fringing 현상 등 보정
- 두 초록 채널 데이터 차이로 인해 일반 Bayer 어레이보다 더 나은 풀컬러 복원이 가능할 여지도 있음

### 수직 스트라이프 제거

- **클럭 지터(stripes), 피사체 밝기 변화**로 인해 이미지에 수직 스트라이프 발생
- 선형 회귀와 가우시안 가중치를 활용한 **각 열별 보정 함수**(iteratively reweighted least squares)로 스트라이프 보정
- 이런 보정 함수들은 수학적 군 구조를 형성, 보정 누적시 드리프트 방지 위해 band-diagonal 선형 시스템 해법 고려
- 실무에선 **지수 평활 필터** 등으로 고주파 노이즈 억제도 가능
- 스트라이프 보정은 반드시 속도 추정 이전에 시행해야 함

### 노이즈 억제

- **패치 기반(block matching) 노이즈 제어 기법** 적용, 기차 표면의 반복적 질감을 적극 활용
- 각 3×3 픽셀 패치의 특징벡터를 사용, 유사 패치 내에서 가중평균을 통해 노이즈 감소
- 신호 강도에 따라 포아송 분포(루트 변환)로 사전처리 후 비교하면 성능 향상
- 기존 total variation denoising 기법은 질감 손실이 심해 적합하지 않음
- 본 기법은 연산량이 많고 속도가 느린 한계가 있음

### 기울기(Skew) 보정

- 카메라가 수직이 아닐 경우 **이미지 전체가 약간 삐뚤어지는 현상** 발생
- 스큐 검출은 속도 추정 이후, 최종적인 재샘플링 전에 시행해야 정보 손실 최소화 가능
- Hough 변환 등으로 수직 구조에 기반한 자동 검출 가능

### 색상 보정

- 현재 **수동 보정 행렬**로 색감을 맞춤
- 실제로는 자연스러운 스킨톤 등 꽤 괜찮은 품질

### 구현 세부사항

- 전체 파이프라인은 **Python 및 numpy**로 구현
- 데이터 크기가 커서(4096행×수십만 열) 메모리 부족 문제 극복을 위해 **청크 단위 단계별 처리** 방식 채택
- 일괄 메모리 할당이 무리이므로, 각 단계별로 데이터 부분처리 및 저장

#### 구현 경험

- AI 도구를 도입해 코드 구현 시도, 결과는 제한적
- AI가 선형 문제를 **불필요하게 2차시간 복잡도**로 만드는 등 비효율적 코드를 생성하는 경우 빈발
- 대용량 배열 처리에서 **불필요한 전체 마스크 생성** 등 메모리 이슈
- 일부 API나 코드 구조화, 시각화(Matplotlib) 등은 AI 도움으로 효율화 가능

### 타인의 라인 스캔 기차 사진 사례

#### Adam Magyar

- [Adam Magyar]는 독자적인 블랙 앤 화이트 라인 스캔 카메라로 "Stainless", "Urban Flow" 프로젝트 진행
- **실내 지하철 등 저조도 환경**에서도 매우 깨끗한 결과물을 촬영한 바 있음
- 지하철 조명의 플리커를 피해 촬영 위치 선정 필요

#### KR64 블로그

- [kr64.seesaa.net]에는 **일본 전역의 다양한 기차 라인 스캔 사진** 대량 게재
- 필름 슬릿 스캔 카메라 기반으로 추정, 매우 높은 다양성과 품질 보유
- 사이트는 기술적 문제로 종종 다운, 컨택 불가

## Comments



### Comment 42841

- Author: neo
- Created: 2025-08-24T15:33:07+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=44996938) 
* 나도 이 아이디어가 정말 마음에 듦, 비슷한 방식으로 드론을 이용해서 뉴잉글랜드에서 가장 큰 나무를 스캔해보려고 했음, 결과물이 아주 좋진 않았지만, 다시 시도해볼까 함  
[결과물](https://www.daviddegner.com/wp-content/uploads/2023/09/Tree-scaled.jpg)  
이 프로젝트는 [이 이야기](https://www.daviddegner.com/photography/discovering-old-growth-forests-in-new-england/)의 일부였음

* 나도 비슷한 과정을 쓰지만 일반 카메라로 촬영해서 프레임을 수동으로 이어붙여 애니메이션을 만듦  
이 방식의 특징은 피사체에 자연스레 초점을 맞추게 되며, 배경은 추상적인 패턴으로 변환됨을 볼 수 있음  
각 ‘라인’은 대략 15px 너비임  
[예시1](https://youtube.com/shorts/VQuI1wW8hAw) [예시2](https://youtube.com/shorts/vE6kLolf57w) [예시3](https://youtube.com/shorts/QxvFyasQYAY)  
도쿄 스카이라인의 일몰 타임랩스를 촬영해 유사한 기법을 적용한 후, 모션 트래킹으로 시간이 프레임의 왼쪽에서 오른쪽으로 흐르도록 함  
여기서는 각 줄이 4픽셀이고, 원본 애니메이션은 8k 해상도임  
[관련 영상](https://youtu.be/wTma28gwSk0) [모션 트래킹](https://youtu.be/v5HLX5wFEGk)

* 라인 스캔 트레인 예시를 더 찾아봄 [여기에서 확인](https://news.ycombinator.com/item?id=35738987)

* 플랫베드 스캐너를 디지털 백처럼 썼던 초기 실험을 떠올리게 함  
예시: [링크](https://www.sentex.net/~mwandel/tech/scanner.html)

* 라인 스캔 카메라로 자동차나 기차의 움직이는 풍경을 찍으면 어떻게 나오는지 궁금함, 패럴랙스 효과로 흥미로운 왜곡이 생길 수도 있을 거라 예상함
  * 기차에서 찍은 사진이 몇 장 있음 —  
  오사카 난카이 6000 시리즈: [사진](https://i.dllu.net/nankai_19b8df3e827215a2.jpg)  
  프랑스 풍경: [사진1](https://i.dllu.net/preview_l_b01915cc69f35644.png)  
  마르세유: [사진2](https://i.dllu.net/preview_raw_7292be4e58de5cd0.png)  
  캘리포니아: [사진3](https://i.dllu.net/preview_raw_d5ec50534991d1a4.png) [사진4](https://i.dllu.net/preview_raw_e06b551444359536.png)  
  보라색 나무는 카메라가 근적외선에 민감해서 이렇게 보이는 것임, IR 컷 필터를 산 이후로는 기차사진을 못 찍어봄, 일부는 프레임 드랍이나 다른 아티팩트도 있음
  * 딱 궁금했던 내용임, 기술적으로 한 시간 정도 기차여행 전체 풍경을 ‘스캔’하는 것이 가능할지 궁금함
  * 그냥 다 흐려짐, 이 글 본문의 사진 속 배경과 비슷한 느낌임  
  차나 기차처럼 빠르면 제대로 보이지 않음, 아주 느린 속도여야 괜찮은 왜곡이 나옴

* 아티클 정말 흥미로움, 특히 [케이블카 사진](https://upload.wikimedia.org/wikipedia/commons/e/e0/Strip_photo_of_San_Francisco_Cable_Car_10.jpg)이 인상적임  
배경 콘텐츠를 어떻게 골라야 할지도 재미있는 고민거리임

* 내가 기억하기로 지난 올림픽 때 Omega가 결승선 스트립 카메라에 고주파수 라인 디스플레이를 조합해 썼음  
일반 카메라에는 깜박이는 라인으로 보였는데, 포토피니시 배경에는 Omega 로고가 있었음  
아주 미묘하지만, 이런 걸 구현해낸 게 인상적임

* 경마 트랙의 포토 피니시 카메라에 관한 이 [영상](https://www.youtube.com/watch?v=Ut0nKdLCAEo)이 좋아서 소개함, 다른 분들도 재미있게 볼 수 있을 것 같음

* 기차가 완벽하게 색의 줄 사이에 날카롭게 멈춰 있는 모습에서 엄청난 속도감이 느껴짐

* 내 생각에 노이즈제거(denoising)는 다소 부자연스럽게 보이고 남아있는 아티팩트, 특히 디테일 부분의 컬러 프린지(fringe)를 더 강조하는 느낌임  
나는 이 기능을 끄는 편이 더 나을 것 같음  
그리고 demosaic 과정과 관련해서, RCD의 [이 버전](https://github.com/LuisSR/RCD-Demosaicing)을 구현해보면 아티팩트 없는 고해상도를 얻을 수 있을지 궁금함
  * 실제로 나도 기본적으로 노이즈제거를 비활성화시킴, 각각의 가로 줄 무늬가 더 뚜렷해지고 속도도 매우 느려지기 때문임  
  세로 줄 무늬 보정도 모든 경우엔 잘 동작하지 않고, 오히려 무늬를 더 만들어내기도 함  
  해야 할 작업이 아직 많음  
  RCD demosaicing은 바로 다음 단계임, 컬러 프린징 문제는 레드와 블루 채널에 대해 단순 선형 보간을 썼기 때문임  
  그린 채널은 이미지 전역을 커버하므로, 이 채널을 가이드로 삼아 보간을 더 잘할 수 있는 방법을 생각함
  * 나도 노이즈제거된 결과가 특별히 좋아보이지 않는 쪽임
