1 poin oleh GN⁺ 2025-08-24 | 1 komentar | Bagikan ke WhatsApp
  • Kamera line scan sangat cocok untuk memotret objek bergerak seperti kereta dalam resolusi tinggi tanpa distorsi
  • Pemrosesan gambar memerlukan berbagai algoritme dan teknik seperti deteksi region of interest, estimasi kecepatan, dan resampling
  • Peningkatan kualitas seperti penghapusan garis horizontal dan vertikal serta penekanan noise sangat penting
  • Implementasinya mencakup pemrosesan data berukuran besar, pemanfaatan Python, numpy, dan berbagai penyempurnaan eksperimental
  • Wawasan tambahan bisa diperoleh dengan membandingkannya dengan contoh foto line scan dari fotografer lain

Gambaran Umum Kamera Line Scan

  • Kamera line scan memindai gambar satu baris (atau dua baris) piksel dengan kecepatan sangat tinggi
  • Kamera dipasang tetap, dan seluruh bentuk kereta direkam saat kereta melintas di depan kamera
  • Latar belakang yang statis berulang di semua kolom vertikal gambar sehingga muncul efek garis khas
  • Metode ini memungkinkan pengambilan foto resolusi tinggi tanpa distorsi di sepanjang seluruh panjang kereta, sehingga juga berguna untuk hobi seperti pemodelan kereta
  • Kamera strip berbasis film juga bekerja dengan prinsip serupa, tetapi berbeda karena kecepatan film harus disesuaikan secara manual akibat masalah sensitivitas

Perangkat Kamera

  • Menggunakan model [Alkeria Necta N4K2-7C], yang dilengkapi sensor gambar Bayer array ganda 4096×2
  • Data mentah disimpan sebagai array biner 16-bit
  • Pemotretan dilakukan di berbagai lingkungan, termasuk metro perkotaan

Deteksi Region of Interest (ROI)

  • Karena pemindaian berdurasi panjang menghasilkan banyak data latar belakang, algoritme deteksi otomatis area objek bergerak sangat penting
  • Struktur vertikal (gerakan) dan struktur horizontal (latar belakang) dibedakan dengan menggabungkan fungsi energi (berbasis gradien) dan nilai piksel maksimum
  • Gambar dibagi menjadi beberapa chunk, lalu skor dihitung menggunakan energi persentil ke-99 dari tiap chunk
  • Chunk dengan skor setidaknya 1,5 kali lebih tinggi daripada nilai minimum dianggap sebagai area yang mengandung objek bergerak
  • Metode sebelumnya gagal melakukan generalisasi, sedangkan metode saat ini bekerja lebih efisien dalam berbagai situasi

Estimasi Kecepatan

  • Saat subjek bergerak, kegagalan estimasi kecepatan menyebabkan distorsi berupa gambar yang meregang atau terkompresi
  • Kecepatan gerak tiap chunk dihitung dengan membandingkan dua kanal hijau (Green) pada kamera
  • Untuk tiap chunk, diterapkan pergeseran kecil dari -7 hingga +7 lalu dihitung nilai absolut selisih kedua kanal untuk membentuk cost array
  • Untuk menemukan puncak subpiksel, digunakan interpolasi bergaya [mean shift] berbasis Gaussian, lalu spline dipakai untuk mengoreksi perubahan total
  • Nilai spline yang diekstrak merepresentasikan interval sampel dalam deret waktu asli, dan digunakan untuk mengoreksi distorsi gambar

Resampling

  • Posisi sampel dihitung berdasarkan spline untuk mengekstrak gambar baru
  • Kondisi pengecualian turut dipertimbangkan, misalnya pembalikan kiri-kanan saat spline bernilai negatif, atau penanganan error saat nilainya mendekati 0
  • Untuk setiap posisi sampel, informasi lebar sampel juga disimpan, dan fungsi windowing yang sesuai seperti jendela Hann digunakan untuk meningkatkan performa anti-aliasing
  • Pemilihan kolom sederhana atau jendela persegi tidak cocok karena menimbulkan artefak kasar saat upsampling

Demosaicking

  • Diperlukan demosaicking kustom seperti bilinear interpolation yang mempertimbangkan offset spasial dari Bayer array dua kolom
  • Setelah estimasi kecepatan, interpolasi linear digunakan untuk mengoreksi fenomena seperti fringing
  • Karena perbedaan data antara dua kanal hijau, ada kemungkinan pemulihan full-color yang lebih baik dibanding Bayer array biasa

Penghapusan Garis Vertikal

  • Clock jitter (stripes) dan perubahan kecerahan subjek menyebabkan munculnya garis vertikal pada gambar
  • Garis dikoreksi menggunakan fungsi koreksi per kolom dengan regresi linear dan bobot Gaussian (iteratively reweighted least squares)
  • Fungsi-fungsi koreksi ini membentuk struktur grup matematis, sehingga solusi sistem linear band-diagonal dipertimbangkan untuk mencegah drift saat koreksi terakumulasi
  • Dalam praktiknya, noise frekuensi tinggi juga bisa ditekan dengan filter exponential smoothing
  • Koreksi garis harus dilakukan sebelum estimasi kecepatan

Penekanan Noise

  • Diterapkan teknik kontrol noise berbasis patch (block matching) dengan memanfaatkan secara aktif tekstur berulang pada permukaan kereta
  • Vektor fitur dari patch piksel 3×3 digunakan, lalu noise dikurangi melalui rata-rata berbobot di antara patch yang mirip
  • Performa meningkat jika dilakukan prapemrosesan sesuai distribusi Poisson (transformasi akar) berdasarkan kekuatan sinyal sebelum perbandingan
  • Teknik total variation denoising yang sudah ada tidak cocok karena kehilangan tekstur terlalu besar
  • Metode ini memiliki keterbatasan berupa komputasi yang berat dan kecepatan yang lambat

Koreksi Kemiringan (Skew)

  • Jika kamera tidak tegak lurus, seluruh gambar akan tampak sedikit miring
  • Deteksi skew sebaiknya dilakukan setelah estimasi kecepatan dan sebelum resampling akhir agar kehilangan informasi dapat diminimalkan
  • Deteksi otomatis berdasarkan struktur vertikal dimungkinkan dengan Hough transform dan metode serupa

Koreksi Warna

  • Saat ini nuansa warna disesuaikan dengan matriks koreksi manual
  • Dalam praktiknya, kualitasnya sudah cukup baik, termasuk untuk skin tone yang natural

Detail Implementasi

  • Seluruh pipeline diimplementasikan dengan Python dan numpy
  • Karena ukuran data sangat besar (4096 baris × ratusan ribu kolom), digunakan pemrosesan bertahap per chunk untuk mengatasi masalah kekurangan memori
  • Karena alokasi memori sekaligus tidak realistis, tiap tahap memproses dan menyimpan sebagian data secara terpisah

Pengalaman Implementasi

  • Pernah mencoba mengadopsi alat AI untuk implementasi kode, tetapi hasilnya terbatas
  • AI sering menghasilkan kode yang tidak efisien, misalnya membuat persoalan linear menjadi kompleksitas waktu kuadratik yang tidak perlu
  • Ada juga masalah memori pada pemrosesan array besar, seperti pembuatan full mask yang tidak perlu
  • Beberapa hal seperti API tertentu, penataan struktur kode, dan visualisasi (Matplotlib) tetap bisa dibuat lebih efisien dengan bantuan AI

Contoh Foto Kereta Line Scan dari Orang Lain

Adam Magyar

  • [Adam Magyar] mengerjakan proyek "Stainless" dan "Urban Flow" dengan kamera line scan hitam-putih buatannya sendiri
  • Ia pernah menghasilkan karya yang sangat bersih bahkan di lingkungan minim cahaya seperti interior metro
  • Pemilihan lokasi pemotretan perlu memperhitungkan flicker pada pencahayaan metro

Blog KR64

  • [kr64.seesaa.net] memuat banyak foto line scan kereta yang beragam dari seluruh Jepang
  • Diduga berbasis kamera slit-scan film, dengan variasi dan kualitas yang sangat tinggi
  • Situs ini sering down karena masalah teknis, dan tidak dapat dihubungi

1 komentar

 
GN⁺ 2025-08-24
Komentar Hacker News
  • Saya juga sangat menyukai ide ini, pernah mencoba memindai pohon terbesar di New England dengan pendekatan serupa menggunakan drone, hasilnya tidak terlalu bagus, tapi saya jadi ingin mencobanya lagi
    Hasil
    Proyek ini merupakan bagian dari kisah ini

  • Saya juga memakai proses yang mirip, tetapi merekam dengan kamera biasa lalu menyambung frame secara manual untuk membuat animasi
    Ciri khas pendekatan ini adalah subjeknya jadi terlihat terfokus secara alami, sementara latarnya berubah menjadi pola abstrak
    Setiap ‘garis’ lebarnya kira-kira 15px
    Contoh1 Contoh2 Contoh3
    Saya merekam timelapse matahari terbenam di cakrawala Tokyo, menerapkan teknik serupa, lalu menggunakan motion tracking agar waktu mengalir dari kiri ke kanan frame
    Di sini setiap garis berukuran 4 piksel, dan animasi aslinya beresolusi 8k
    Video terkait Motion tracking

  • Saya mencari lebih banyak contoh line scan pada kereta lihat di sini

  • Ini mengingatkan saya pada eksperimen awal yang memakai flatbed scanner seperti digital back
    Contoh: tautan

  • Saya penasaran seperti apa hasilnya jika line scan camera dipakai untuk memotret pemandangan bergerak dari mobil atau kereta, saya membayangkan efek paralaks bisa menciptakan distorsi yang menarik

    • Saya punya beberapa foto yang diambil dari kereta —
      Osaka Nankai seri 6000: foto
      Pemandangan Prancis: foto1
      Marseille: foto2
      California: foto3 foto4
      Pohon ungu itu terlihat seperti itu karena kamera sensitif terhadap near-infrared, sejak membeli filter IR cut saya belum sempat memotret dari kereta lagi, beberapa juga mengalami frame drop atau artefak lain
    • Ini persis yang saya penasaran, secara teknis saya ingin tahu apakah mungkin untuk ‘memindai’ seluruh pemandangan selama perjalanan kereta sekitar satu jam
    • Hasilnya jadi blur semua, mirip latar belakang pada foto di artikel ini
      Kalau secepat mobil atau kereta, hasilnya tidak terlihat jelas, harus sangat lambat supaya distorsinya tetap enak dilihat
  • Artikelnya sangat menarik, terutama foto cable car itu sangat mengesankan
    Memilih konten latar belakang seperti apa juga terasa seperti pertimbangan yang menarik

  • Kalau tidak salah, di Olimpiade terakhir Omega memakai kombinasi strip camera di garis finis dengan line display berfrekuensi tinggi
    Di kamera biasa itu terlihat sebagai garis yang berkedip, tetapi pada latar photo finish ada logo Omega
    Sangat halus, tetapi tetap mengesankan bahwa mereka berhasil mewujudkannya

  • Saya suka video tentang kamera photo finish di lintasan pacuan kuda ini, saya membagikannya karena sepertinya orang lain juga akan merasa menarik

  • Dari cara kereta itu berhenti sangat tajam tepat di antara garis-garis warna, terasa ada sensasi kecepatan yang luar biasa

  • Menurut saya denoising terlihat agak tidak alami dan justru menonjolkan artefak yang tersisa, terutama color fringe pada detail
    Saya rasa lebih baik fitur ini dimatikan
    Lalu terkait proses demosaic, saya penasaran apakah dengan mengimplementasikan versi RCD ini bisa didapat resolusi tinggi tanpa artefak

    • Sebenarnya saya juga menonaktifkan denoising secara default, karena setiap pola garis horizontal jadi lebih menonjol dan prosesnya juga menjadi sangat lambat
      Koreksi pola garis vertikal juga tidak selalu bekerja dengan baik, malah kadang justru menciptakan pola tambahan
      Masih banyak pekerjaan yang harus dilakukan
      RCD demosaicing adalah langkah berikutnya, masalah color fringing muncul karena saya memakai interpolasi linear sederhana untuk kanal merah dan biru
      Karena kanal hijau mencakup seluruh gambar, saya sedang memikirkan cara untuk melakukan interpolasi yang lebih baik dengan menjadikan kanal ini sebagai panduan
    • Saya juga merasa hasil yang sudah didenoise tidak terlihat terlalu bagus